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.
- Cómo averiguar qué SIM recibió SMS en Dual SIM Android Device
- ¿Cómo saber si estoy en una llamada en Android?
- Obtener código de país
- GetNeighboringCellInfo () devuelve la lista null
- GetPsc () utilizando GsmCellLocation siempre devuelve -1
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)
Aquí está el código para la línea 28 (MainActivity)
- Cómo obtener el número actual de la tarjeta SIM en Android?
- No se puede obtener cadena no vacía de PhoneStateListener :: onCallStateChanged
- Ya que Android 6.0 escuchando los cambios de PhoneStateListener.LISTEN_DATA_CONNECTION_STATE parece que ya no necesita permiso de READ_PHONE_STATE
- ¿Cómo puedo enviar un archivo pregrabado (wav) durante una llamada de voz?
- Cómo determinar una llamada realizada es local o STD O ISD
- ¿Cómo puedo comprobar si la tarjeta SIM está disponible en un dispositivo Android?
- GetLine1Number () Devuelve blanco, no nulo
- Android, TelephonyManager, las alegrías de PhoneStateListener y los números entrantes
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
- Línea de archivo XML binario # 39: Error al inflarse clase com.android.internal.widget.ActionBarView
- AndroidAsync Socket.io ArrayIndexOutOfBoundsException