Merge "statsd: add Vibrator atom"
diff --git a/cmds/statsd/src/atoms.proto b/cmds/statsd/src/atoms.proto
index 6065bbf..97891b0 100644
--- a/cmds/statsd/src/atoms.proto
+++ b/cmds/statsd/src/atoms.proto
@@ -128,6 +128,7 @@
LowMemReported low_mem_reported = 81;
GenericAtom generic_atom = 82;
KeyValuePairsAtom key_value_pairs_atom = 83;
+ VibratorStateChanged vibrator_state_changed = 84;
}
// Pulled events will start at field 10000.
@@ -1410,6 +1411,25 @@
optional ForegroundState foreground_state = 6;
}
+/**
+ * Logs when the vibrator state changes.
+ * Logged from:
+ * frameworks/base/services/core/java/com/android/server/VibratorService.java
+ */
+message VibratorStateChanged {
+ repeated AttributionNode attribution_node = 1;
+
+ enum State {
+ OFF = 0;
+ ON = 1;
+ }
+ optional State state = 2;
+
+ // Duration (in milliseconds) requested to keep the vibrator on.
+ // Only applicable for State == ON.
+ optional int64 duration_millis = 3;
+}
+
/*
* Allows other apps to push events into statsd.
* Logged from:
diff --git a/services/core/java/com/android/server/VibratorService.java b/services/core/java/com/android/server/VibratorService.java
index ae3946a..b2be5e6 100644
--- a/services/core/java/com/android/server/VibratorService.java
+++ b/services/core/java/com/android/server/VibratorService.java
@@ -27,47 +27,46 @@
import android.hardware.input.InputManager;
import android.hardware.vibrator.V1_0.EffectStrength;
import android.icu.text.DateFormat;
+import android.media.AudioAttributes;
import android.media.AudioManager;
-import android.os.PowerManager.ServiceType;
-import android.os.PowerSaveState;
import android.os.BatteryStats;
+import android.os.Binder;
import android.os.Handler;
+import android.os.IBinder;
import android.os.IVibratorService;
import android.os.PowerManager;
+import android.os.PowerManager.ServiceType;
import android.os.PowerManagerInternal;
+import android.os.PowerSaveState;
import android.os.Process;
import android.os.RemoteException;
import android.os.ResultReceiver;
-import android.os.IBinder;
-import android.os.Binder;
import android.os.ServiceManager;
import android.os.ShellCallback;
import android.os.ShellCommand;
import android.os.SystemClock;
import android.os.Trace;
import android.os.UserHandle;
-import android.os.Vibrator;
import android.os.VibrationEffect;
+import android.os.Vibrator;
import android.os.WorkSource;
import android.provider.Settings;
import android.provider.Settings.SettingNotFoundException;
import android.util.DebugUtils;
import android.util.Slog;
import android.util.SparseArray;
+import android.util.StatsLog;
import android.view.InputDevice;
-import android.media.AudioAttributes;
import com.android.internal.annotations.GuardedBy;
-import com.android.internal.app.IAppOpsService;
import com.android.internal.app.IBatteryStats;
import com.android.internal.util.DumpUtils;
import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.util.ArrayList;
-import java.util.LinkedList;
-import java.util.List;
import java.util.Date;
+import java.util.LinkedList;
public class VibratorService extends IVibratorService.Stub
implements InputManager.InputDeviceListener {
@@ -1048,6 +1047,8 @@
private void noteVibratorOnLocked(int uid, long millis) {
try {
mBatteryStatsService.noteVibratorOn(uid, millis);
+ StatsLog.write_non_chained(StatsLog.VIBRATOR_STATE_CHANGED, uid, null,
+ StatsLog.VIBRATOR_STATE_CHANGED__STATE__ON, millis);
mCurVibUid = uid;
} catch (RemoteException e) {
}
@@ -1057,6 +1058,8 @@
if (mCurVibUid >= 0) {
try {
mBatteryStatsService.noteVibratorOff(mCurVibUid);
+ StatsLog.write_non_chained(StatsLog.VIBRATOR_STATE_CHANGED, mCurVibUid, null,
+ StatsLog.VIBRATOR_STATE_CHANGED__STATE__OFF, 0);
} catch (RemoteException e) { }
mCurVibUid = -1;
}