2012-01-17 4 views
6

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

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

// 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)

Любая идея?

Спасибо

ответ

10

От docs:

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

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

telMan.listen(myListener, PhoneStateListener.LISTEN_NONE); 
+0

работает хорошо, спасибо –

Смежные вопросы