¿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?
- ¿Existe una manera de controlar explícitamente los intervalos de análisis WiFi en Android?
- Lectura Bluetooth RSSI para perfil de proximidad BLE en Android
- La aplicación nunca recibe RSSI_CHANGED_ACTION
- Android, lista de valores rssi para las redes wifi más potentes
- ¿Cómo obtener RSSI sin conexión al dispositivo BLE?
¿ 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);
- ¿Cómo mejorar la medición de la distancia Bluetooth mediante RSSI?
- ¿Cómo utilizar LibSVM en Java?
- Android: ¿Por qué los métodos para obtener las intensidades de la señal de la célula vecina mejor que los de la intensidad de señal de la celda actual?
- Diferencia entre getConnectionInfo () y getScanResults () para detectar cambios de intensidad de señal
- Velocidad de análisis WiFi más rápida para obtener cambios rssi android
- Android 2.1: ¿Cómo puedo consultar el valor RSSI de una conexión Bluetooth existente?
- Android IRC Horas de oficina Pregunta Acerca de Android Bluetooth RSSI
- Problema con WifiManager.calculateSignalLevel (RSSI, 5)
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"/>
- Cómo comprobar si mi actividad es la actividad actual que se ejecuta en la pantalla
- Android facebook sdk – Sesión: se intentó reautorizar una sesión que tiene una solicitud pendiente