diff options
author | Oscar Azucena <oscarazu@google.com> | 2024-04-11 23:09:21 +0000 |
---|---|---|
committer | Gaurav Sarode <sgaurav@google.com> | 2024-04-11 23:29:40 +0000 |
commit | 9f6a02c8a9543527b674606c3d2511544c001e5b (patch) | |
tree | 9ec1a07e40010360d59e89a6c51372fbff90a964 | |
parent | 9c4edabe6f14088520ea6f75ad48b32050d8934d (diff) | |
download | Car-9f6a02c8a9543527b674606c3d2511544c001e5b.tar.gz |
Move audio device callback behind dynamic routing
Also moved the (un)register behind the car audio dynamic devices
flags since previous code does not actually need it.
Bug: 317393143
Bug: 333948642
Test: atest com.android.car.audio
Test: Manual start car target without dynamic routing
(cherry picked from https://googleplex-android-review.googlesource.com/q/commit:305f63ca40f2471115854261b04f7d042da41e6f)
Merged-In: Ic1c41b3f82d63e0b1d236016bb1f9b3ab791fd8b
Change-Id: Ic1c41b3f82d63e0b1d236016bb1f9b3ab791fd8b
-rw-r--r-- | service/src/com/android/car/audio/CarAudioService.java | 19 | ||||
-rw-r--r-- | tests/carservice_unit_test/src/com/android/car/audio/CarAudioServiceUnitTest.java | 23 |
2 files changed, 39 insertions, 3 deletions
diff --git a/service/src/com/android/car/audio/CarAudioService.java b/service/src/com/android/car/audio/CarAudioService.java index b0e132fa27..bbd5948145 100644 --- a/service/src/com/android/car/audio/CarAudioService.java +++ b/service/src/com/android/car/audio/CarAudioService.java @@ -65,6 +65,7 @@ import android.car.builtin.os.TraceHelper; import android.car.builtin.os.UserManagerHelper; import android.car.builtin.util.Slogf; import android.car.builtin.util.TimingsTraceLog; +import android.car.feature.Flags; import android.car.media.AudioZonesMirrorStatusCallback; import android.car.media.CarAudioManager; import android.car.media.CarAudioPatchHandle; @@ -421,6 +422,7 @@ public final class CarAudioService extends ICarAudio.Stub implements CarServiceB setupPowerPolicyListener(); mCarInputService.registerKeyEventListener(mCarKeyEventListener, KEYCODES_OF_INTEREST); + setupAudioDeviceInfoCallback(); } else { Slogf.i(TAG, "Audio dynamic routing not enabled, run in legacy mode"); setupLegacyVolumeChangedListener(); @@ -429,12 +431,25 @@ public final class CarAudioService extends ICarAudio.Stub implements CarServiceB mAudioManager.setSupportedSystemUsages(CarAudioContext.getSystemUsages()); mAudioManager.setAudioServerStateCallback(mContext.getMainExecutor(), mAudioServerStateCallback); - mAudioManager.registerAudioDeviceCallback(mAudioDeviceInfoCallback, mHandler); } restoreMasterMuteState(); } + private void setupAudioDeviceInfoCallback() { + if (!Flags.carAudioDynamicDevices()) { + return; + } + mAudioManager.registerAudioDeviceCallback(mAudioDeviceInfoCallback, mHandler); + } + + private void releaseAudioDeviceInfoCallback() { + if (!Flags.carAudioDynamicDevices()) { + return; + } + mAudioManager.unregisterAudioDeviceCallback(mAudioDeviceInfoCallback); + } + private void setupPowerPolicyListener() { mCarAudioPowerListener = CarAudioPowerListener.newCarAudioPowerListener(this); mCarAudioPowerListener.startListeningForPolicyChanges(); @@ -456,6 +471,7 @@ public final class CarAudioService extends ICarAudio.Stub implements CarServiceB synchronized (mImplLock) { if (!runInLegacyMode()) { releaseAudioPoliciesLocked(); + releaseAudioDeviceInfoCallback(); } else { AudioManagerHelper.unregisterVolumeAndMuteReceiver(mContext, mLegacyVolumeChangedHelper); @@ -486,7 +502,6 @@ public final class CarAudioService extends ICarAudio.Stub implements CarServiceB } mAudioManager.clearAudioServerStateCallback(); mCarInputService.unregisterKeyEventListener(mCarKeyEventListener); - mAudioManager.unregisterAudioDeviceCallback(mAudioDeviceInfoCallback); } } diff --git a/tests/carservice_unit_test/src/com/android/car/audio/CarAudioServiceUnitTest.java b/tests/carservice_unit_test/src/com/android/car/audio/CarAudioServiceUnitTest.java index 749bf50413..cb937e2120 100644 --- a/tests/carservice_unit_test/src/com/android/car/audio/CarAudioServiceUnitTest.java +++ b/tests/carservice_unit_test/src/com/android/car/audio/CarAudioServiceUnitTest.java @@ -819,6 +819,16 @@ public final class CarAudioServiceUnitTest extends AbstractExtendedMockitoTestCa service.init(); verify(mAudioManager).setAudioServerStateCallback(any(), any()); + verify(mAudioManager, never()).registerAudioDeviceCallback(any(), any()); + } + + @Test + public void init_initializesAudioServiceCallbacks_withDynamicDevices() throws Exception { + CarAudioService service = setUpAudioServiceWithDynamicDevices(); + + service.init(); + + verify(mAudioManager).setAudioServerStateCallback(any(), any()); verify(mAudioManager).registerAudioDeviceCallback(any(), any()); } @@ -842,11 +852,22 @@ public final class CarAudioServiceUnitTest extends AbstractExtendedMockitoTestCa } @Test - public void release_initializesAudioServiceCallbacks() throws Exception { + public void release_releasesAudioServiceCallbacks() throws Exception { CarAudioService service = setUpAudioService(); service.release(); + verify(mAudioManager, never()).unregisterAudioDeviceCallback(any()); + verify(mAudioManager).clearAudioServerStateCallback(); + } + + @Test + public void release_releasesAudioServiceCallbacks_withDynamicDevices() throws Exception { + CarAudioService service = setUpAudioServiceWithDynamicDevices(); + service.init(); + + service.release(); + verify(mAudioManager).unregisterAudioDeviceCallback(any()); verify(mAudioManager).clearAudioServerStateCallback(); } |