Pregunta

Este es mi locutor

    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);
    }
}

Esta es mi clase personalizada de 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;
        }
    }
}

Y este es mi servicio

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");
        }
}

Mi pregunta es que cada vez que recibo datos en el receptor de transmisión, creo una nueva instancia del TelephonyManager. Entonces, cuando veo el logcat la primera vez que recibo "sonar", la segunda vez "sonando" "sonando", etc. ¿Cuándo debo crear mi TelephonyListener para tener solo una instancia?

Saludos, Nicos

¿Fue útil?

Solución

Está recibiendo una llamada en su receptor (calmado que está escuchando Phonestate) cada vez que cambia el estado del teléfono.

Debe poner un cheque en su receptor e instalar el TelephonyManager Solo por primera vez.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top