Что такое открытая сеть андроид

Android для чайников №8. Все, что нужно знать о Wi-Fi

Павел Крижепольский

Как подключить Android смартфон к новой Wi-Fi сети? Как настроить работу Wi-Fi в спящем режиме? Можно ли использоваться смартфон в качестве точки доступа? Ответы на все эти вопросы ждут вас под катом.

Подключение к новой Wi-Fi сети

Прежде всего давайте разберемся с тем, как подключить Android смартфон к новой Wi-Fi сети. Скорее всего, подключение к домашней Wi-Fi сети вы настроили на своем смартфоне во время его первого запуска. Однако, подключение к Wi-Fi может понадобиться вам не только дома, но и на работе, институте или кафе.

Ничего сложно в подключении к Wi-Fi сети нет. Достаточно просто зайти в настройки телефона, а затем перейти в раздел «Wi-Fi».

Вам откроется список доступных Wi-Fi сетей. Замочек рядом с иконкой Wi-Fi показывает, что сеть защищена паролем. Соответственно, при попытке подключения к такой сети смартфон запросит пароль.

По умолчанию большинство Android устройств настроено таким образом, что подключение к известной сети происходит автоматически. Иными словами, если вы хотя бы один раз подключили смартфон к какой-то Wi-Fi сети, то как только вы вновь попадете в радиус ее действия, смартфон подключиться к ней самостоятельно. В большинстве случаев это удобно. Но иногда бывают ситуации, когда повторное подключение к конкретной сети нежелательно. В этом случае необходимо сделать долгий тап (нажать и удерживать в течение пары секунд) на названии нужной сети, затем выбрать пункт «Удалить сеть» либо «Забыть сеть». Кроме того, здесь можно исправить настройки сети, если у нее изменился тип шифрования или пароль.

В очень редких случаях нужная вам Wi-Fi сеть может не отображаться в списке доступных. Скорее всего, администратор сети специально сделал ее скрытой, чтобы подключиться к ней могли только те, кто знает ее название. Для подключения к такой сети достаточно нажать на кнопку «Меню», находящуюся в левом верхнем углу экрана, затем выбрать пункт «Добавить сеть».

С помощью этого же меню можно получить доступ к дополнительным настройкам Wi-Fi. Хотя пункты настроек на смартфонах разных производителей могут немного отличаться, основные опции присутствуют на всех аппаратах. Прежде всего это настройка работы Wi-Fi в режиме сна и включение уведомлений о доступных открытых Wi-Fi сетях.

Раздача интернета по Wi-Fi

К сожалению, Wi-Fi есть далеко не везде. И в остальных местах приходится довольствоваться мобильным интернетом. Беда только в том, что такой вид доступа в интернет поддерживают далеко не все устройства.

Что делать, если срочно потребовалось выйти в интернет с ноутбука? Или если захотелось посидеть в интернете с планшета, не имеющего SIM карты и поддерживающего только Wi-Fi? И как поделиться доступом в интернет с другом, чей мобильный оператор не работает в этом районе? Все эти вопросы можно легко решить, настроив имеющийся Android смартфон в качестве Wi-Fi роутера (точки доступа).

Вновь заходим в настройки телефона. Нам нужен пункт «Еще», который находится в разделе «Беспроводные подключения к сети» или «Беспроводные сети», рядом с настройками Wi-Fi.

Название следующего пункта немного отключается в зависимости от модели и производителя телефона. Иногда он называется «Подключение точки доступа», иногда «Общий доступ к мобильному интернету» или «Точка доступа Wi-Fi». Именно здесь можно включить режим точки доступа, а также указать название и пароль для вашей Wi-Fi сети.

Если вы все сделали правильно, то в строке состояния, расположенной в верхней части экрана, должен появится специальный значок. Пример показан на скриншоте выше.

Теперь подключиться к вашему смартфону можно будет точно также, как к домашнему Wi-Fi роутеру.

Источник

Взаимодействие Android-устройств в локальной сети

Предположим, мы пишем игру для Android, которая подразумевает некое сетевое взаимодействие между устройствами. Причем наши устройства находятся в одной сети и мы хотим, чтобы взаимодействие между ними осуществлялось быстро, а значит вариант с обменом данными через интернет нам не подходит. Ах да, еще одна маленькая ложка дегтя — мы хотим охватить максимально возможную аудиторию, для чего нам необходимо поддерживать Android 2.3.
Что же нам делать? Давайте поговорим об этом, а заодно рассмотрим относительно новые возможности Android SDK для соединения двух и более устройств.

Читайте также:  Android one plus one launcher

О чем это и для кого это?

Как-то раз, уйдя с предыдущего места работы и погрузившись в заслуженный отдых, я принялся писать сетевую игру, в которую могут играть люди, находящиеся в одной локальной сети. И сразу же столкнулся с тем, что для нормального функционирования подобной игры нам мало соорудить сетевое взаимодействие — нам нужно сделать нормальное и быстрое обнаружение устройств в сети. Собственно, в данной статье я поделюсь своим опытом в реализации решения для данной задачи.
Сразу оговорюсь, что статья предназначена в большей мере для тех, кто имеет опыт Android-разработки, написал несколько приложений и хочет расширить свой кругозор, а также улучшить профессиональные навыки.

Какие возможные способы решения существуют?

  1. Android Network Service Discovery. Простой и эффективный способ обнаружения устройств. На Android Developer есть пошаговое руководство по подключению NSD, есть пример NsdChat, который можно скачать там же. Но есть один существенный минус — данный метод поддерживается только начиная с API Level 16, то есть с Android 4.1 Jelly Bean;
  2. Второе решение, предлагаемое нам на сайте Android Developer — Wi-Fi Peer-to-Peer. Проблема этого метода та же самая — поддерживается он только начиная с API Level 16;
  3. Есть странное решение, которое предлагается некоторыми программистами на Stack Overflow — самостоятельно сканировать локальную сеть на предмет наличия сервера. То есть проходить по всем адресам сети. Это уже сейчас звучит как странный велосипед, а теперь представьте, что порт нашего сервера назначается автоматически. Таким образом, сканирование даже самую небольшой сети становится достаточно долгой и трудоемкой задачей;
  4. Наконец, мы можем обратить внимание на Java-библиотеки и написать что-нибудь с их использованием. Например, JmDNS.

Последний способ выглядит вполне адекватным и, кажется, может обеспечить нас требуемой скоростью и удобством обнаружения устройств в сети для конечного пользователя.

Я вооружился JmDNS и решил попробовать соорудить несколько классов, которые по максимуму упростят написание описанных выше приложений. Но для начала пришлось немного повырезать дубликаты .class-файлов из jar-пакета JmDNS (проблема описана здесь):

Далее я взял исходный код NsdChat с Android Developer и изменил его служебный класс, который отвечает за инициализацию сокетов и организацию сетевого взаимодействия. Также я написал wrapper для JmDNS

Здесь размещены 4 основные функции для работы Network Discovery:

  1. startServer для создания сервера и регистрации соответствующего сервиса в локальной сети;
  2. findServers для поиска серверов;
  3. reset для окончания работы с Network Discovery и последующего освобождения ресурсов;
  4. wifiLock для запроса блокировки Wi-Fi.

В завершении я написал универсальный класс ConnectionWrapper для полноценной организации обнаружения, а также обмена сообщениями в локальной сети. Таким образом, создание сервера в конечном приложении выглядит следующим образом:

А вот и mServerHandler, использующийся для приема и обработки сообщений:

Отправка сообщений еще проще:

И, наконец, метод для обнаружения и подключения к серверу:

Как видите, все очень просто. А главное, все это работает в любой версии Android для максимум двух устройств. Но сделать так, чтобы это работало для условно неограниченного числа устройств очень легко, и очевидное решение придет к вам почти сразу после детального изучения класса Connection. Пусть это будет в качестве домашнего задания.
Ах, да, весь код доступен для изучения и использования всеми желающими в моем репозитории на GitHub.. И, конечно, не исключаю то, что некоторые вещи можно сделать лучше и проще, поэтому не стесняйтесь форкать и делать pull request’ы.

Источник

Как подключиться к открытым сетям на Android?

Android – на сегодняшний день самая популярная операционная система для планшетов, смартфонов, нетбуков и т.д. Ежедневно по всему миру тысячи людей приобретают устройства на Android. В принципе разобраться в интерфейсе операционной системы не так уж и сложно. Достаточно один раз уделить немного времени на это.

Читайте также:  Как вызвать настройки андроида при включении

При этом начинающие пользователи часто сталкиваются задаются вопросом как подключиться к открытым сетям на Android, ведь в наше время куда ни глянь почти везде есть бесплатный Wi-Fi. Чтобы подключиться к открытым сетям на андроид нужно открыть:
Настройки – Беспроводные подключения и сети – Wi-Fi–Дополнительно.

Здесь нужно установить галочку напротив строки «Уведомления о сети». Таким образом когда ваш смартфон или планшет будет находиться в зоне действия открытой сети, он сообщит вам об этом уведомлением. Конечно, обязательным условием является включенный Wi-Fi. Вот и все.
Для подключения к открытым сетям на Android по Wi-Fi есть специальная программа OsminoWi-Fi.

OsminoWi-Fi – это хороший Wi-Fi менеджер, позволяющий автоматически подключаться к бесплатному Wi-Fi, а также обмениваться информацией об открытых сетях по всему миру. При помощи всего одной кнопки вы сможете найти и подключить Wi-Fi. Интерфейс программы очень прост. Здесь нет никаких сложных настроек и непонятных сложных терминов. К тому же по карте вы всегда сможете увидеть точки Wi-Fi, находящиеся вблизи вас. Кстати, это приложение наверно станет незаменимым в чужом городе или стране для подключения к открытым сетям.

Источник

Работа с сетью в Android: трафик, безопасность и батарейка

На сегодняшний день в Google Play насчитывается более 800 тысяч приложений. Многие из них реализованы на основе клиент-серверного общения. При разработке таких приложений нужно учесть три основных момента, о которых пойдет речь в этой статье.

О чем нужно помнить при реализации сетевой части приложения

Первое – это трафик. Не всегда есть возможность работать по бесплатному Wi-Fi-соединению, а мобильный интернет всё еще дорогой, и об этом нужно помнить, потому что трафик – это деньги пользователя.

Второе – это лимит батарейки. Мобильные устройства необходимы пользователю для каких-то повседневных дел, совещаний, прогулок, бизнеса, и когда батарейка садится в самый неподходящий момент, пользователь негодует.
Третье – это безопасность. Так как все-таки речь идет о мобильных клиентах, и данные гуляют по сети от клиента к серверу и обратно, то их необходимо защищать.

Подходы по реализации сетевого взаимодействия

Для начала вспомним, какие способы реализации клиент-серверного общения существуют и популярны на сегодняшний день.
Первый подход — на основе сокетов (здесь я имею в виду работу непосредственно с Socket API). Он часто используется в приложениях, где важна скорость доставки сообщения, важен порядок доставки сообщений и необходимо держать стабильное соединение с сервером. Такой способ зачастую реализуется в мессенджерах и играх.

Второй подход — это частые опросы (polling): клиент посылает запрос на сервер и говорит ему: «Дай мне свежие данные»; сервер отвечает на запрос клиента и отдает все, что у него накопилось к этому моменту.

Минус такого подхода в том, что клиент не знает, появились ли свежие данные на сервере. По сети лишний раз гоняется трафик, в первую очередь из-за частых установок соединений с сервером.

Третий подход — длинные опросы (long polling) — заключается в том, что клиент посылает «ожидающий» запрос на сервер. Сервер смотрит, есть ли свежие данные для клиента, если их нет, то он держит соединение с клиентом до тех пор, пока эти данные не появятся. Как только данные появились, он «пушит» их обратно клиенту. Клиент, получив данные от сервера, тут же посылает следующий «ожидающий» запрос и т.д.

Реализация этого подхода достаточно сложна на мобильном клиенте в первую очередь из-за нестабильности мобильного соединения. Зато при этом подходе трафика расходуется меньше, чем при обычном polling’e, т.к. сокращается количество установок соединений с сервером.
Механизм long polling, или пуш-уведомлений (push notifications), реализован в самой платформе Android. И, наверное, для большинства задач будет лучше использовать его, а не реализовывать самим. Ваше приложение подписывается у сервиса Google Cloud Messaging (GCM) на получение пуш-уведомлений.

Тем самым разрывается связь непосредственно между сервером и клиентом за счет того, что сервер работает с сервисом GCM и отправляет свежие данные всегда на этот сервис, а он уже в свою очередь реализует всю логику доставки этих данных до вашего приложения. Плюсы этого подхода в том, что устраняется необходимость частых установок соединения с сервером за счет того, что вы точно знаете, что данные появились, и об этом вас оповещает сервис GCM.
Из этих четырех подходов наиболее популярными при разработке бизнес-приложений являются пуш-уведомления и частые опросы. При реализации этих подходов нам так или иначе придется устанавливать соединение с сервером и передавать данные. Далее речь пойдет об инструментах, которые есть в наличии у разработчика для работы по HTTP/HTTPS-протоколам.

Читайте также:  Андроид сони xperia xz2

HttpUrlConnection и HttpClient

В арсенале Android-разработчика есть два класса для работы по этим протоколам. Первый – это java.net.HttpURLConnection, второй – org.apache.http.client.HttpClient. Обе эти библиотеки включены в Android SDK. Далее будут подробно рассмотрены основные моменты, которые будут влиять на трафик, батарею и безопасность при работе с каждой из этих библиотек.

С HttpURLConnection все просто. Один класс и все. Это объясняется тем, что родительский класс URLConnection был спроектирован для работы не только по HTTP-протоколу, а еще по таким, как file, mailto, ftp и т.п.

HttpClient спроектирован более объектно-ориентированно. В нем есть четкое разделение абстракций. В самом простом случае мы будем работать с пятью разными интерфейсами: HttpRequest, HttpResponse, HttpEntity и HttpContext. Поэтому апачевский клиент намного тяжеловеснее HttpUrlConnection.

Как правило, на все приложение существует всего один экземпляр класса HttpClient. Это обусловлено его тяжеловесностью. Использование отдельного экземпляра на каждый запрос будет расточительным. Мы можем, к примеру, хранить экземпляр HTTP-клиента в наследнике класса Application.

В случае HttpUrlConnection следует создавать на каждый запрос новый экземпляр клиента.

Из чего складывается трафик?

Во время работы нашего приложения картинка будет примерно такая.

Количество и частота запросов будет зависеть от функционала и насыщенности UI – интерфейса приложения. Каждый такой запрос устанавливает TCP-соединение с сервером. В данном случае трафик, который будет потрачен, будет равняться сумме установок соединений и сумме переданных данных. Понизить расход трафика в данном случае можно за счет использования долгоживущего соединения (keep alive).

Основная идея keep alive-соединения заключается в использовании одного и то же TCP-соединения для отправки и приема HTTP-запросов. Главные преимущества — снижение трафика и времени выполнения запроса. Мной был проделан простенький тест, который заключался в том, что выполнялось последовательно 10 запросов на один и тот же хост. Данные представлены в таблице ниже. При выключенном keep alive видно, что среднее время выполнения запроса составляло примерно две секунды. В случае с включенным keep alive это время снизилось до 1,7 секунды, что на 16% быстрее. Это обуславливается в первую очередь тем, что устраняется необходимость частой установки соединения с сервером. При использовании защищенного HTTPS-соединения разница была бы заметнее, т.к. процедура SSL Handshake гораздо тяжелее процедуры TCP Handshake.

Важным параметром keep alive-cоединения является keep alive duration. Он означает временной интервал. Если приходит несколько HTTP-запросов в пределах этого интервала, то будет переиспользоваться уже установленное TCP-соединение.

Из рисунка видно, что время между четвертым и третьим запросом превысило keep alive duration, поэтому создается новое TCP-соединение с сервером.
Давайте посмотрим, как можно настроить вышеописанный параметр. В случае HttpClient все хорошо, в нашем распоряжении есть интерфейс ConnectionKeepAliveStrategy. Переопределив метод getKeepAliveDuration, мы можем вернуть нужное значение параметра keep alive duration.

Работая с HttpUrlConnection, нужно помнить о баге в платформе Android 2.2 и отключать keep alive на платформах = 4.0.3 (API Level 15) должна стоять точка в начале домена

  • После вызова метода sync() у CookieSyncManager кука проставится только в WebView внутри вашего приложения, а в браузере — нет. Это ограничение накладывает система Android в целях безопасности
  • Защищенное соединение (HTTPS)

    В завершение данной статьи я рассмотрю, как включить HTTPS в Android. Насколько мне известно, на других мобильных платформах достаточно включить HTTPS-схему, механизм транспорта SSL — и все должно работать. В Android есть некоторые проблемы, которые следует учитывать и решать. Для начала вспомним, как устанавливается защищенное соединение. На проблемное место указывает красная стрелка – это проверка подлинности сертификата.

    Источник

    Оцените статью