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

War es hilfreich?

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
scroll top