top of page

Тема 7.9. Телефония и коммуникации. Диалоги 

7.9.1. Информация о телефоне

7.9.1.1. Телефон и сотовая сеть

 

Для доступа к данным о телефоне, sim и сотовой сети используется класс TelephonyManager. С помощью этого класса можно определить тип и состояние телефона, доступность сотовой сети и состоянии sim-карты.

1. Экземпляр класса TelephonyManager нельзя создать напрямую, для этого необходимо вызвать метод getSystemService() (из класса Context) и передать ему константу Context.TELEPHONY_SERVICE.

TelephonyManager tm = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);



2. Для некоторых методов класса TelephonyManager в файл манифеста (AndroidManifest.xml) необходимо добавить разрешение READ_PHONE_STATE (получение информации о состоянии телефона) или ACCESS_COARSE_LOCATION (информация о базовой станции сети сотовой связи). Разрешения в файл манифеста добавляются так:

 

<manifest xmlns:android="http://schemas.android.com/apk/res/android"

    android:versionCode="1"

    android:versionName="1.0" >

 

    <uses-permission android:name="android.permission.READ_PHONE_STATE"/>

    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>

 

    <application>

...

    </application>

</manifest>



3. Посмотрим какую информацию мы можем получить:
- int getCallState() - определяет состояние вызова телефона. Возвращает одну из трех констант: CALL_STATE_IDLE (телефон не активен), CALL_STATE_OFFHOOK (попытка вызова), CALL_STATE_RINGING (соединение с абонентом).
- int getPhoneType () - определяет тип мобильного телефона. Возвращает одну из констант PHONE_TYPE_CDMA, PHONE_TYPE_GSM, PHONE_TYPE_NONE, PHONE_TYPE_SIP.
- int getNetworkType () - определяет тип сотовой сети. Возвращает одну из констант NETWORK_TYPE_UNKNOWN, NETWORK_TYPE_GPRS, NETWORK_TYPE_EDGE, NETWORK_TYPE_UMTS, NETWORK_TYPE_CDMA и др.
- String getNetworkCountryIso () - возвращает код страны в которой зарегистрирован оператор.
- String getNetworkOperator () - возвращает код оператор (MCC+MNC) (mobile country code + mobile network code)
- String getNetworkOperatorName () - возвращает имя оператора
- String getDeviceId () - возвращает ID мобильного устройства
- String getDeviceSoftwareVersion () - возвращает версию программного обеспечения (это не версия android)
- int getDataState () - определяет состояние передачи данных. Возвращает одну из констант DATA_DISCONNECTED, DATA_CONNECTING, DATA_CONNECTED, DATA_SUSPENDED.
- int getDataActivity () - определяет направление передачи данных. Возвращает одну из констант DATA_ACTIVITY_NONE, DATA_ACTIVITY_IN, DATA_ACTIVITY_OUT, DATA_ACTIVITY_INOUT, DATA_ACTIVITY_DORMANT.
- boolean isNetworkRoaming () - определяет находится ли телефон в роуминге.
- CellLocation getCellLocation () - определяет текущее положение устройства. Возвращает экземпляр класса CellLocation, а точнее один из его классов-потомков CdmaCellLocation (для сети CDMA) или GsmCellLocation (для сетей GSM). В классе GsmCellLocation можно определить ID базовой станции сотовой сети (int getCid ()) и код территории в которой находится телефон (int getLac ())). В классе CdmaCellLocation можно получить также ID базовой станции (int getBaseStationId()), а также ее географические координаты (int getBaseStationLatitude(), int getBaseStationLongitude()).
- int getSimState() - определяет состояние sim-карты. Возвращает одну из констант SIM_STATE_UNKNOWN, SIM_STATE_ABSENT, SIM_STATE_PIN_REQUIRED, SIM_STATE_PUK_REQUIRED, SIM_STATE_NETWORK_LOCKED, SIM_STATE_READY.
- String getSimCountryIso() - Возвращает код страны провайдера
- String getSimOperator() - Возвращает код оператора (MCC+MNC)
- String getSimOperatorName() - Возвращает имя провайдера
- String getSimSerialNumber() - Возвращает серийный номер sim-карты.
 

7.9..1.2. Дисплей


Для получения информации о дисплее устройства используется класс DisplayMetrics.

  1. DisplayMetrics metrics = new DisplayMetrics();

  2. getWindowManager().getDefaultDisplay().getMetrics(metrics);


В первой строчке определяется экземпляр класса DisplayMetrics, а во второй этот экземпляр инициализируется.
getWindowManager () (из класса Activity) - возвращает оконный менеджер (экземпляр класса WindowManager)
getDefaultDisplay() (из класса WindowManager) - возвращает дисплей, на котором оконный менеджер создает окна (экземпляо класса Display)
getMetrics() (из класса Display) - метод принимающий out-параметр типа DisplayMetrics для получения параметров экрана.
То есть после этих двух строчек мы получаем metrics, который содержит информацию о дисплее.

В классе DisplayMetrics есть следующие открытые поля:
densityDpi - плотность пикселей на экране (dpi)
scaledDensity - фактор масштабирования для шрифтов
heightPixels - высота экрана
widthPixels - ширина экрана
xdpi - точное количество пикселей на дюйм по ширине экрана
ydpi - точное количество пикселей на дюйм по ширине экрана
 

bottom of page