Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 2f1ef77c authored by Jeff Brown's avatar Jeff Brown Committed by Android (Google) Code Review
Browse files

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

parents 042bd400 20e28753
Loading
Loading
Loading
Loading
+17 −1
Original line number Diff line number Diff line
@@ -21,6 +21,7 @@ import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.os.BatteryManager;
import android.os.SystemClock;
import android.util.Slog;

import java.io.PrintWriter;
@@ -130,6 +131,10 @@ final class WirelessChargerDetector {
    private long mFirstSampleTime;
    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,
            SuspendBlocker suspendBlocker) {
        mSensorManager = sensorManager;
@@ -153,6 +158,9 @@ final class WirelessChargerDetector {
            pw.println("  mFirstSampleTime=" + mFirstSampleTime);
            pw.println("  mFirstSampleX=" + mFirstSampleX
                    + ", mFirstSampleY=" + mFirstSampleY + ", mFirstSampleZ=" + mFirstSampleZ);
            pw.println("  mLastSampleTime=" + mLastSampleTime);
            pw.println("  mLastSampleX=" + mLastSampleX
                    + ", mLastSampleY=" + mLastSampleY + ", mLastSampleZ=" + mLastSampleZ);
        }
    }

@@ -224,6 +232,11 @@ final class WirelessChargerDetector {
                return;
            }

            mLastSampleTime = timeNanos;
            mLastSampleX = x;
            mLastSampleY = y;
            mLastSampleZ = z;

            mTotalSamples += 1;
            if (mTotalSamples == 1) {
                // Save information about the first sample collected.
@@ -310,7 +323,10 @@ final class WirelessChargerDetector {
    private final SensorEventListener mListener = new SensorEventListener() {
        @Override
        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