summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--services/core/java/com/android/server/media/SystemMediaRoute2Provider2.java40
1 files changed, 35 insertions, 5 deletions
diff --git a/services/core/java/com/android/server/media/SystemMediaRoute2Provider2.java b/services/core/java/com/android/server/media/SystemMediaRoute2Provider2.java
index 011659a616d3..3eb38a7029e6 100644
--- a/services/core/java/com/android/server/media/SystemMediaRoute2Provider2.java
+++ b/services/core/java/com/android/server/media/SystemMediaRoute2Provider2.java
@@ -17,6 +17,7 @@
package com.android.server.media;
import static android.media.MediaRoute2Info.FEATURE_LIVE_AUDIO;
+import static android.media.MediaRoute2Info.FEATURE_LIVE_VIDEO;
import android.annotation.NonNull;
import android.annotation.Nullable;
@@ -217,6 +218,28 @@ import java.util.stream.Stream;
}
}
+ @Override
+ public void setRouteVolume(long requestId, String routeOriginalId, int volume) {
+ synchronized (mLock) {
+ var targetProviderProxyId = mOriginalRouteIdToProviderId.get(routeOriginalId);
+ var targetProviderProxyRecord = mProxyRecords.get(targetProviderProxyId);
+ // Holds the target route, if it's managed by a provider service. Holds null otherwise.
+ if (targetProviderProxyRecord != null) {
+ var serviceTargetRoute =
+ targetProviderProxyRecord.mNewOriginalIdToSourceOriginalIdMap.get(
+ routeOriginalId);
+ if (serviceTargetRoute != null) {
+ targetProviderProxyRecord.mProxy.setRouteVolume(
+ requestId, serviceTargetRoute, volume);
+ } else {
+ notifyRequestFailed(
+ requestId, MediaRoute2ProviderService.REASON_ROUTE_NOT_AVAILABLE);
+ }
+ }
+ }
+ super.setRouteVolume(requestId, routeOriginalId, volume);
+ }
+
/**
* Returns the uid that corresponds to the given name and user handle, or {@link
* Process#INVALID_UID} if a uid couldn't be found.
@@ -463,11 +486,18 @@ import java.util.stream.Stream;
}
String id =
asSystemRouteId(providerInfo.getUniqueId(), sourceRoute.getOriginalId());
- var newRoute =
- new MediaRoute2Info.Builder(id, sourceRoute.getName())
- .addFeature(FEATURE_LIVE_AUDIO)
- .build();
- routesMap.put(id, newRoute);
+ var newRouteBuilder = new MediaRoute2Info.Builder(id, sourceRoute);
+ if ((sourceRoute.getSupportedRoutingTypes()
+ & MediaRoute2Info.FLAG_ROUTING_TYPE_SYSTEM_AUDIO)
+ != 0) {
+ newRouteBuilder.addFeature(FEATURE_LIVE_AUDIO);
+ }
+ if ((sourceRoute.getSupportedRoutingTypes()
+ & MediaRoute2Info.FLAG_ROUTING_TYPE_SYSTEM_VIDEO)
+ != 0) {
+ newRouteBuilder.addFeature(FEATURE_LIVE_VIDEO);
+ }
+ routesMap.put(id, newRouteBuilder.build());
idMap.put(id, sourceRoute.getOriginalId());
}
return new ProviderProxyRecord(