Master mute is valid when running fixed volume for automotive

In Automotive case, we set fixed volume to suggest no volume control
inside AudioFlinger and master mute is a mapping to the physical mute
button in a car, which toggles the global mute state.

Bug: 80474559
Test: adb shell input keyevent 164
Change-Id: I1d4fd143a98ee96f11850811c90e6d9932cab948
This commit is contained in:
Hongwei Wang
2018-05-29 14:36:16 -07:00
parent 6de8729657
commit daba124674

View File

@@ -215,6 +215,10 @@ public class AudioService extends IAudioService.Stub
return mPlatformType == AudioSystem.PLATFORM_TELEVISION;
}
private boolean isPlatformAutomotive() {
return mContext.getPackageManager().hasSystemFeature(PackageManager.FEATURE_AUTOMOTIVE);
}
/** The controller for the volume UI. */
private final VolumeController mVolumeController = new VolumeController();
@@ -2367,8 +2371,11 @@ public class AudioService extends IAudioService.Stub
if (DEBUG_VOL) {
Log.d(TAG, String.format("Master mute %s, %d, user=%d", mute, flags, userId));
}
if (mUseFixedVolume) {
return; // If using fixed volume, we don't mute.
if (!isPlatformAutomotive() && mUseFixedVolume) {
// If using fixed volume, we don't mute.
// TODO: remove the isPlatformAutomotive check here.
// The isPlatformAutomotive check is added for safety but may not be necessary.
return;
}
if (getCurrentUserId() == userId) {
if (mute != AudioSystem.getMasterMute()) {