Подтвердить что ты не робот

Как получить силу сигнала сотовой связи в Android?

Я пытаюсь написать очень простое приложение для Android, которое проверяет силу сигнала текущей ячейки. До сих пор я нашел только что-то под названием getNeighboringCellInfo(), но я не уверен, что это включает текущую ячейку.

Как получить уровень сигнала CURRENT в Android?

Получает ли getNeighborCellInfo() текущую ячейку? Это не похоже на то, что я смог получить с ним. Вот мой текущий код:

List<NeighboringCellInfo> n = tm.getNeighboringCellInfo();

//Construct the string
String s = "";
int rss = 0;
int cid = 0;
for (NeighboringCellInfo nci : n)
{
    cid = nci.getCid();
    rss = -113 + 2*nci.getRssi();
    s += "Cell ID: " + Integer.toString(cid) + "     Signal Power (dBm): " + 
            Integer.toString(rss) + "\n";
}

mainText.setText(s);
4b9b3361

Ответ 1

создайте PhoneStateListener и обработайте обратный вызов onSignalStrengthChanged. Когда ваше приложение будет инициализировано, оно должно дать вам начальное уведомление. Это в 1.x. в 2.x есть issue об этом.

Ответ 2

Этот код может помочь:

PhoneStateListener phoneStateListener = new PhoneStateListener() {
public void onCallForwardingIndicatorChanged(boolean cfi) {}
public void onCallStateChanged(int state, String incomingNumber) {}
public void onCellLocationChanged(CellLocation location) {}
public void onDataActivity(int direction) {}
public void onDataConnectionStateChanged(int state) {}
public void onMessageWaitingIndicatorChanged(boolean mwi) {}
public void onServiceStateChanged(ServiceState serviceState) {}
public void onSignalStrengthChanged(int asu) {}
};

Как только вы создали свой собственный прослушиватель состояния телефона, зарегистрируйте его в Диспетчере телефонии с помощью битовой маски, чтобы указать события, которые вы хотите прослушать, как показано в следующем фрагменте кода:

TelephonyManager telephonyManager = (TelephonyManager) this.getSystemService(Context.TELEPHONY_SERVICE);

telephonyManager.listen(phoneStateListener,
PhoneStateListener.LISTEN_CALL_FORWARDING_INDICATOR |
PhoneStateListener.LISTEN_CALL_STATE |
PhoneStateListener.LISTEN_CELL_LOCATION |
PhoneStateListener.LISTEN_DATA_ACTIVITY |
PhoneStateListener.LISTEN_DATA_CONNECTION_STATE |
PhoneStateListener.LISTEN_MESSAGE_WAITING_INDICATOR |
PhoneStateListener.LISTEN_SERVICE_STATE |
PhoneStateListener.LISTEN_SIGNAL_STRENGTH);

Также необходимо добавить их в AndroidManifest.xml:

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