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
diff --git a/services/core/java/com/android/server/audio/AudioService.java b/services/core/java/com/android/server/audio/AudioService.java
index 28665e3..bfa38a0 100644
--- a/services/core/java/com/android/server/audio/AudioService.java
+++ b/services/core/java/com/android/server/audio/AudioService.java
@@ -215,6 +215,10 @@
         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 @@
         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()) {