7

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

但它显示了 Native Android Volume UI(Volume Seekbar) toast。我想禁用它。我知道这可以在使用 Key Event 的 Activity 中实现,但我想通过服务来实现。如何禁用吐司?这是吐司的截图:
在此处输入图像描述

4

2 回答 2

9

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

所有这些方法都将flag-parameter 作为它们的最后一个参数。您感兴趣的标志是FLAG_SHOW_UI

显示包含当前音量的 toast。

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

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

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

于 2012-08-28T18:51:29.053 回答
4

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

@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 尝试显示吐司两次一样。

于 2013-11-15T10:58:59.340 回答