aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOscar Azucena <oscarazu@google.com>2024-04-11 23:09:21 +0000
committerGaurav Sarode <sgaurav@google.com>2024-04-11 23:29:40 +0000
commit9f6a02c8a9543527b674606c3d2511544c001e5b (patch)
tree9ec1a07e40010360d59e89a6c51372fbff90a964
parent9c4edabe6f14088520ea6f75ad48b32050d8934d (diff)
downloadCar-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.java19
-rw-r--r--tests/carservice_unit_test/src/com/android/car/audio/CarAudioServiceUnitTest.java23
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();
}