2012-08-28 10 views
5

Estoy intentando aumentar el volumen con AudioManager.Desactivar Volume Toast

Pero muestra Native Android Volume UI (Volume Seekbar) Brindis. Quiero deshabilitar esto. Sé que esto puede ser posible en la Actividad que utiliza el Evento clave, pero quiero hacerlo a través del servicio. Cómo deshabilitar la tostada? Aquí está una captura de pantalla de la tostada:
enter image description here

+0

Por favor, agregue una captura de pantalla de este "Toast". –

+0

Cuando aumente o disminuya un volumen, el volumen se desplazará de manera nativa. Quiero desactivar esto. –

Respuesta

7

El -class AudioManager ofrece los siguientes métodos para ajustar el volumen de ciertas corrientes:

Todos estos métodos toman un parámetro flag como su último argumento. La bandera que es interesante para usted es la FLAG_SHOW_UI que:

Muestra una tostada que contiene el volumen actual.

lo tanto, para deshacerse de la tostada, No suministro de este indicador (o el valor int 1), pero el suministro de todos sus otras banderas (si es necesario) o simplemente 0:

AudioManager manager = (AudioManager)this.getSystemService(Context.AUDIO_SERVICE); 
manager.adjustVolume(AudioManager.ADJUST_RAISE, 0); 

El fragmento de código anterior funciona para mí en Android 4.0.4 (Motorola Xoom) y Android 2.3.5 (HTC Desire HD).

+0

No está funcionando. –

+0

@SatheeshKumar Lo probé en mis dispositivos y agregué un fragmento de código que funcionó para mí. Ver mi respuesta actualizada. –

+0

@Lukas Knuth El fragmento de código está incompleto para mí al menos. ¿Dónde agregas este código? En el oyente OnKeyDown? – Radu

3

sé que es un poco tarde, pero creo que las he arreglado para ocultar la tostada de volumen con este:

@Override 
public boolean onKeyUp(int keyCode, KeyEvent event) { 
    switch(keyCode) { 
     case KeyEvent.KEYCODE_VOLUME_DOWN: 
      //volumeDown(); 
      return true; 
     case KeyEvent.KEYCODE_VOLUME_UP: 
      //volumeUp(); 
      return true; 
    } 
    return super.onKeyUp(keyCode, event); 
} 


@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) { 
    switch(keyCode) { 
     case KeyEvent.KEYCODE_VOLUME_DOWN: 
      volumeDown(); 
      return true; 
     case KeyEvent.KEYCODE_VOLUME_UP: 
      volumeUp(); 
      return true; 
    } 
    return super.onKeyDown(keyCode, event); 
} 

private void volumeUp(){ 
    audioManager.setStreamVolume(AudioManager.STREAM_MUSIC, SOME_RANDOM_VALUE, AudioManager.FLAG_VIBRATE); 
} 

Ovveriding sólo un método de onKeyUp y onKeyDown no impidió que muestra la tostada (incluso cuando se usan banderas).

Es un poco raro, como Android intenta mostrar las tostadas dos veces.

Cuestiones relacionadas