禁用音量吐司

时间:2012-08-28 16:51:25

标签: android volume

我正在尝试使用AudioManager增加音量。

但是它显示了Native Android Volume UI(Volume Seekbar)toast。我想禁用它。 我知道这可以在活动中使用关键事件,但我想通过服务来做到这一点。 如何禁用吐司? 这是吐司的截图:
enter image description here

2 个答案:

答案 0 :(得分:7)

AudioManager - 类提供以下方法来调整某些流的音量:

所有这些方法都将flag - 参数作为最后一个参数。你感兴趣的旗帜是FLAG_SHOW_UI

  

显示包含当前音量的祝酒词。

所以,要摆脱Toast,不要提供此标志(或int值1),但提供所有其他标志(如果需要)或仅0

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

上面的代码片段适用于Android 4.0.4(摩托罗拉Xoom)和Android 2.3.5(HTC Desire HD)。

答案 1 :(得分:3)

我知道这有点晚了,但我想我已经设法用这个来隐藏卷吐司:

@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);
}

只从onKeyUp和onKeyDown中获取一个方法并不会阻止显示toast(即使使用标记)。

这有点奇怪 - 就像Android尝试两次显示吐司一样。