From e1bef7ca50f05d363911d20ad904b1877678b495 Mon Sep 17 00:00:00 2001 From: Alex Stetson Date: Mon, 20 Nov 2023 13:42:37 -0800 Subject: 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 --- src/com/android/systemui/car/volume/VolumeUI.java | 16 +++++++++++++--- 1 file 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); -- cgit v1.2.3