在項目中,如果沒有音樂在放的時候,按調節音量的鍵,調用的是調節鈴聲的音量。
最近又用戶反映,調節了音量,但在打遊戲的時候的背景音樂的音量卻沒有變動。
正是因爲用戶在外面調的是鈴聲音量,而遊戲背景音樂的音量確實多媒體的音量。
優化思路,在BaseActivity 攔截onKeyDown,強制調用調節音量的狀態,設爲調節多媒體音量的狀態。
代碼如下:
@Override
public 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));
}
}