2009-03-10 12 views
33

Tengo una aplicación que reproduce sonidos intermitentes mientras su actividad está abierta, y el usuario siempre espera que haga estos ruidos, pero desafortunadamente está restringido por el volumen de la secuencia de música. Las opciones que he descubierto son por lo tanto:¿Cómo puedo administrar los volúmenes de audio de forma sana en mi aplicación de Android?

  1. Ajusta el volumen de la transmisión de música, posiblemente ensordeciendo al usuario si se está reproduciendo música en ese momento.
  2. llamada MediaPlayer.setVolume(), que es ineficaz si el volumen de la corriente de la música es 0.
  3. botón de volumen manija presiona a mí mismo, que presenta dos problemas: las pulsaciones de botón del volumen Ajuste el volumen del timbre a menos que mi sonido se está reproduciendo, y se me ha como aún no se puede capturar el evento onKey para un botón de volumen, presione usando mi OnKeyListener. Si hubiera alguna manera de forzar el ajuste para que se aplique a la transmisión de música mientras mi actividad tiene enfoque, o simplemente presionar el botón, esto me funcionará.
  4. Reproduzca una secuencia de audio en bucle silencioso en el fondo para mantener la secuencia de música en contexto para los ajustes de volumen.

Creo que la tercera opción es probablemente la mejor, ya que cede el control del volumen al usuario, pero si hay alguna manera de anular el volumen del sistema en una sola instancia del reproductor de medios que también funcionaría.

+0

ver esta respuesta aquí http://stackoverflow.com/a/17900273/1979347 –

Respuesta

70

recibió otra sugerencia a través de Grupos de Google que es la solución de plataforma integrada que estaba buscando y funciona bien:

Por favor, no manejar las teclas de volumen sí mismo - es casi imposible garantía de que no romperá 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 su aplicación tiene foco, cuando las teclas de volumen deben ajustar el volumen de la música.

+0

AGRH ! Gracias, hombre, tuve exactamente el mismo problema (y como idiota pasó 2 horas depurando mi código de reproducción de sonido ...) – kape123

+1

Gracias. Fue difícil encontrar esto buscando en Google. Demonios, la gente en el foro oficial de desarrollo de Android decía que cogiera las teclas de volumen. Yo también pensé que era una mala idea, así que gracias por encontrar esto. –

+0

@Luke Gracias. Esto es lo que estaba buscando. – AD14

2

Es útil de esta API: setVolumeControlStream (AudioManager.STREAM_MUSIC);

A menos que esto pase más tiempo para corregir ese error de volumen.

0

Esto no lo ayudará si ha reemplazado el método KeyDown (int keycode, KeyEvent event) de una actividad.

1

Si está utilizando el método 'onKeyDown', usted puede conseguir alrededor de este problema de la siguiente manera:

public boolean onKeyDown(int keyCode, KeyEvent event) {  
if (keyCode == KeyEvent.KEYCODE_VOLUME_UP || keyCode == KeyEvent.KEYCODE_VOLUME_DOWN) { 
       setVolumeControlStream(AudioManager.STREAM_MUSIC);}} 
Cuestiones relacionadas