Broadcastreceiver creare più istanze di TelephonyManager
-
26-10-2019 - |
Domanda
Questa è la mia BroadcastReceiver
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);
}
}
Questa è la mia ordinazione Classe 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;
}
}
}
e questo è il mio servizio
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");
}
}
La mia domanda è che ogni volta che riceve dati in broadcast ricevitore creo una nuova istanza del TelephonyManager. Così, quando ho vista la logcat la prima volta che ottengo "Squillo", la seconda volta "suoneria" "suoneria" e così via. Quando devo creare il mio telephonylistener in modo da avere una sola istanza?
Saluti, Nicos
Soluzione
Si stanno ottenendo chiamata sul ricevitore (Asssuming si sta ascoltando per PhoneState) ogni volta che il cambiamento di stato del telefono.
Si dovrebbe mettere un po 'di controllo nel vostro ricevitore e instatiate l'TelephonyManager
solo per la prima volta.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow