使用以下代码捕获音量控制按钮事件。
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
int action = event.getAction();
Log.i("Volume", "Volume " + keyCode + " " + action);
AudioManager audio = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
switch (keyCode) {
case KeyEvent.KEYCODE_VOLUME_UP:
if (action == KeyEvent.ACTION_DOWN) {
audio.adjustStreamVolume(AudioManager.STREAM_VOICE_CALL, AudioManager.ADJUST_RAISE, AudioManager.FLAG_SHOW_UI);
}
return true;
case KeyEvent.KEYCODE_VOLUME_DOWN:
if (action == KeyEvent.ACTION_DOWN) {
audio.adjustStreamVolume(AudioManager.STREAM_VOICE_CALL, AudioManager.ADJUST_LOWER, AudioManager.FLAG_SHOW_UI);
}
return true;
default:
return super.onKeyDown(keyCode, event);
}
}
但是当音量条toast显示时,它不再捕获音量按钮按下事件,除非toast消失。
有什么解决方案吗?
由于您似乎只是捕捉到按下按钮来调整音量,因此在初始化"活动"时,也许您应该只调用setVolumeControlStream()
?
来自开发商网站:
你可能会尝试听音量按键,并以这种方式修改音频流的音量。克制冲动。Android提供了方便的setVolumeControlStream()方法,可以将音量键指向指定的音频流。