Rundfunksteuerer Erstellung mehrerer Instanzen von TelephonyManager
-
26-10-2019 - |
Frage
Dies ist mein Sender
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);
}
}
Dies ist meine benutzerdefinierte Phonestatelistener -Klasse
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;
}
}
}
Und das ist mein Service
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");
}
}
Meine Frage ist, dass ich jedes Mal, wenn ich Daten im Broadcast -Empfänger empfange, eine neue Instanz des Telefonsmanagers erstelle. Wenn ich also das Logcat beim ersten Mal "klingeln", das zweite Mal "klingeln" "klingeln" und so weiter. Wann sollte ich meinen Telefonie -Listener erstellen, um nur eine Instanz zu haben?
Grüße, Nicos
Lösung
Sie erhalten Ihren Empfänger jedes Mal, wenn sich der Telefonzustand ändert.
Sie sollten Ihren Empfänger untersuchen und die einleiten TelephonyManager
Nur zum ersten Mal.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow