CameraServiceProxy: Add client API level to log metrics
The camera client API level needs to be part of the log
metrics.
Bug: 68653614
Test: Manual using application
Change-Id: I5dd250e956e9509228b04ca45cf9ab14a2e87c21
diff --git a/proto/src/metrics_constants.proto b/proto/src/metrics_constants.proto
index c56002e..f87dbb5 100644
--- a/proto/src/metrics_constants.proto
+++ b/proto/src/metrics_constants.proto
@@ -5328,6 +5328,11 @@
// OS: P
PACKAGE_OPTIMIZATION_COMPILATION_REASON = 1321;
+ // FIELD: The camera API level used.
+ // CATEGORY: CAMERA
+ // OS: P
+ FIELD_CAMERA_API_LEVEL = 1322;
+
// ---- End P Constants, all P constants go above this line ----
// Add new aosp constants above this line.
// END OF AOSP CONSTANTS
diff --git a/services/core/java/com/android/server/camera/CameraServiceProxy.java b/services/core/java/com/android/server/camera/CameraServiceProxy.java
index 3133a51..ca8823f 100644
--- a/services/core/java/com/android/server/camera/CameraServiceProxy.java
+++ b/services/core/java/com/android/server/camera/CameraServiceProxy.java
@@ -103,13 +103,15 @@
private static class CameraUsageEvent {
public final int mCameraFacing;
public final String mClientName;
+ public final int mAPILevel;
private boolean mCompleted;
private long mDurationOrStartTimeMs; // Either start time, or duration once completed
- public CameraUsageEvent(int facing, String clientName) {
+ public CameraUsageEvent(int facing, String clientName, int apiLevel) {
mCameraFacing = facing;
mClientName = clientName;
+ mAPILevel = apiLevel;
mDurationOrStartTimeMs = SystemClock.elapsedRealtime();
mCompleted = false;
}
@@ -168,13 +170,13 @@
@Override
public void notifyCameraState(String cameraId, int newCameraState, int facing,
- String clientName) {
+ String clientName, int apiLevel) {
String state = cameraStateToString(newCameraState);
String facingStr = cameraFacingToString(facing);
if (DEBUG) Slog.v(TAG, "Camera " + cameraId + " facing " + facingStr + " state now " +
- state + " for client " + clientName);
+ state + " for client " + clientName + " API Level " + apiLevel);
- updateActivityCount(cameraId, newCameraState, facing, clientName);
+ updateActivityCount(cameraId, newCameraState, facing, clientName, apiLevel);
}
};
@@ -293,6 +295,7 @@
.setType(MetricsEvent.TYPE_ACTION)
.setSubtype(subtype)
.setLatency(e.getDuration())
+ .addTaggedData(MetricsEvent.FIELD_CAMERA_API_LEVEL, e.mAPILevel)
.setPackageName(e.mClientName);
mLogger.write(l);
}
@@ -368,7 +371,8 @@
return true;
}
- private void updateActivityCount(String cameraId, int newCameraState, int facing, String clientName) {
+ private void updateActivityCount(String cameraId, int newCameraState, int facing,
+ String clientName, int apiLevel) {
synchronized(mLock) {
// Update active camera list and notify NFC if necessary
boolean wasEmpty = mActiveCameraUsage.isEmpty();
@@ -376,7 +380,7 @@
case ICameraServiceProxy.CAMERA_STATE_OPEN:
break;
case ICameraServiceProxy.CAMERA_STATE_ACTIVE:
- CameraUsageEvent newEvent = new CameraUsageEvent(facing, clientName);
+ CameraUsageEvent newEvent = new CameraUsageEvent(facing, clientName, apiLevel);
CameraUsageEvent oldEvent = mActiveCameraUsage.put(cameraId, newEvent);
if (oldEvent != null) {
Slog.w(TAG, "Camera " + cameraId + " was already marked as active");