Programar botón de inicio y back Android para cerrar servicio en segundo plano.

Iniciado por rubia28, 18 Noviembre 2021, 12:50 PM

0 Miembros y 1 Visitante están viendo este tema.

rubia28

Buenos días a todos!

Estoy realizando una aplicación a través de Android Studio en la cual he implementado que pueda sonar música de fondo a través de un servicio. A lo largo de toda la aplicación he implementado que mediante una opción del ActionBar o a través del menú principal puedas activar o desactivar esta música. Pero cuando le doy al botón de inicio y el teléfono sale de la aplicación (aun que esta se sigue ejecutando en segundo plano) la música continua sonando... Estoy intentando ver como puedo parar el servicio si el usuario pulsa el botón de Home.. pero por más que he probado los siguientes métodos, no consigo que funcione como me gustaría. ¿Como podría hacer la implementación para que si el usuario pulsa el botón de inicio del telefono y vuelve al menú principal la música deje de sonar?

Los métodos que he probado son estos;

Con este código, consigo que al pulsar el botón de home la música se pare.. pero tambien se para en el momento que toco cualquier botón de la aplicación, aunque no sea el de Home. ¿Habría alguna forma de programarlo de tal forma que solo actuase con el botón de HOME?
Código (java) [Seleccionar]
protected void onUserLeaveHint()
    {
        super.onUserLeaveHint();
        Toast.makeText(this, "You pressed the home button!", Toast.LENGTH_LONG).show();
        Log.i("Home button Pressed!", "Yes");
        stopService(new Intent(MenuPrincipal.this,ServicioMusica.class));
    }


Con este código he conseguido cumplir con cerrar el servicio al pulsar el botón de BACK, pero al pulsar el botón HOME el programa no hace nada.
Código (java) [Seleccionar]
public boolean onKeyDown(int keyCode, KeyEvent event) {
        if(keyCode == KeyEvent.KEYCODE_BACK) {
            Log.d("Test", "Back button pressed!");
        } else if(keyCode == KeyEvent.KEYCODE_HOME) {
            stopService(new Intent(MenuPrincipal.this,ServicioMusica.class));
        } return super.onKeyDown(keyCode, event); }


Mil gracias por vuestra ayuda, saludos!!