Adding in hook to FGS metrics module in MediaSessionRecord.

Test: manual testing on device
Change-Id: I78147627b399f0756e3b4d205d843d1a3006af5e
Bug: b/263304156
This commit is contained in:
Kunal Malhotra
2023-01-25 01:19:39 +00:00
parent 7b05ea66be
commit 80d7da2c07

View File

@@ -17,6 +17,8 @@
package com.android.server.media;
import android.annotation.Nullable;
import android.app.ActivityManager;
import android.app.ActivityManagerInternal;
import android.app.PendingIntent;
import android.content.ComponentName;
import android.content.Context;
@@ -55,6 +57,8 @@ import android.util.EventLog;
import android.util.Log;
import android.view.KeyEvent;
import com.android.server.LocalServices;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Arrays;
@@ -422,6 +426,13 @@ public class MediaSessionRecord implements IBinder.DeathRecipient, MediaSessionR
*/
@Override
public void close() {
// Log the session's active state
// to measure usage of foreground service resources
int callingUid = Binder.getCallingUid();
int callingPid = Binder.getCallingPid();
LocalServices.getService(ActivityManagerInternal.class)
.logFgsApiEnd(ActivityManager.FOREGROUND_SERVICE_API_TYPE_MEDIA_PLAYBACK,
callingUid, callingPid);
synchronized (mLock) {
if (mDestroyed) {
return;
@@ -884,8 +895,22 @@ public class MediaSessionRecord implements IBinder.DeathRecipient, MediaSessionR
@Override
public void setActive(boolean active) throws RemoteException {
// Log the session's active state
// to measure usage of foreground service resources
int callingUid = Binder.getCallingUid();
int callingPid = Binder.getCallingPid();
if (active) {
LocalServices.getService(ActivityManagerInternal.class)
.logFgsApiBegin(ActivityManager.FOREGROUND_SERVICE_API_TYPE_MEDIA_PLAYBACK,
callingUid, callingPid);
} else {
LocalServices.getService(ActivityManagerInternal.class)
.logFgsApiEnd(ActivityManager.FOREGROUND_SERVICE_API_TYPE_MEDIA_PLAYBACK,
callingUid, callingPid);
}
mIsActive = active;
final long token = Binder.clearCallingIdentity();
long token = Binder.clearCallingIdentity();
try {
mService.onSessionActiveStateChanged(MediaSessionRecord.this);
} finally {