android 4.1 键盘静音键 KEYCODE_VOLUME_MUTE 无效问题
2013-05-27 10:47
337 查看
客户提供的特殊键盘,静音按键,但是按下去之后,声音不能静音,一路跟踪代码,发现是AudioManager.java的handleKeyDown没有做相关处理。
修改:红色添加部分.
public void handleKeyDown(KeyEvent event, int stream) {
int keyCode = event.getKeyCode();
switch (keyCode) {
case KeyEvent.KEYCODE_VOLUME_UP:
case KeyEvent.KEYCODE_VOLUME_DOWN:
/*
* Adjust the volume in on key down since it is more
* responsive to the user.
*/
int flags = FLAG_SHOW_UI | FLAG_VIBRATE;
if (mUseMasterVolume) {
adjustMasterVolume(
keyCode == KeyEvent.KEYCODE_VOLUME_UP
? ADJUST_RAISE
: ADJUST_LOWER,
flags);
} else {
adjustSuggestedStreamVolume(
keyCode == KeyEvent.KEYCODE_VOLUME_UP
? ADJUST_RAISE
: ADJUST_LOWER,
stream,
flags);
}
break;
case KeyEvent.KEYCODE_VOLUME_MUTE:
if (event.getRepeatCount() == 0) {
if (mUseMasterVolume) {
setMasterMute(!isMasterMute());
} else {
// TODO: Actually handle MUTE
this.setRingerMode(AudioManager.RINGER_MODE_SILENT);
adjustStreamVolume(AudioManager.STREAM_MUSIC,
AudioManager.ADJUST_SAME,
AudioManager.FLAG_SHOW_UI);
}
}
break;
}
}
修改:红色添加部分.
public void handleKeyDown(KeyEvent event, int stream) {
int keyCode = event.getKeyCode();
switch (keyCode) {
case KeyEvent.KEYCODE_VOLUME_UP:
case KeyEvent.KEYCODE_VOLUME_DOWN:
/*
* Adjust the volume in on key down since it is more
* responsive to the user.
*/
int flags = FLAG_SHOW_UI | FLAG_VIBRATE;
if (mUseMasterVolume) {
adjustMasterVolume(
keyCode == KeyEvent.KEYCODE_VOLUME_UP
? ADJUST_RAISE
: ADJUST_LOWER,
flags);
} else {
adjustSuggestedStreamVolume(
keyCode == KeyEvent.KEYCODE_VOLUME_UP
? ADJUST_RAISE
: ADJUST_LOWER,
stream,
flags);
}
break;
case KeyEvent.KEYCODE_VOLUME_MUTE:
if (event.getRepeatCount() == 0) {
if (mUseMasterVolume) {
setMasterMute(!isMasterMute());
} else {
// TODO: Actually handle MUTE
this.setRingerMode(AudioManager.RINGER_MODE_SILENT);
adjustStreamVolume(AudioManager.STREAM_MUSIC,
AudioManager.ADJUST_SAME,
AudioManager.FLAG_SHOW_UI);
}
}
break;
}
}
相关文章推荐
- Android自定义Dialog的Match_parent无效问题解决
- iOS下的 Fixed + Input 调用键盘的时候fixed无效问题解决方案
- Android ProgressBar setProgressDrawable 设置无效问题
- android TextView多行文本(超过3行)使用ellipsize属性无效问题的解决方法
- Android 设置系统的返回键 和软键盘获取焦点问题
- android-自定义View解决wrap_content无效的问题
- android:drawablePadding无效问题
- Android ListView子item高度定长固定值无效问题
- 【转】Android开发之ListView+EditText-要命的焦点和软键盘问题解决办法
- Android 下面调起键盘后的样式兼容性问题
- android 解决输入法键盘遮盖布局问题(不适合带listview的布局)
- Android 写下载程序 调试 url 无效问题
- Android爬坑之旅:软键盘挡住输入框问题的终极解决方案
- React Native 键盘管理和 Tab Navigator 在Android TextInput遮盖,Tab Navigator上移等问题解决办法
- Android setTheme无效的问题 (轉自:http://endf.javaeye.com/blog/771685)
- 《Android系统学习》第六章:Android4.1 HAL段错误问题—linker与prelink
- Android中如何解决输入法键盘和activity页面遮挡的问题
- Android开发遇到一个问题,怎么拦截键盘的input事件
- Android 输入法键盘和activity页面遮挡问题解决
- 移动Web开发--Android自带浏览器弹软键盘触发resize事件问题