android 拦截音量调节键,强制调节多媒体音量

来源:互联网 发布:矩阵解决实际问题 编辑:程序博客网 时间:2024/04/30 13:39

在项目中,如果没有音乐在放的时候,按调节音量的键,调用的是调节铃声的音量。

最近又用户反映,调节了音量,但在打游戏的时候的背景音乐的音量却没有变动。

正是因为用户在外面调的是铃声音量,而游戏背景音乐的音量确实多媒体的音量。

优化思路,在BaseActivity 拦截onKeyDown,强制调用调节音量的状态,设为调节多媒体音量的状态。

代码如下:

@Overridepublic boolean onKeyDown(int keyCode, KeyEvent event) {switch (keyCode) {case KeyEvent.KEYCODE_VOLUME_DOWN://游戏音量减小AudioPlayUtils.getInstance().lowerVoice();return true;case KeyEvent.KEYCODE_VOLUME_UP://游戏音量增大AudioPlayUtils.getInstance().raiseVoice();return true;default:break;}return super.onKeyDown(keyCode, event);}

调用的方法如下:

/** * 调高音量(多媒体音量) */public void raiseVoice(){//强制调用多媒体音量audioManager.adjustStreamVolume(             AudioManager.STREAM_MUSIC,            AudioManager.ADJUST_RAISE,             AudioManager.FLAG_PLAY_SOUND | AudioManager.FLAG_SHOW_UI);      //本地保存多媒体音量int nowVol2 = PreferenceHelper.getMyPreference().getSetting().getInt("music", 0);if (nowVol2 != 15) {PreferenceHelper.getMyPreference().getEditor().putInt("music", nowVol2 + 1);PreferenceHelper.getMyPreference().getEditor().commit();AudioPlayUtils.getInstance().SetVoice(PreferenceHelper.getMyPreference().getSetting().getInt("music", 0));}}/** * 调小音量(多媒体音量) */public void lowerVoice(){//强制调用多媒体音量audioManager.adjustStreamVolume(             AudioManager.STREAM_MUSIC,             AudioManager.ADJUST_LOWER,             AudioManager.FLAG_PLAY_SOUND | AudioManager.FLAG_SHOW_UI);   //本地保存多媒体音量int nowVol = PreferenceHelper.getMyPreference().getSetting().getInt("music", 0);if (nowVol != 0) {PreferenceHelper.getMyPreference().getEditor().putInt("music", nowVol - 1);PreferenceHelper.getMyPreference().getEditor().commit();AudioPlayUtils.getInstance().SetVoice(PreferenceHelper.getMyPreference().getSetting().getInt("music", 0));}}


原创粉丝点击