Merge "WirelessChargerDetector: Work around bad sensor timestamps." into klp-dev

This commit is contained in:
Jeff Brown
2013-09-11 00:35:39 +00:00
committed by Android (Google) Code Review

View File

@@ -21,6 +21,7 @@ import android.hardware.SensorEvent;
import android.hardware.SensorEventListener; import android.hardware.SensorEventListener;
import android.hardware.SensorManager; import android.hardware.SensorManager;
import android.os.BatteryManager; import android.os.BatteryManager;
import android.os.SystemClock;
import android.util.Slog; import android.util.Slog;
import java.io.PrintWriter; import java.io.PrintWriter;
@@ -130,6 +131,10 @@ final class WirelessChargerDetector {
private long mFirstSampleTime; private long mFirstSampleTime;
private float mFirstSampleX, mFirstSampleY, mFirstSampleZ; private float mFirstSampleX, mFirstSampleY, mFirstSampleZ;
// The time and value of the last sample that was collected (for debugging only).
private long mLastSampleTime;
private float mLastSampleX, mLastSampleY, mLastSampleZ;
public WirelessChargerDetector(SensorManager sensorManager, public WirelessChargerDetector(SensorManager sensorManager,
SuspendBlocker suspendBlocker) { SuspendBlocker suspendBlocker) {
mSensorManager = sensorManager; mSensorManager = sensorManager;
@@ -153,6 +158,9 @@ final class WirelessChargerDetector {
pw.println(" mFirstSampleTime=" + mFirstSampleTime); pw.println(" mFirstSampleTime=" + mFirstSampleTime);
pw.println(" mFirstSampleX=" + mFirstSampleX pw.println(" mFirstSampleX=" + mFirstSampleX
+ ", mFirstSampleY=" + mFirstSampleY + ", mFirstSampleZ=" + mFirstSampleZ); + ", mFirstSampleY=" + mFirstSampleY + ", mFirstSampleZ=" + mFirstSampleZ);
pw.println(" mLastSampleTime=" + mLastSampleTime);
pw.println(" mLastSampleX=" + mLastSampleX
+ ", mLastSampleY=" + mLastSampleY + ", mLastSampleZ=" + mLastSampleZ);
} }
} }
@@ -224,6 +232,11 @@ final class WirelessChargerDetector {
return; return;
} }
mLastSampleTime = timeNanos;
mLastSampleX = x;
mLastSampleY = y;
mLastSampleZ = z;
mTotalSamples += 1; mTotalSamples += 1;
if (mTotalSamples == 1) { if (mTotalSamples == 1) {
// Save information about the first sample collected. // Save information about the first sample collected.
@@ -310,7 +323,10 @@ final class WirelessChargerDetector {
private final SensorEventListener mListener = new SensorEventListener() { private final SensorEventListener mListener = new SensorEventListener() {
@Override @Override
public void onSensorChanged(SensorEvent event) { public void onSensorChanged(SensorEvent event) {
processSample(event.timestamp, event.values[0], event.values[1], event.values[2]); // We use SystemClock.elapsedRealtimeNanos() instead of event.timestamp because
// on some devices the sensor HAL may produce timestamps that are not monotonic.
processSample(SystemClock.elapsedRealtimeNanos(),
event.values[0], event.values[1], event.values[2]);
} }
@Override @Override