首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >禁用音量Toast

禁用音量Toast
EN

Stack Overflow用户
提问于 2012-08-29 00:51:25
回答 2查看 3.9K关注 0票数 6

我正在试着用AudioManager增加音量。

但它显示本地Android音量UI(音量Seekbar) toast.我想禁用它。我知道这在使用Key Event的活动中是可能的,但我想通过服务来做到这一点。如何禁用吐司?以下是祝酒词的截图:

EN

回答 2

Stack Overflow用户

发布于 2012-08-29 02:51:29

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

  • adjustVolume(int, int)
  • adjustStreamVolume(int, int, int)
  • adjustSuggestedStreamVolume(int, int, int)
  • setStreamVolume(int, int, int)

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

显示包含当前卷的吐司。

因此,为了去掉Toast,不提供此标志(或int- 1),而是提供所有其他标志(如果需要)或仅提供0

代码语言:javascript
复制
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)。

票数 9
EN

Stack Overflow用户

发布于 2013-11-15 18:58:59

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

代码语言:javascript
复制
@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中只使用一个方法并不妨碍显示吐司(即使在使用标志时)。

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

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12163933

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档