在PhoneWindowManager.java的interceptKeyBeforeQueueing方法中添加
if (keyCode == KeyEvent.KEYCODE_HOME
|| keyCode == KeyEvent.KEYCODE_BACK || KeyEvent.KEYCODE_MENU) {performVirtualKeyClickSound();
}
private void performVirtualKeyClickSound() {
AudioManager audioManager = (AudioManager) mContext
.getSystemService(Context.AUDIO_SERVICE);
if (audioManager != null) {
audioManager.playSoundEffect(AudioManager.FX_KEY_CLICK);
} else {
Log.w(TAG, "performVirtualKeyClickSound");
}
}
在PhoneWindow.java中注视掉
if (playSoundEffect && ! SystemProperties.getBoolean("persist.sys.ts18.sp025",false)) {这个地方在有的场景中会播放menu音量,要屏蔽掉。
AudioManager audioManager = (AudioManager) getContext().getSystemService(
Context.AUDIO_SERVICE);
if (audioManager != null) {
audioManager.playSoundEffect(AudioManager.FX_KEY_CLICK);
} else {
Log.w(TAG, "Couldn't get audio manager");
}
}