2

使用以下代码捕获音量控制按钮事件。

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

但是当显示音量条吐司时,它不再捕获音量按钮按下事件,除非吐司消失。

有什么解决办法吗?

4

1 回答 1

0

由于您似乎只是捕捉按钮按下来调整音量,也许您应该setVolumeControlStream()在初始化 Activity 时调用?

开发者网站

您可能很想尝试听音量键按下并以这种方式修改音频流的音量。忍住冲动。Android 提供了方便的 setVolumeControlStream() 方法来将音量键按下定向到您指定的音频流。

于 2012-08-23T13:38:16.940 回答