Остановить прослушиватель после первого обновления - PullRequest
6 голосов
/ 18 января 2012

Я хочу знать уровень сигнала моей текущей сотовой вышки на Android.После некоторых исследований я обнаружил, что должен использовать PhoneStateListener, который прослушивает обновление, чтобы получить значение (странный способ сделать это ИМХО).

Так что я хочу получить сигнал, как только получуэто и остановит слушателя после.Это код, который я использую:

// 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());
            }
    }
}

Я хотел бы остановить слушателя, как только я отправлю setStrength(value)

Есть идеи?

Спасибо

1 Ответ

10 голосов
/ 18 января 2012

Из документов :

Чтобы отменить регистрацию слушателя, передайте объект слушателя и установите аргумент события в LISTEN_NONE (0).

Итак, добавьте это к вашему слушателю:

telMan.listen(myListener, PhoneStateListener.LISTEN_NONE);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...