Android中音量按鍵在調低音量時,如果一直按住Down按鈕不放,則系統將音量跳到最小后,又自動調節到靜音狀態。這個機制和iPhone是不同的,iPhone中無論你怎么按Volume-按鈕,只能調到最小,還是有一點聲音,是不能自動靜音的。
Android中如果要禁止這個自動靜音功能,也是有辦法的,找到Down按鈕的處理事件,做個判斷就行了,代碼在:
frameworks/base/media/java/android/media/AudioManager.java
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; /* avoid auto mute when adjust lower */ int currentVolume = getStreamVolume(STREAM_MUSIC); Log.e(TAG, String.format("currentVolume=%d", currentVolume)); if (keyCode == KeyEvent.KEYCODE_VOLUME_DOWN && currentVolume <= 1) { break; } if (mUseMasterVolume) { adjustMasterVolume( keyCode == KeyEvent.KEYCODE_VOLUME_UP ? ADJUST_RAISE : ADJUST_LOWER, flags); } else {