做一個小項目時,想用音量鍵來調節屏幕亮度,但又想把系統默認的“音量調節”屏蔽掉;在網上查了一些資料,發現用onKeyDown()可以做到,用return ture; 來攔截系統操作來實現自己想要的操作。
代碼如下:
1 public boolean onKeyDown(int keyCode, KeyEvent event) { 2 // TODO Auto-generated method stub 3 if(keyCode==KeyEvent.KEYCODE_VOLUME_DOWN){ 4 i--; 5 txt.setText("down------->"+i); 6 return true; 7 } 8 else if(keyCode==KeyEvent.KEYCODE_VOLUME_UP) 9 { 10 i++; 11 txt.setText("up------->"+i); 12 return true; 13 } 14 else return super.onKeyDown(keyCode, event); 15 }
但是測試時,可以做到用音量鍵控制你需要的功能,也可以屏蔽音量調節,音量的確不能調節了,
調節音量的對話框也確實屏蔽掉了,唯獨不能屏蔽掉調節音量的聲音;后來嘗試着復寫onKeyUp()方法,結果很令人滿意,能屏蔽掉聲音了;這是什么原因呢?我猜測或許是與聲音相關的代碼在onKeyUp()執行的吧。
代碼如下:
@Override public boolean onKeyUp(int keyCode, KeyEvent event) { // TODO Auto-generated method stub if(keyCode==KeyEvent.KEYCODE_VOLUME_DOWN){ return true; } else if(keyCode==KeyEvent.KEYCODE_VOLUME_UP) { return true; } else return super.onKeyUp(keyCode, event); }
以上僅為個人記錄,以便以后查略;如有錯誤,歡迎指正。
