2011-07-22 25 views
24

Me gustaría controlar el volumen de medios con mi aplicación usando botones de volumen regulares. El problema es que mi aplicación está usando sonidos cortos, y pueden ser molestos para el usuario. Solo puede ajustar el volumen de los medios mientras se están reproduciendo (durante 1 segundo) y luego comienza a ajustar el volumen del timbre. ¿Cómo puedo hacer que el volumen del medio sea el predeterminado?¿Cómo controlar el volumen de los medios?

Respuesta

45

En onCreate de su actividad() que puede hacer:

setVolumeControlStream(AudioManager.STREAM_MUSIC); 
+0

Gracias, eso funciona bien. –

+0

@Kevin: +1, no sabía sobre ese método, un poco más simple que mi enfoque. ;-) – Squonk

+0

¿Qué debo hacer si quiero dos flujos de control de volumen? –

3

No he intentado esto, pero debería poder interceptar los botones de volumen normal anulando onKeyDown(int keyCode, KeyEvent event) en su Actividad. Compruebe los códigos clave KEYCODE_VOLUME_UP y KEYCODE_VOLUME_DOWN.

Usando AudioManager.setStreamVolume(int, int, int) con STREAM_MUSIC para el parámetro streamType debe trabajar y si vuelve true del método onKeyDown(...) (para indicar que ha manejado el caso), se debe evitar que el sistema de ajustar el volumen del timbre. Asegúrese de devolver false para todos los otros códigos clave que no esté manejando.

+0

¿Qué debo hacer si quiero dos flujos de control de volumen? –

3

Por favor, no toque las teclas de volumen usted mismo - es casi i mpossible to guarantee que no rompa el comportamiento de las teclas de volumen .

llamada a esta API en su onCreate():

setVolumeControlStream(AudioManager.STREAM_MUSIC); 

Esto le dice al AudioManager que cuando sus application has focus, las teclas de volumen deben ajustar el volumen de la música.

Cuestiones relacionadas