2010-07-05 5 views
11

¿Es posible registrar un oyente para escuchar los cambios en el nivel de volumen de la secuencia de música en Android?¿Hay un oyente que escuche los cambios en el volumen en Android?

Estoy mostrando el volumen real en una SeekBar y me gustaría cambiar la barra de búsqueda si el usuario cambia el volumen con las teclas de volumen de hardware. En este momento, se muestra el volumen correcto hasta que el usuario cambia el volumen con las teclas de hardware.

Respuesta

5

Una opción sería usar registerMediaButtonEventReceiver y hacer que su aplicación maneje las llaves de hardware. Puede ajustar la barra de búsqueda de volumen en su aplicación y usar AudioManager para ajustar el volumen.

Otra posibilidad sería crear un servicio en su aplicación que se ejecute en segundo plano y verifique periódicamente el volumen y ajuste su barra de búsqueda en consecuencia.

0

Puede visualizar el volumen accediendo al volumen actual de AudioManger si su aplicación está actualmente enfocada. De lo contrario, no hay una forma concreta (forma oficial de usar api) de hacer esto.

+1

Obtuve el volumen actual del administrador de audio. El problema es que si el usuario cambia el volumen, por ejemplo, con las teclas de hardware, mi aplicación no tiene manera de reconocer esto en este momento y la barra mostrará el volumen incorrecto. – Janusz

20

Ésta no es una respuesta perfecta, pero un truco:

android.media.VOLUME_CHANGED_ACTION 

me encuentra por encima de la acción en los registros nativos mientras se cambia el volumen a través de la tecla de volumen duro.

01-25 16:11:24.015: DEBUG/VolumePanel(189): onVolumeChanged(streamType: 2, flags: 4) 
01-25 16:11:24.015: DEBUG/BluetoothA2dpService(189): Received intent with action: android.media.VOLUME_CHANGED_ACTION 

así que adelante y registrar BroadcastReceiver con la acción "android.media.VOLUME_CHANGED_ACTION" si usted no tiene ninguna otra solución.

Otra forma de hacerlo es; Taking over the volume key on Android.

+1

No me gusta El enfoque "android.media.VOLUME_CHANGED_ACTION" en principio, pero me encanta porque funciona. – dhaag23

0

Android recomienda dejar que el sistema haga todo esto por usted llamando a setVolumeControlStream(). Aparecerá una barra de búsqueda de volumen para la transmisión de audio que su aplicación está usando cada vez que el usuario intente ajustar el volumen con sus botones de hardware.

"Puede tener la tentación de intentar escuchar las pulsaciones de las teclas de volumen y modificar el volumen de la transmisión de audio de esa manera Resistir el impulso Android proporciona el práctico método setVolumeControlStream() para dirigir las teclas de volumen a la transmisión de audio especifique

Una vez identificada la transmisión de audio que usará su aplicación, debe configurarla como destino de la secuencia de volumen. Debe realizar esta llamada al principio del ciclo de vida de su aplicación, ya que solo necesita llamarla una vez durante el ciclo de vida de la actividad , normalmente debe llamarlo dentro del método onCreate() de la Actividad o Fragmento que controla sus medios. Esto garantiza que, cuando su aplicación esté visible, los controles de volumen funcionen como espera el usuario.

setVolumeControlStream (AudioManager.STREAM_MUSIC);

Desde este punto en adelante, presionando las teclas de volumen en el dispositivo afectan el flujo de audio se especifica (en este caso “música”) siempre que la actividad o fragmento diana es visible "

De:. http://developer.android.com/training/managing-audio/volume-playback.html

Cuestiones relacionadas