Quiero saber la intensidad de la señal de mi torre celular actual en Android. Después de un poco de investigación encontré, que debería usar un PhoneStateListener
que escuchar una actualización para obtener el valor (forma extraña de hacer eso en mi humilde opinión).Detener el oyente después de la primera actualización
Así que quiero obtener la señal tan pronto como la obtenga y detener al oyente después. Este es el código que utilizo:
// object containing the information about the cell
MyGSMCell myGSMCell = new MyGSMCell(cid,lac);
// object listening for the signal strength
new GetGsmSignalStrength(myGSMCell, context);
...
public class GetGsmSignalStrength {
private MyGSMCell callback;
private TelephonyManager telMan;
private MyPhoneStateListener myListener;
public GetGsmSignalStrength(MyGSMCell callback, Context context) {
this.callback = callback;
this.myListener = new MyPhoneStateListener();
this.telMan = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
this.telMan.listen(this.myListener, PhoneStateListener.LISTEN_SIGNAL_STRENGTHS);
}
private class MyPhoneStateListener extends PhoneStateListener
{
public void onSignalStrengthsChanged(SignalStrength signalStrength)
{
// get the strength
super.onSignalStrengthsChanged(signalStrength);
// return it to the MyGSMCell object to set the value
callback.setStrength(signalStrength.getGsmSignalStrength());
}
}
}
me gustaría dejar al oyente en cuanto me mando un setStrength(value)
Alguna idea?
Gracias
funciona bien, gracias –