diff --git a/core/api/current.txt b/core/api/current.txt index 55f81c5bd21e1..e8174c0e3fe6d 100644 --- a/core/api/current.txt +++ b/core/api/current.txt @@ -10373,6 +10373,7 @@ package android.content { field public static final String LAUNCHER_APPS_SERVICE = "launcherapps"; field public static final String LAYOUT_INFLATER_SERVICE = "layout_inflater"; field public static final String LOCATION_SERVICE = "location"; + field public static final String MEDIA_METRICS_SERVICE = "media_metrics"; field public static final String MEDIA_PROJECTION_SERVICE = "media_projection"; field public static final String MEDIA_ROUTER_SERVICE = "media_router"; field public static final String MEDIA_SESSION_SERVICE = "media_session"; diff --git a/core/java/android/app/SystemServiceRegistry.java b/core/java/android/app/SystemServiceRegistry.java index e084c01f7e1dd..d5f01499793c6 100644 --- a/core/java/android/app/SystemServiceRegistry.java +++ b/core/java/android/app/SystemServiceRegistry.java @@ -107,6 +107,8 @@ import android.media.AudioManager; import android.media.MediaFrameworkInitializer; import android.media.MediaFrameworkPlatformInitializer; import android.media.MediaRouter; +import android.media.metrics.IMediaMetricsManager; +import android.media.metrics.MediaMetricsManager; import android.media.midi.IMidiManager; import android.media.midi.MidiManager; import android.media.musicrecognition.IMusicRecognitionManager; @@ -1412,6 +1414,18 @@ public final class SystemServiceRegistry { return new DeviceStateManager(); }}); + registerService(Context.MEDIA_METRICS_SERVICE, MediaMetricsManager.class, + new CachedServiceFetcher() { + @Override + public MediaMetricsManager createService(ContextImpl ctx) + throws ServiceNotFoundException { + IBinder iBinder = + ServiceManager.getServiceOrThrow(Context.MEDIA_METRICS_SERVICE); + IMediaMetricsManager service = + IMediaMetricsManager.Stub.asInterface(iBinder); + return new MediaMetricsManager(service, ctx.getUserId()); + }}); + sInitializing = true; try { // Note: the following functions need to be @SystemApis, once they become mainline diff --git a/core/java/android/content/Context.java b/core/java/android/content/Context.java index 5a0ca978b86c7..fcb0f4f6f7abe 100644 --- a/core/java/android/content/Context.java +++ b/core/java/android/content/Context.java @@ -3576,6 +3576,7 @@ public abstract class Context { //@hide: PEOPLE_SERVICE, //@hide: DEVICE_STATE_SERVICE, UWB_SERVICE, + MEDIA_METRICS_SERVICE, }) @Retention(RetentionPolicy.SOURCE) public @interface ServiceName {} @@ -5387,6 +5388,16 @@ public abstract class Context { */ public static final String DEVICE_STATE_SERVICE = "device_state"; + /** + * Use with {@link #getSystemService(String)} to retrieve a + * {@link android.media.metrics.MediaMetricsManager} for interacting with media metrics + * on the device. + * + * @see #getSystemService(String) + * @see android.media.metrics.MediaMetricsManager + */ + public static final String MEDIA_METRICS_SERVICE = "media_metrics"; + /** * Determine whether the given permission is allowed for a particular * process and user ID running in the system. diff --git a/media/java/android/media/metrics/MediaMetricsManager.java b/media/java/android/media/metrics/MediaMetricsManager.java index bac2010c5cfa8..f2eae5fad3c38 100644 --- a/media/java/android/media/metrics/MediaMetricsManager.java +++ b/media/java/android/media/metrics/MediaMetricsManager.java @@ -17,11 +17,14 @@ package android.media.metrics; import android.annotation.NonNull; +import android.annotation.SystemService; +import android.content.Context; import android.os.RemoteException; /** * This class gives information about, and interacts with media metrics. */ +@SystemService(Context.MEDIA_METRICS_SERVICE) public class MediaMetricsManager { // TODO: unhide APIs. private static final String TAG = "MediaMetricsManager"; diff --git a/services/core/java/com/android/server/media/metrics/MediaMetricsManagerService.java b/services/core/java/com/android/server/media/metrics/MediaMetricsManagerService.java index 1282396ad05d9..d48b9a4e78798 100644 --- a/services/core/java/com/android/server/media/metrics/MediaMetricsManagerService.java +++ b/services/core/java/com/android/server/media/metrics/MediaMetricsManagerService.java @@ -50,8 +50,7 @@ public final class MediaMetricsManagerService extends SystemService { @Override public void onStart() { - // TODO: make the service name a constant in Context.java - publishBinderService("playback_metrics", new BinderService()); + publishBinderService(Context.MEDIA_METRICS_SERVICE, new BinderService()); } private final class BinderService extends IMediaMetricsManager.Stub {