diff options
| author | 2019-04-30 18:34:01 -0700 | |
|---|---|---|
| committer | 2019-05-01 08:37:59 -0700 | |
| commit | 4c00d907ac7050c8469f21747d9da86f8dbc102a (patch) | |
| tree | b31472d03a8226b022dc8167d466863e3941d4c2 | |
| parent | c61a25102c1ca8acbc068eb93bde65599137c931 (diff) | |
AudioService: fix mute over CEC
Fix conversion of adjust direction to keycode in
ajustStreamVolume() before sending them to HdmiPlaybackClient:
mute adjusts should be ignored except for toggle mute.
Bug: 129778057
Test: make
Change-Id: I64984ea4dd975eed2dba8feafbc486f056a15773
| -rw-r--r-- | services/core/java/com/android/server/audio/AudioService.java | 30 |
1 files changed, 22 insertions, 8 deletions
diff --git a/services/core/java/com/android/server/audio/AudioService.java b/services/core/java/com/android/server/audio/AudioService.java index 507f398d2422..d5109123ab12 100644 --- a/services/core/java/com/android/server/audio/AudioService.java +++ b/services/core/java/com/android/server/audio/AudioService.java @@ -1825,14 +1825,28 @@ public class AudioService extends IAudioService.Stub && streamTypeAlias == AudioSystem.STREAM_MUSIC // vol change on a full volume device && ((device & mFullVolumeDevices) != 0)) { - int keyCode = (direction == -1) ? KeyEvent.KEYCODE_VOLUME_DOWN : - KeyEvent.KEYCODE_VOLUME_UP; - final long ident = Binder.clearCallingIdentity(); - try { - mHdmiPlaybackClient.sendKeyEvent(keyCode, true); - mHdmiPlaybackClient.sendKeyEvent(keyCode, false); - } finally { - Binder.restoreCallingIdentity(ident); + int keyCode = KeyEvent.KEYCODE_UNKNOWN; + switch (direction) { + case AudioManager.ADJUST_RAISE: + keyCode = KeyEvent.KEYCODE_VOLUME_UP; + break; + case AudioManager.ADJUST_LOWER: + keyCode = KeyEvent.KEYCODE_VOLUME_DOWN; + break; + case AudioManager.ADJUST_TOGGLE_MUTE: + keyCode = KeyEvent.KEYCODE_VOLUME_MUTE; + break; + default: + break; + } + if (keyCode != KeyEvent.KEYCODE_UNKNOWN) { + final long ident = Binder.clearCallingIdentity(); + try { + mHdmiPlaybackClient.sendKeyEvent(keyCode, true); + mHdmiPlaybackClient.sendKeyEvent(keyCode, false); + } finally { + Binder.restoreCallingIdentity(ident); + } } } |