Главная » Разработка для Android » Отслеживание информации о сети

0

Сервис  ConnectivityManager  предоставляет высокоуровневый доступ к имеющимся сетевым подключениям. Используя методы getActiveNetworkInfo или getNetworkInfo, как показано  в листинге  13.14, вы можете получить объект NetworkInfo, содержащий  информацию о сетевом подключении, активном в данный момент, или о неактивной сети заданного типа.

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

Листинг 13.14. Получение  доступа к информации о сети

// Получите информацию об активном сетевом подключении. NetworkInfo activeNetwork = connectivity.getActiveNetworkInfo(); int networkType = networkInfo.getType();

switch (networkType) {

case (ConnectivityManager.TYPE_MOBILE) : break; case (ConnectivityManager.TYPE_WIFI) : break; default: break;

}

// Получите информацию о мобильной сети.

int network = ConnectivityManager.TYPE_MOBILE;

NetworkInfo mobileNetwork = connectivity.getNetworkInfo(network);

NetworkInfo.State state = mobileNetwork.getState(); NetworkInfo.DetailedState detailedState = mobileNetwork. getDetailedState();

Поиск и изменение сетевых настроек, управление аппаратными адаптерами

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

Android  будет пытаться  подключиться к предпочтительной сети каждый раз, когда авторизованное приложение запросит доступ к интернет-соединению. Вы можете получить текущее соединение (или установить предпочтительное) с помощью методов getNetworkPreference и setNetworkPreference, как пока- зано в следующем фрагменте  кода:

int networkPreference = connectivity.getNetworkPreference();

connectivity.setNetworkPreference(NetworkPreference.PREFER_WIFI);

Если предпочтительное подключение недоступно или соединение с этой сетью было утрачено, Android автоматически попытается  подключиться ко второстепенной сети.

Вы можете контролировать доступность  сети определенного типа, ис- пользуя  метод setRadio.  С помощью него есть возможность изменять  со- стояние адаптера, привязанного к конкретной  сети (Wi-Fi, мобильной сети и т. д.). Например, в следующем фрагменте кода адаптер для Wi-Fi выключен и вместо него включится адаптер для мобильной  сети:

connectivity.setRadio(NetworkType.WIFI, false);

connectivity.setRadio(NetworkType.MOBILE, true);

Отслеживание состояния сетевого соединения

Одной из наиболее полезных функций сервиса ConnectivityManager —

уведомление  приложений об изменениях в сетевых подключениях.

Чтобы отслеживать состояние подключения к сети, создайте собствен- ную реализацию класса BroadcastReceiver, которая должна принимать На- мерения с действием ConnectivityManager.CONNECTIVITY_ACTION. Эти Намерения содержат несколько дополнительных параметров, предоставляю- щих расширенную  информацию об изменениях соединения.  Вы можете получить  доступ к каждому  из них, используя статические  константы  из класса ConnectivityManager.

EXTRA_IS_FAILOVER. Возвращает true,  если текущее соединение выбрано  в результате  возникновения проблем  с предпочтительной сетью.

EXTRA_NO_CONNECTIVITY.  Возвращает true,  если устройство не подключено ни к какой сети.

EXTRA_REASON. Если соответствующее Намерение свидетельствует о разрыве связи, в этом строковом значении  будет содержаться опи- сание того, почему попытка подключения не удалась.

EXTRA_NETWORK_INFO.  Возвращает объект NetworkInfo, со- держащий  более подробные  данные  о сети, связанной с текущим событием.

EXTRA_OTHER_NETWORK_INFO. После отключения от сети это значение  вернет объект NetworkInfo, содержащий  информацию для возможного резервного соединения.

EXTRA_EXTRA_INFO. Несет дополнительные, специфичные для конкретного типа сети данные о соединении.

Источник: Майер P. Android 2 : программирование приложений для планшетных компьютеров и смартфонов : [пер. с англ. ] / Рето Майер. — М. : Эксмо, 2011. — 672 с. — (Мировой компьютерный бестселлер).

По теме:

  • Комментарии