diff options
author | Alex Stetson <alexstetson@google.com> | 2023-11-20 13:42:37 -0800 |
---|---|---|
committer | Alex Stetson <alexstetson@google.com> | 2023-11-20 13:42:37 -0800 |
commit | e1bef7ca50f05d363911d20ad904b1877678b495 (patch) | |
tree | 1b1c683931ad53ced164b40b409b33e9cc1b2756 | |
parent | 93140930c0eecfe555bec539e6fd2b9fb041dec4 (diff) | |
download | SystemUI-e1bef7ca50f05d363911d20ad904b1877678b495.tar.gz |
Add fallback audio zone for VolumeUI
OEMs may not have occupant zones configured on their systems. To allow
VolumeUI to still show up in these cases, assume the foreground user is
the driver and default to the primary audio zone.
Bug: 311450600
Test: build
Change-Id: I1a38e1a22f19ada85cff910a6f491a9af3a62d57
-rw-r--r-- | src/com/android/systemui/car/volume/VolumeUI.java | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/src/com/android/systemui/car/volume/VolumeUI.java b/src/com/android/systemui/car/volume/VolumeUI.java index bccbd46b..823040fd 100644 --- a/src/com/android/systemui/car/volume/VolumeUI.java +++ b/src/com/android/systemui/car/volume/VolumeUI.java @@ -18,9 +18,11 @@ package com.android.systemui.car.volume; import static android.car.media.CarAudioManager.AUDIO_FEATURE_VOLUME_GROUP_EVENTS; import static android.car.media.CarAudioManager.INVALID_AUDIO_ZONE; +import static android.car.media.CarAudioManager.PRIMARY_AUDIO_ZONE; import static android.car.media.CarVolumeGroupEvent.EXTRA_INFO_SHOW_UI; import static android.car.media.CarVolumeGroupEvent.EXTRA_INFO_VOLUME_INDEX_CHANGED_BY_AUDIO_SYSTEM; +import android.app.ActivityManager; import android.car.Car; import android.car.CarOccupantZoneManager; import android.car.media.CarAudioManager; @@ -152,11 +154,12 @@ public class VolumeUI implements CoreStartable { mCarServiceProvider.addListener(car -> { if (mCarAudioManager != null) { + // already initialized return; } - CarOccupantZoneManager carOccupantZoneManager = - (CarOccupantZoneManager) car.getCarManager(Car.CAR_OCCUPANT_ZONE_SERVICE); + CarOccupantZoneManager carOccupantZoneManager = car.getCarManager( + CarOccupantZoneManager.class); if (carOccupantZoneManager != null) { CarOccupantZoneManager.OccupantZoneInfo info = carOccupantZoneManager.getOccupantZoneForUser(mUserTracker.getUserHandle()); @@ -166,7 +169,14 @@ public class VolumeUI implements CoreStartable { } if (mAudioZoneId == INVALID_AUDIO_ZONE) { - return; + if (mUserTracker.getUserId() == ActivityManager.getCurrentUser()) { + // Certain devices may not have occupant zones configured. As a fallback for + // this situation, if the user is the foreground user, assume driver and use the + // primary audio zone. + mAudioZoneId = PRIMARY_AUDIO_ZONE; + } else { + return; + } } mCarAudioManager = (CarAudioManager) car.getCarManager(Car.AUDIO_SERVICE); |