¿Cómo obtener la fuerza de la señal del servicio celular en Android?

Estoy tratando de escribir una aplicación Android muy simple que comprueba la intensidad de la señal de la celda actual. Hasta ahora, sólo he encontrado algo llamado getNeighboringCellInfo() , pero no estoy realmente seguro si eso incluye la celda actual.

¿Cómo obtengo la intensidad de la señal CURRENT en Android?

¿ getNeighborCellInfo() obtiene la celda actual? No parece que se basa en los resultados que he podido conseguir con él. Aquí está mi código actual:

 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); 

Crear un PhoneStateListener y manejar la devolución de llamada onSignalStrengthChanged. Cuando la aplicación se inicialice, debería darle una notificación inicial. Esto es en 1.x. En 2.x, hay un problema abierto sobre esto.

Este código puede ayudar:

 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) {} }; 

Una vez que haya creado su propio Listener de estado del teléfono, regístrelo con el Administrador de telefonía utilizando una máscara de bits para indicar los eventos que desea escuchar, como se muestra en el siguiente fragmento de código:

 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); 

Además, es necesario agregarlos a AndroidManifest.xml:

 <uses-permission android:name="android.permission.READ_PHONE_STATE"/> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/> 
  • Android RSSI valor de Bluetooth devuelve -32768 siempre?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.