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

0

Обработчик onServiceStateChanged следит за информацией о телефон- ных услугах. Используйте параметр  ServiceState, чтобы узнать текущее состояние услуги.

Метод getState из объекта ServiceState возвращает  текущее состояние услуги в виде одной из констант:

STATE_IN_SERVICE — телефонные услуги  доступны  в обычном режиме;

STATE_EMERGENCY_ONLY — телефонные услуги доступны, но только для вызова служб экстренной  помощи;

STATE_OUT_OF_SERVICE — в настоящее время телефонная сеть недоступна;

STATE_POWER_OFF — телефонный модуль выключен  (обычно, когда активизирован «режим полета»).

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

В листинге  12.11 показано,  как зарегистрировать обработчик,  чтобы отслеживать изменения состояния телефонных услуг и отображать  уве- домление типа Toast, содержащее название  оператора, который  их предо- ставляет.

Листинг 12.11.

PhoneStateListener serviceStateListener = new PhoneStateListener() {

public void onServiceStateChanged(ServiceState serviceState) {

if (serviceState.getState() == ServiceState.STATE_IN_SERVICE) { String toastText = serviceState.getOperatorAlphaLong(); Toast.makeText(getApplicationContext(), toastText, Toast.LENGTH_

SHORT);

}

}

};

telephonyManager.listen(serviceStateListener, PhoneStateListener.LISTEN_SERVICE_STATE);

Отслеживание подключения к сети для передачи данных

Как и в случае с информацией о звонках и телефонных услугах, с помощью объекта PhoneStateListener вы можете следить за изменениями в состоянии подключения к сети для передачи данных (и за самой передачей).

Для этих целей PhoneStateListener содержит два обработчика событий. Переопределите метод onDataActivity, чтобы следить за передачей данных, и onDataConnectionStateChanged, чтобы узнавать об изменениях в состо- янии подключения к сети, по которой эти данные передаются.

В листинге  12.12 переопределяются оба эти обработчика.  С помощью оператора switch демонстрируются все возможные значения для параметров state и direction, которые передаются при каждом из этих событий.

Листинг 12.12. Отслеживание состояния передачи данных и подключения к сети

PhoneStateListener dataStateListener = new PhoneStateListener() {

public void onDataActivity(int direction) {

switch (direction) {

case TelephonyManager.DATA_ACTIVITY_IN : break; case TelephonyManager.DATA_ACTIVITY_OUT : break; case TelephonyManager.DATA_ACTIVITY_INOUT : break; case TelephonyManager.DATA_ACTIVITY_NONE : break;

}

}

public void onDataConnectionStateChanged(int state) {

switch (state) {

case TelephonyManager.DATA_CONNECTED : break; case TelephonyManager.DATA_CONNECTING : break; case TelephonyManager.DATA_DISCONNECTED : break; case TelephonyManager.DATA_SUSPENDED : break;

}

}

};

telephonyManager.listen(dataStateListener, PhoneStateListener.LISTEN_DATA_ACTIVITY | PhoneStateListener.LISTEN_DATA_CONNECTION_STATE);

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

По теме:

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