2012-08-28 7 views
5

Próbuję zwiększyć głośność za pomocą aplikacji AudioManager.Wyłączanie woluminu wolumetrycznego

Ale wyświetla tosty Native Android Volume UI (Volume Seekbar). Chcę to wyłączyć. Wiem, że to może być możliwe w Aktywności za pomocą Zdarzenia Kluczowego, ale chcę to zrobić poprzez usługę. Jak wyłączyć toast? Zrzut ekranu na grzanki:
enter image description here

+0

Proszę dodać zrzut ekranu tego "Toast". –

+0

Po zwiększeniu lub zmniejszeniu głośności będzie głośniej odtwarzać dźwięk Seekbar. Chcę to wyłączyć. –

Odpowiedz

7

AudioManager -class oferuje następujące sposoby regulacji głośności niektórych strumieni:

Wszystkie te metody przyjmują parametr flag jako ostatni argument. Interesującą dla Ciebie flagą jest , która:

Pokaż tosty zawierające bieżącą objętość.

Tak więc, aby pozbyć się tosty, NIE podaż tej flagi (lub 1 INT-wartość), ale dostarczamy wszystkie inne flagi (jeśli to konieczne) lub po prostu 0:

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

Powyższy fragment kodu działa dla mnie na Androida 4.0.4 (Motorola Xoom) i Android 2.3.5 (HTC Desire HD).

+0

To nie działa. –

+0

@SatheeshKumar Przetestowałem to na moich urządzeniach i dodałem fragment kodu, który zadziałał dla mnie. Zobacz moją zaktualizowaną odpowiedź. –

+0

@Lukas Knuth Twój fragment kodu jest co najmniej niepełny. Gdzie dodajesz ten kod? W słuchacz OnKeyDown? – Radu

3

Wiem, że to trochę późno, ale myślę, że udało mi się ukryć tosty głośności przy użyciu to:

@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 tylko jedną metodę z onkeyup i onKeyDown nie przeszkodziło wyświetlania tosty (nawet przy użyciu flag).

To trochę dziwne - jak Android próbuje wyświetlić toast dwa razy.