我正在尝试使用AudioManager增加音量。禁用卷吐司
但它显示原生Android卷UI(卷Seekbar)吐司。我想禁用此。 我知道这可以在使用Key Event的Activity中实现,但我想通过服务来完成。 如何禁用敬酒? 这里是烤面包的屏幕截图:
我正在尝试使用AudioManager增加音量。禁用卷吐司
但它显示原生Android卷UI(卷Seekbar)吐司。我想禁用此。 我知道这可以在使用Key Event的Activity中实现,但我想通过服务来完成。 如何禁用敬酒? 这里是烤面包的屏幕截图:
的AudioManager
-class提供以下方法来调整某些流的体积:
adjustVolume(int, int)
adjustStreamVolume(int, int, int)
adjustSuggestedStreamVolume(int, int, int)
setStreamVolume(int, int, int)
所有这些方法都以flag
-参数作为它们的最后一个参数。这个有趣的标志是FLAG_SHOW_UI
其中:
显示包含当前量的吐司。
因此,摆脱敬酒,不供应这个标志(或整型值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)。
它不起作用。 –
@SatheeshKumar我在我的设备上测试了它,并添加了一个适用于我的代码片段。看到我更新的答案。 –
@Lukas Knuth你的代码片段至少对我来说是不完整的。你在哪里添加这些代码?在OnKeyDown侦听器中? – Radu
我知道这是一个有点晚了,但我想我已经成功使用这个隐藏卷敬酒:
@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从的onkeyup和onkeydown事件只有一个方法并没有阻止显示吐司(即使使用标志)。
这有点奇怪 - 就像Android试图显示敬酒两次。
请添加此“Toast”的屏幕截图。 –
当你增加或减少一个音量时,它会自动调节Seekbar的音量。我想禁用它。 –