J'essaye d'écrire une application très simple Android qui vérifie la force du signal de la cellule actuelle. Jusqu'à présent, je n'ai trouvé que quelque chose qui s'appelle getNeighboringCellInfo()
, mais je suis Je ne sais pas vraiment si cela inclut la cellule actuelle.
Comment obtenir la force du signal cellulaire ACTUEL sous Android?
getNeighborCellInfo()
obtient-il la cellule actuelle? Cela ne semble pas être basé sur les résultats que j'ai pu obtenir. Voici mon code actuel:
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);
créez un PhoneStateListener et gérez le rappel onSignalStrengthChanged. Lorsque votre application est initialisée, elle devrait vous donner une notification initiale. C'est en 1.x. dans 2.x, il y a un problème ouvert à ce sujet.
Ce code peut aider:
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) {}
};
Une fois que vous avez créé votre propre écouteur d'état du téléphone, enregistrez-le auprès de Telephony Manager à l'aide d'un masque binaire pour indiquer les événements que vous souhaitez écouter, comme illustré dans l'extrait de code suivant:
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);
Vous devez également les ajouter à AndroidManifest.xml:
<uses-permission Android:name="Android.permission.READ_PHONE_STATE"/>
<uses-permission Android:name="Android.permission.ACCESS_COARSE_LOCATION"/>