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

Commit 6432bf7a authored by Nick Vaccaro's avatar Nick Vaccaro
Browse files

Sensors: Add LOW_LATENCY_OFFBODY_DETECT sensor API

Test: none
Bug: 34234089
Change-Id: I2121e0e5132034254790ff6d4f9e3c65775a0ed2
parent 04e7b6c6
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -14015,6 +14015,7 @@ package android.hardware {
    field public static final java.lang.String STRING_TYPE_HEART_RATE = "android.sensor.heart_rate";
    field public static final java.lang.String STRING_TYPE_LIGHT = "android.sensor.light";
    field public static final java.lang.String STRING_TYPE_LINEAR_ACCELERATION = "android.sensor.linear_acceleration";
    field public static final java.lang.String STRING_TYPE_LOW_LATENCY_OFFBODY_DETECT = "android.sensor.low_latency_offbody";
    field public static final java.lang.String STRING_TYPE_MAGNETIC_FIELD = "android.sensor.magnetic_field";
    field public static final java.lang.String STRING_TYPE_MAGNETIC_FIELD_UNCALIBRATED = "android.sensor.magnetic_field_uncalibrated";
    field public static final java.lang.String STRING_TYPE_MOTION_DETECT = "android.sensor.motion_detect";
@@ -14043,6 +14044,7 @@ package android.hardware {
    field public static final int TYPE_HEART_RATE = 21; // 0x15
    field public static final int TYPE_LIGHT = 5; // 0x5
    field public static final int TYPE_LINEAR_ACCELERATION = 10; // 0xa
    field public static final int TYPE_LOW_LATENCY_OFFBODY_DETECT = 34; // 0x22
    field public static final int TYPE_MAGNETIC_FIELD = 2; // 0x2
    field public static final int TYPE_MAGNETIC_FIELD_UNCALIBRATED = 14; // 0xe
    field public static final int TYPE_MOTION_DETECT = 30; // 0x1e
+2 −0
Original line number Diff line number Diff line
@@ -14522,6 +14522,7 @@ package android.hardware {
    field public static final java.lang.String STRING_TYPE_HEART_RATE = "android.sensor.heart_rate";
    field public static final java.lang.String STRING_TYPE_LIGHT = "android.sensor.light";
    field public static final java.lang.String STRING_TYPE_LINEAR_ACCELERATION = "android.sensor.linear_acceleration";
    field public static final java.lang.String STRING_TYPE_LOW_LATENCY_OFFBODY_DETECT = "android.sensor.low_latency_offbody";
    field public static final java.lang.String STRING_TYPE_MAGNETIC_FIELD = "android.sensor.magnetic_field";
    field public static final java.lang.String STRING_TYPE_MAGNETIC_FIELD_UNCALIBRATED = "android.sensor.magnetic_field_uncalibrated";
    field public static final java.lang.String STRING_TYPE_MOTION_DETECT = "android.sensor.motion_detect";
@@ -14552,6 +14553,7 @@ package android.hardware {
    field public static final int TYPE_HEART_RATE = 21; // 0x15
    field public static final int TYPE_LIGHT = 5; // 0x5
    field public static final int TYPE_LINEAR_ACCELERATION = 10; // 0xa
    field public static final int TYPE_LOW_LATENCY_OFFBODY_DETECT = 34; // 0x22
    field public static final int TYPE_MAGNETIC_FIELD = 2; // 0x2
    field public static final int TYPE_MAGNETIC_FIELD_UNCALIBRATED = 14; // 0xe
    field public static final int TYPE_MOTION_DETECT = 30; // 0x1e
+2 −0
Original line number Diff line number Diff line
@@ -14047,6 +14047,7 @@ package android.hardware {
    field public static final java.lang.String STRING_TYPE_HEART_RATE = "android.sensor.heart_rate";
    field public static final java.lang.String STRING_TYPE_LIGHT = "android.sensor.light";
    field public static final java.lang.String STRING_TYPE_LINEAR_ACCELERATION = "android.sensor.linear_acceleration";
    field public static final java.lang.String STRING_TYPE_LOW_LATENCY_OFFBODY_DETECT = "android.sensor.low_latency_offbody";
    field public static final java.lang.String STRING_TYPE_MAGNETIC_FIELD = "android.sensor.magnetic_field";
    field public static final java.lang.String STRING_TYPE_MAGNETIC_FIELD_UNCALIBRATED = "android.sensor.magnetic_field_uncalibrated";
    field public static final java.lang.String STRING_TYPE_MOTION_DETECT = "android.sensor.motion_detect";
@@ -14075,6 +14076,7 @@ package android.hardware {
    field public static final int TYPE_HEART_RATE = 21; // 0x15
    field public static final int TYPE_LIGHT = 5; // 0x5
    field public static final int TYPE_LINEAR_ACCELERATION = 10; // 0xa
    field public static final int TYPE_LOW_LATENCY_OFFBODY_DETECT = 34; // 0x22
    field public static final int TYPE_MAGNETIC_FIELD = 2; // 0x2
    field public static final int TYPE_MAGNETIC_FIELD_UNCALIBRATED = 14; // 0xe
    field public static final int TYPE_MOTION_DETECT = 30; // 0x1e
+20 −3
Original line number Diff line number Diff line
@@ -649,9 +649,22 @@ public final class Sensor {
     * to be in the same order as the HAL. Skipping this sensor
     */

    /* TYPE_LOW_LATENCY_OFF_BODY_SENSOR - defined as type 34 in the HAL needs to
     * be defined in this space.
    /**
     * A constant describing a low latency off-body detect sensor.
     *
     * See {@link android.hardware.SensorEvent#values SensorEvent.values} for more details.
     *
     */
    public static final int TYPE_LOW_LATENCY_OFFBODY_DETECT = 34;


    /**
     * A constant string describing a low-latency offbody detector sensor.
     *
     * @see #TYPE_LOW_LATENCY_OFFBODY_DETECT
     */
    public static final String STRING_TYPE_LOW_LATENCY_OFFBODY_DETECT =
            "android.sensor.low_latency_offbody";

    /**
     * A constant describing an uncalibrated accelerometer sensor.
@@ -669,6 +682,7 @@ public final class Sensor {
     */
    public static final String STRING_TYPE_ACCELEROMETER_UNCALIBRATED =
            "android.sensor.accelerometer_uncalibrated";

    /**
     * A constant describing all sensor types.
     */
@@ -778,7 +792,7 @@ public final class Sensor {
            1, // SENSOR_TYPE_HEART_BEAT
            2, // SENSOR_TYPE_DYNAMIC_SENSOR_META
            16,// skip over additional sensor info type
            1, // reserving for LLOB sensor type
            1, // SENSOR_TYPE_LOW_LATENCY_OFFBODY_DETECT
            6, // SENSOR_TYPE_ACCELEROMETER_UNCALIBRATED
    };

@@ -1151,6 +1165,9 @@ public final class Sensor {
            case TYPE_DYNAMIC_SENSOR_META:
                mStringType = STRING_TYPE_DYNAMIC_SENSOR_META;
                return true;
            case TYPE_LOW_LATENCY_OFFBODY_DETECT:
                mStringType = STRING_TYPE_LOW_LATENCY_OFFBODY_DETECT;
                return true;
            case TYPE_ACCELEROMETER_UNCALIBRATED:
                mStringType = STRING_TYPE_ACCELEROMETER_UNCALIBRATED;
                return true;
+36 −0
Original line number Diff line number Diff line
@@ -564,6 +564,42 @@ public class SensorEvent {
     * completely unlikely to be anywhere else on the QRS complex.
     * </p>
     *
     * <h4>{@link android.hardware.Sensor#TYPE_LOW_LATENCY_OFFBODY_DETECT
     * Sensor.TYPE_LOW_LATENCY_OFFBODY_DETECT}:</h4>
     *
     * <p>
     * A sensor of this type returns an event every time the device transitions
     * from off-body to on-body and from on-body to off-body (e.g. a wearable
     * device being removed from the wrist would trigger an event indicating an
     * off-body transition). The event returned will contain a single value to
     * indicate off-body state:
     * </p>
     *
     * <ul>
     *  <li> values[0]: off-body state</li>
     * </ul>
     *
     * <p>
     *     Valid values for off-body state:
     * <ul>
     *  <li> 1.0 (device is on-body)</li>
     *  <li> 0.0 (device is off-body)</li>
     * </ul>
     * </p>
     *
     * <p>
     * When a sensor of this type is activated, it must deliver the initial
     * on-body or off-body event representing the current device state within
     * 5 seconds of activating the sensor.
     * </p>
     *
     * <p>
     * This sensor must be able to detect and report an on-body to off-body
     * transition within 1 second of the device being removed from the body,
     * and must be able to detect and report an off-body to on-body transition
     * within 5 seconds of the device being put back onto the body.
     * </p>
     *
     * <h4>{@link android.hardware.Sensor#TYPE_ACCELEROMETER_UNCALIBRATED
     * Sensor.TYPE_ACCELEROMETER_UNCALIBRATED}:</h4> All values are in SI
     * units (m/s^2)