Broadcastreceiver Создание нескольких экземпляров TelephonyManager
-
26-10-2019 - |
Вопрос
Это мой вещатель
public class PlayAudio extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
tm.listen(new CustomPhoneStateListener(context), PhoneStateListener.LISTEN_CALL_STATE);
}
}
Это мой пользовательский класс PhonestateListener
public class CustomPhoneStateListener extends PhoneStateListener {
Context context;
public CustomPhoneStateListener(Context context) {
super();
this.context = context;
}
@Override
public void onCallStateChanged(int state, String incomingNumber) {
super.onCallStateChanged(state, incomingNumber);
switch (state) {
case TelephonyManager.CALL_STATE_IDLE:
Log.d("PHONEA", "IDLE");
break;
case TelephonyManager.CALL_STATE_OFFHOOK:
Log.d("PHONEA", "OFFHOOK");
break;
case TelephonyManager.CALL_STATE_RINGING:
Log.d("PHONEA", "RINGING");
Intent intent = new Intent(this.context, AudioService.class);
context.startService(intent);
break;
default:
break;
}
}
}
И это моя услуга
public class AudioService extends Service{
private static final String TAG = "PHONEA";
MediaPlayer player;
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public void onCreate() {
Log.d(TAG, "onCreate -> TODO");
}
}
Мой вопрос заключается в том, что каждый раз, когда я получаю данные в вещательном приемнике, я создаю новый экземпляр The TelephonyManager. Поэтому, когда я смотрю Logcat в первый раз, когда я звоню, во второй раз, когда звонит «звон» и так далее. Когда я должен создать свой телефонный список, чтобы иметь только один экземпляр?
С уважением, Никос
Решение
Вы получаете звонок на вашем приемнике (Assum, вы прислушитесь к пронзированию) каждый раз, когда состояние телефона меняется.
Вы должны поместить некоторую проверку в вашем приемнике и установить TelephonyManager
только впервые.
Не связан с StackOverflow