diff --git a/services/core/java/com/android/server/media/DeviceRouteController.java b/services/core/java/com/android/server/media/DeviceRouteController.java index 3fc9309038838..d7893eed800b7 100644 --- a/services/core/java/com/android/server/media/DeviceRouteController.java +++ b/services/core/java/com/android/server/media/DeviceRouteController.java @@ -17,8 +17,10 @@ package com.android.server.media; import android.annotation.NonNull; +import android.annotation.Nullable; import android.content.Context; import android.media.AudioManager; +import android.media.IAudioRoutesObserver; import android.media.IAudioService; import android.media.MediaRoute2Info; import android.os.ServiceManager; @@ -48,6 +50,19 @@ import android.os.ServiceManager; onDeviceRouteChangedListener); } + /** + * Select the route with the given built-in or wired {@link MediaRoute2Info.Type}. + * + *
If the type is {@code null} then unselects the route and falls back to the default device + * route observed from + * {@link com.android.server.audio.AudioService#startWatchingRoutes(IAudioRoutesObserver)}. + * + * @param type device type. May be {@code null} to unselect currently selected route. + * @return whether the selection succeeds. If the selection fails the state of the controller + * remains intact. + */ + boolean selectRoute(@Nullable @MediaRoute2Info.Type Integer type); + /** * Returns currently selected device (built-in or wired) route. * diff --git a/services/core/java/com/android/server/media/LegacyDeviceRouteController.java b/services/core/java/com/android/server/media/LegacyDeviceRouteController.java index c9b62acb5ceb8..5e972547738ff 100644 --- a/services/core/java/com/android/server/media/LegacyDeviceRouteController.java +++ b/services/core/java/com/android/server/media/LegacyDeviceRouteController.java @@ -99,6 +99,12 @@ import java.util.Objects; mDeviceRoute = createRouteFromAudioInfo(newAudioRoutes); } + @Override + public boolean selectRoute(@Nullable Integer type) { + // No-op as the controller does not support selection from the outside of the class. + return false; + } + @Override @NonNull public synchronized MediaRoute2Info getDeviceRoute() {