Sends KEYCODE_MEDIA_{PLAY,PAUSE} on master mute
am: fe51ee780b
Change-Id: I873f76963d5866688cd6e1eadd3a1a569db732a3
diff --git a/service/src/com/android/car/CarAudioService.java b/service/src/com/android/car/CarAudioService.java
index 2e0583c..f3426c1 100644
--- a/service/src/com/android/car/CarAudioService.java
+++ b/service/src/com/android/car/CarAudioService.java
@@ -52,6 +52,7 @@
import android.util.Log;
import android.util.SparseArray;
import android.util.SparseIntArray;
+import android.view.KeyEvent;
import com.android.internal.util.Preconditions;
@@ -154,15 +155,15 @@
}
break;
case AudioManager.ADJUST_MUTE:
- mAudioManager.setMasterMute(true, flags);
+ setMasterMute(true, flags);
callbackMasterMuteChange(flags);
break;
case AudioManager.ADJUST_UNMUTE:
- mAudioManager.setMasterMute(false, flags);
+ setMasterMute(false, flags);
callbackMasterMuteChange(flags);
break;
case AudioManager.ADJUST_TOGGLE_MUTE:
- mAudioManager.setMasterMute(!mAudioManager.isMasterMute(), flags);
+ setMasterMute(!mAudioManager.isMasterMute(), flags);
callbackMasterMuteChange(flags);
break;
case AudioManager.ADJUST_SAME:
@@ -229,7 +230,7 @@
if (mPersistMasterMuteState) {
boolean storedMasterMute = Settings.Global.getInt(mContext.getContentResolver(),
CarAudioManager.VOLUME_SETTINGS_KEY_MASTER_MUTE, 0) != 0;
- mAudioManager.setMasterMute(storedMasterMute, 0);
+ setMasterMute(storedMasterMute, 0);
}
}
}
@@ -296,6 +297,16 @@
}
}
+ private void setMasterMute(boolean mute, int flags) {
+ mAudioManager.setMasterMute(mute, flags);
+
+ // When the master mute is turned ON, we want the playing app to get a "pause" command.
+ // When the volume is unmuted, we want to resume playback.
+ int keycode = mute ? KeyEvent.KEYCODE_MEDIA_PAUSE : KeyEvent.KEYCODE_MEDIA_PLAY;
+ mAudioManager.dispatchMediaKeyEvent(new KeyEvent(KeyEvent.ACTION_DOWN, keycode));
+ mAudioManager.dispatchMediaKeyEvent(new KeyEvent(KeyEvent.ACTION_UP, keycode));
+ }
+
private void callbackMasterMuteChange(int flags) {
for (BinderInterfaceContainer.BinderInterface<ICarVolumeCallback> callback :
mVolumeCallbackContainer.getInterfaces()) {