2012-01-25 7 views
6

que tienen un reproductor multimedia que detiene la reproducción cuando el usuario cierra la aplicación, ya sea presionando el botón de inicio, utilizando el botón de retroceso o simplemente abrir otra aplicación. Para obtener este comportamiento, agregué un onStop() a mi actividad principal que dice MediaPlayer (que está en un servicio) para detener la reproducción de música.Comprobar si onStop se llama desde la interacción del usuario, o en la pantalla de regulación

Sin embargo, me gustaría que la música para seguir jugando siempre que la pantalla se atenúa, ya sea usando el botón de encendido para apagar la pantalla, o simplemente por la atenuación automática de la pantalla.

En este momento el jugador también detiene la reproducción cuando la pantalla se oscurece, lo que significa que el método onStop() también se llama a continuación.

¿Cómo puedo verificar si la función de atenuación de la pantalla llama al sistema OnStop()?

Ya he aplicado un PARTIAL_WAKELOCK a mi objeto MediaPlayer, que a mi leal saber y entender, debe permitir que el jugador siga funcionando después de que se apaga la pantalla.

¿Debo agregar un wakelock parcial a mi actividad principal también?


acaba de aplicar un PARTIAL_WAKELOCK tanto a mi actividad principal, así como mi reproductor de medios. En este momento, la pantalla ya no se apaga sola, y cuando el usuario presiona el botón de encendido, la música aún se detiene.

Obviamente, esto no funciona como pensé.

¿Hay alguna forma de lograr el comportamiento que estoy buscando?

+0

¿qué tal tener 'private boolean stoppedByUser = false;' campo en su actividad, configurándolo como 'falso' en' onStart() ', a' true' en 'onBackPressed()' y 'onUserLeaveHint()' y comprobando ¿Tiene valor en 'onStop()'? – Vladimir

+0

¡No es una mala idea! Voy a intentarlo –

+0

¡Oh, realmente funcionó! Deje su comentario como respuesta para que pueda aceptarlo para futuros buscadores. –

Respuesta

3

Puede añadir campo

private boolean stoppedByUser = false; 

a su actividad, configurarlo para que false en onStart(), a true en onBackPressed() y onUserLeaveHint() y comprobar su valor en onStop() método.

Cuestiones relacionadas