Cómo obtener la fuerza de la señal de android

Acabo de empezar a desarrollar para android y estoy tratando de averiguar cómo obtener una fuerza de la señal de los usuarios. El código siguiente me da el Dbm para una red GSM:

TelephonyManager telephonyManager = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE); // Get GSM Signal Strength (Dbm) CellInfoGsm GSM = (CellInfoGsm)telephonyManager.getAllCellInfo().get(0); CellSignalStrengthGsm cellSignalStrengthGsm = GSM.getCellSignalStrength(); signalStrength = cellSignalStrengthGsm.getDbm(); 

Sin embargo, quiero ser capaz de obtener la fuerza de la señal de cualquier tipo de red. Puede ser GSM, LTE, CDMA o WCDMA. He mirado la documentación de la telefonía pero estoy perdido en cómo ir sobre esto. He intentado tomar el mismo código que arriba y apenas substituyo Gsm con Lte pero eso acabó chocando mi emulador.

Cualquier ayuda sería muy apreciada.

Actualizado y agregado el oyente de la respuesta a continuación. Sin embargo ahora, tan pronto como ejecutar la aplicación se bloquea. Este es el archivo de registro.

 05-26 11:25:21.140: D/AndroidRuntime(921): Shutting down VM 05-26 11:25:21.140: W/dalvikvm(921): threadid=1: thread exiting with uncaught exception (group=0xb3aecba8) 05-26 11:25:21.170: E/AndroidRuntime(921): FATAL EXCEPTION: main 05-26 11:25:21.170: E/AndroidRuntime(921): Process: com.example.androidcellinfo, PID: 921 05-26 11:25:21.170: E/AndroidRuntime(921): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.androidcellinfo/com.example.androidcellinfo.MainActivity}: java.lang.NullPointerException 05-26 11:25:21.170: E/AndroidRuntime(921): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2195) 05-26 11:25:21.170: E/AndroidRuntime(921): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245) 05-26 11:25:21.170: E/AndroidRuntime(921): at android.app.ActivityThread.access$800(ActivityThread.java:135) 05-26 11:25:21.170: E/AndroidRuntime(921): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196) 05-26 11:25:21.170: E/AndroidRuntime(921): at android.os.Handler.dispatchMessage(Handler.java:102) 05-26 11:25:21.170: E/AndroidRuntime(921): at android.os.Looper.loop(Looper.java:136) 05-26 11:25:21.170: E/AndroidRuntime(921): at android.app.ActivityThread.main(ActivityThread.java:5017) 05-26 11:25:21.170: E/AndroidRuntime(921): at java.lang.reflect.Method.invokeNative(Native Method) 05-26 11:25:21.170: E/AndroidRuntime(921): at java.lang.reflect.Method.invoke(Method.java:515) 05-26 11:25:21.170: E/AndroidRuntime(921): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779) 05-26 11:25:21.170: E/AndroidRuntime(921): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595) 05-26 11:25:21.170: E/AndroidRuntime(921): at dalvik.system.NativeStart.main(Native Method) 05-26 11:25:21.170: E/AndroidRuntime(921): Caused by: java.lang.NullPointerException 05-26 11:25:21.170: E/AndroidRuntime(921): at com.example.androidcellinfo.CellInfo.<init>(CellInfo.java:74) 05-26 11:25:21.170: E/AndroidRuntime(921): at com.example.androidcellinfo.MainActivity.onCreate(MainActivity.java:28) 05-26 11:25:21.170: E/AndroidRuntime(921): at android.app.Activity.performCreate(Activity.java:5231) 05-26 11:25:21.170: E/AndroidRuntime(921): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087) 05-26 11:25:21.170: E/AndroidRuntime(921): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2159) 05-26 11:25:21.170: E/AndroidRuntime(921): ... 11 more 05-26 11:25:25.090: I/Process(921): Sending signal. PID: 921 SIG: 9 

Aquí está el código para la línea 74 (CellInfo) Snippet de código 1

Aquí está el código para la línea 28 (MainActivity) Snippet de código 2

Pregunta duplicada
¿Cómo obtener la fuerza de la señal del servicio celular en Android?
Android: ¿Cómo obtengo la fuerza de la señal GSM para todos los operadores de red disponibles
Recuperar la fuerza de la señal GSM en Android


De todos modos, compruebe los enlaces anteriores o estas referencias:

http://developer.android.com/reference/android/telephony/SignalStrength.html

http://www.firstdroid.com/2010/05/12/get-provider-gsm-signal-strength/


Si usted es perezoso para comprobar que, esto parece funcionar (no comprobarlo):

 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) {} //Deprecated //public void onSignalStrengthChanged(int asu) public void onSignalStrengthChanged (SignalStrength signalStrength) { //Do your thing } }; 

Una vez que haya creado su propio PhoneStateListener , regístrelo con el Telephony Manager utilizando una máscara de bits para indicar los eventos que desea escuchar, como se muestra en el siguiente fragmento de código:

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

Cómo obtener una lista de todas las redes disponibles:

Android: ¿Cómo obtengo la fuerza de la señal GSM para todos los operadores de red disponibles

  • Cómo detectar el estado contestado o rechazado en la llamada saliente
  • Llamada de teléfono de Android Handle
  • El identificador de dispositivo Android único después de la advertencia de MarshMallow "no se recomiendan los identificadores de dispositivo"?
  • Cómo encontrar el número saliente en el administrador de telefonía
  • ¿Cómo obtener la ubicación actual y el tiempo de descolgado de la llamada saliente (tiempo de llamada exacto seleccionado)?
  • Cómo desconectar la llamada en android 4.1.2 nexus programmatically
  • ¿Qué información proporciona Baseband en Android?
  • Problemas con getLine1Number () para obtener el número de teléfono de los dispositivos
  • ¿Cómo rastrear los mensajes en Android?
  • Obtener los detalles del último registro de llamadas después de finalizar la llamada utilizando el receptor de difusión
  • Hacer llamada utilizando una tarjeta SIM especificada en un dispositivo de doble tarjeta SIM
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.