am fd538001: Merge "Added event log for camera launch gesture." into mnc-dr-dev
* commit 'fd538001f5c7f1fad68a27d8143c839bda82491b': Added event log for camera launch gesture.
This commit is contained in:
@@ -244,3 +244,8 @@ option java_package com.android.server
|
|||||||
# ---------------------------
|
# ---------------------------
|
||||||
40000 volume_changed (stream|1), (prev_level|1), (level|1), (max_level|1), (caller|3)
|
40000 volume_changed (stream|1), (prev_level|1), (level|1), (max_level|1), (caller|3)
|
||||||
40001 stream_devices_changed (stream|1), (prev_devices|1), (devices|1)
|
40001 stream_devices_changed (stream|1), (prev_devices|1), (devices|1)
|
||||||
|
|
||||||
|
# ---------------------------
|
||||||
|
# GestureLauncherService.java
|
||||||
|
# ---------------------------
|
||||||
|
40100 camera_gesture_triggered (gesture_on_time|2|3), (sensor1_on_time|2|3), (sensor2_on_time|2|3), (event_extra|1|1)
|
||||||
|
|||||||
@@ -31,6 +31,7 @@ import android.hardware.SensorManager;
|
|||||||
import android.os.Handler;
|
import android.os.Handler;
|
||||||
import android.os.PowerManager;
|
import android.os.PowerManager;
|
||||||
import android.os.PowerManager.WakeLock;
|
import android.os.PowerManager.WakeLock;
|
||||||
|
import android.os.SystemClock;
|
||||||
import android.os.SystemProperties;
|
import android.os.SystemProperties;
|
||||||
import android.os.Vibrator;
|
import android.os.Vibrator;
|
||||||
import android.provider.Settings;
|
import android.provider.Settings;
|
||||||
@@ -60,6 +61,36 @@ class GestureLauncherService extends SystemService {
|
|||||||
private boolean mRegistered;
|
private boolean mRegistered;
|
||||||
private int mUserId;
|
private int mUserId;
|
||||||
|
|
||||||
|
// Below are fields used for event logging only.
|
||||||
|
/** Elapsed real time when the camera gesture is turned on. */
|
||||||
|
private long mCameraGestureOnTimeMs = 0L;
|
||||||
|
|
||||||
|
/** Elapsed real time when the last camera gesture was detected. */
|
||||||
|
private long mCameraGestureLastEventTime = 0L;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* How long the sensor 1 has been turned on since camera launch sensor was
|
||||||
|
* subscribed to and when the last camera launch gesture was detected.
|
||||||
|
* <p>Sensor 1 is the main sensor used to detect camera launch gesture.</p>
|
||||||
|
*/
|
||||||
|
private long mCameraGestureSensor1LastOnTimeMs = 0L;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* If applicable, how long the sensor 2 has been turned on since camera
|
||||||
|
* launch sensor was subscribed to and when the last camera launch
|
||||||
|
* gesture was detected.
|
||||||
|
* <p>Sensor 2 is the secondary sensor used to detect camera launch gesture.
|
||||||
|
* This is optional and if only sensor 1 is used for detect camera launch
|
||||||
|
* gesture, this value would always be 0.</p>
|
||||||
|
*/
|
||||||
|
private long mCameraGestureSensor2LastOnTimeMs = 0L;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Extra information about the event when the last camera launch gesture
|
||||||
|
* was detected.
|
||||||
|
*/
|
||||||
|
private int mCameraLaunchLastEventExtra = 0;
|
||||||
|
|
||||||
public GestureLauncherService(Context context) {
|
public GestureLauncherService(Context context) {
|
||||||
super(context);
|
super(context);
|
||||||
mContext = context;
|
mContext = context;
|
||||||
@@ -107,6 +138,12 @@ class GestureLauncherService extends SystemService {
|
|||||||
private void unregisterCameraLaunchGesture() {
|
private void unregisterCameraLaunchGesture() {
|
||||||
if (mRegistered) {
|
if (mRegistered) {
|
||||||
mRegistered = false;
|
mRegistered = false;
|
||||||
|
mCameraGestureOnTimeMs = 0L;
|
||||||
|
mCameraGestureLastEventTime = 0L;
|
||||||
|
mCameraGestureSensor1LastOnTimeMs = 0;
|
||||||
|
mCameraGestureSensor2LastOnTimeMs = 0;
|
||||||
|
mCameraLaunchLastEventExtra = 0;
|
||||||
|
|
||||||
SensorManager sensorManager = (SensorManager) mContext.getSystemService(
|
SensorManager sensorManager = (SensorManager) mContext.getSystemService(
|
||||||
Context.SENSOR_SERVICE);
|
Context.SENSOR_SERVICE);
|
||||||
sensorManager.unregisterListener(mGestureListener);
|
sensorManager.unregisterListener(mGestureListener);
|
||||||
@@ -120,6 +157,8 @@ class GestureLauncherService extends SystemService {
|
|||||||
if (mRegistered) {
|
if (mRegistered) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
mCameraGestureOnTimeMs = SystemClock.elapsedRealtime();
|
||||||
|
mCameraGestureLastEventTime = mCameraGestureOnTimeMs;
|
||||||
SensorManager sensorManager = (SensorManager) mContext.getSystemService(
|
SensorManager sensorManager = (SensorManager) mContext.getSystemService(
|
||||||
Context.SENSOR_SERVICE);
|
Context.SENSOR_SERVICE);
|
||||||
int cameraLaunchGestureId = resources.getInteger(
|
int cameraLaunchGestureId = resources.getInteger(
|
||||||
@@ -200,14 +239,22 @@ class GestureLauncherService extends SystemService {
|
|||||||
private final class GestureEventListener implements SensorEventListener {
|
private final class GestureEventListener implements SensorEventListener {
|
||||||
@Override
|
@Override
|
||||||
public void onSensorChanged(SensorEvent event) {
|
public void onSensorChanged(SensorEvent event) {
|
||||||
|
if (!mRegistered) {
|
||||||
|
if (DBG) Slog.d(TAG, "Ignoring gesture event because it's unregistered.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
if (event.sensor == mCameraLaunchSensor) {
|
if (event.sensor == mCameraLaunchSensor) {
|
||||||
handleCameraLaunchGesture();
|
handleCameraLaunchGesture(event);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void handleCameraLaunchGesture() {
|
private void handleCameraLaunchGesture(SensorEvent event) {
|
||||||
if (DBG) Slog.d(TAG, "Received a camera launch event.");
|
if (DBG) {
|
||||||
|
float[] values = event.values;
|
||||||
|
Slog.d(TAG, String.format("Received a camera launch event: " +
|
||||||
|
"values=[%.4f, %.4f, %.4f].", values[0], values[1], values[2]));
|
||||||
|
}
|
||||||
boolean userSetupComplete = Settings.Secure.getInt(mContext.getContentResolver(),
|
boolean userSetupComplete = Settings.Secure.getInt(mContext.getContentResolver(),
|
||||||
Settings.Secure.USER_SETUP_COMPLETE, 0) != 0;
|
Settings.Secure.USER_SETUP_COMPLETE, 0) != 0;
|
||||||
if (!userSetupComplete) {
|
if (!userSetupComplete) {
|
||||||
@@ -225,6 +272,7 @@ class GestureLauncherService extends SystemService {
|
|||||||
StatusBarManagerInternal service = LocalServices.getService(
|
StatusBarManagerInternal service = LocalServices.getService(
|
||||||
StatusBarManagerInternal.class);
|
StatusBarManagerInternal.class);
|
||||||
service.onCameraLaunchGestureDetected();
|
service.onCameraLaunchGestureDetected();
|
||||||
|
trackCameraLaunchEvent(event);
|
||||||
mWakeLock.release();
|
mWakeLock.release();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -232,5 +280,50 @@ class GestureLauncherService extends SystemService {
|
|||||||
public void onAccuracyChanged(Sensor sensor, int accuracy) {
|
public void onAccuracyChanged(Sensor sensor, int accuracy) {
|
||||||
// Ignored.
|
// Ignored.
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void trackCameraLaunchEvent(SensorEvent event) {
|
||||||
|
long now = SystemClock.elapsedRealtime();
|
||||||
|
long totalDuration = now - mCameraGestureOnTimeMs;
|
||||||
|
// values[0]: ratio between total time duration when accel is turned on and time
|
||||||
|
// duration since camera launch gesture is subscribed.
|
||||||
|
// values[1]: ratio between total time duration when gyro is turned on and time duration
|
||||||
|
// since camera launch gesture is subscribed.
|
||||||
|
// values[2]: extra information
|
||||||
|
float[] values = event.values;
|
||||||
|
|
||||||
|
long sensor1OnTime = (long) (totalDuration * (double) values[0]);
|
||||||
|
long sensor2OnTime = (long) (totalDuration * (double) values[1]);
|
||||||
|
int extra = (int) values[2];
|
||||||
|
|
||||||
|
// We only log the difference in the event log to make aggregation easier.
|
||||||
|
long gestureOnTimeDiff = now - mCameraGestureLastEventTime;
|
||||||
|
long sensor1OnTimeDiff = sensor1OnTime - mCameraGestureSensor1LastOnTimeMs;
|
||||||
|
long sensor2OnTimeDiff = sensor2OnTime - mCameraGestureSensor2LastOnTimeMs;
|
||||||
|
int extraDiff = extra - mCameraLaunchLastEventExtra;
|
||||||
|
|
||||||
|
// Gating against negative time difference. This doesn't usually happen, but it may
|
||||||
|
// happen because of numeric errors.
|
||||||
|
if (gestureOnTimeDiff < 0 || sensor1OnTimeDiff < 0 || sensor2OnTimeDiff < 0) {
|
||||||
|
if (DBG) Slog.d(TAG, "Skipped event logging because negative numbers.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (DBG) Slog.d(TAG, String.format("totalDuration: %d, sensor1OnTime: %s, " +
|
||||||
|
"sensor2OnTime: %d, extra: %d",
|
||||||
|
gestureOnTimeDiff,
|
||||||
|
sensor1OnTimeDiff,
|
||||||
|
sensor2OnTimeDiff,
|
||||||
|
extraDiff));
|
||||||
|
EventLogTags.writeCameraGestureTriggered(
|
||||||
|
gestureOnTimeDiff,
|
||||||
|
sensor1OnTimeDiff,
|
||||||
|
sensor2OnTimeDiff,
|
||||||
|
extraDiff);
|
||||||
|
|
||||||
|
mCameraGestureLastEventTime = now;
|
||||||
|
mCameraGestureSensor1LastOnTimeMs = sensor1OnTime;
|
||||||
|
mCameraGestureSensor2LastOnTimeMs = sensor2OnTime;
|
||||||
|
mCameraLaunchLastEventExtra = extra;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user