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

Commit 7f4cb5df authored by Peng Xu's avatar Peng Xu Committed by android-build-merger
Browse files

Merge "Fix a few known issue in sensor framework" into nyc-dev am: 3dd991d1

am: bdad7a48

* commit 'bdad7a48':
  Fix a few known issue in sensor framework

Change-Id: Ie66c302f53b3b16bf28ac37c8652b08db9bb25e6
parents 72845718 bdad7a48
Loading
Loading
Loading
Loading
+9 −6
Original line number Original line Diff line number Diff line
@@ -13506,6 +13506,7 @@ package android.hardware {
  public final class Sensor {
  public final class Sensor {
    method public int getFifoMaxEventCount();
    method public int getFifoMaxEventCount();
    method public int getFifoReservedEventCount();
    method public int getFifoReservedEventCount();
    method public int getId();
    method public int getMaxDelay();
    method public int getMaxDelay();
    method public float getMaximumRange();
    method public float getMaximumRange();
    method public int getMinDelay();
    method public int getMinDelay();
@@ -13515,9 +13516,10 @@ package android.hardware {
    method public float getResolution();
    method public float getResolution();
    method public java.lang.String getStringType();
    method public java.lang.String getStringType();
    method public int getType();
    method public int getType();
    method public java.util.UUID getUuid();
    method public java.lang.String getVendor();
    method public java.lang.String getVendor();
    method public int getVersion();
    method public int getVersion();
    method public boolean isAdditionalInfoSupported();
    method public boolean isDynamicSensor();
    method public boolean isWakeUpSensor();
    method public boolean isWakeUpSensor();
    field public static final int REPORTING_MODE_CONTINUOUS = 0; // 0x0
    field public static final int REPORTING_MODE_CONTINUOUS = 0; // 0x0
    field public static final int REPORTING_MODE_ONE_SHOT = 2; // 0x2
    field public static final int REPORTING_MODE_ONE_SHOT = 2; // 0x2
@@ -13636,8 +13638,9 @@ package android.hardware {
    method public static void getRotationMatrixFromVector(float[], float[]);
    method public static void getRotationMatrixFromVector(float[], float[]);
    method public java.util.List<android.hardware.Sensor> getSensorList(int);
    method public java.util.List<android.hardware.Sensor> getSensorList(int);
    method public deprecated int getSensors();
    method public deprecated int getSensors();
    method public void registerDynamicSensorCallback(android.hardware.SensorManager.DynamicSensorConnectionCallback);
    method public boolean isDynamicSensorDiscoverySupported();
    method public void registerDynamicSensorCallback(android.hardware.SensorManager.DynamicSensorConnectionCallback, android.os.Handler);
    method public void registerDynamicSensorCallback(android.hardware.SensorManager.DynamicSensorCallback);
    method public void registerDynamicSensorCallback(android.hardware.SensorManager.DynamicSensorCallback, android.os.Handler);
    method public deprecated boolean registerListener(android.hardware.SensorListener, int);
    method public deprecated boolean registerListener(android.hardware.SensorListener, int);
    method public deprecated boolean registerListener(android.hardware.SensorListener, int, int);
    method public deprecated boolean registerListener(android.hardware.SensorListener, int, int);
    method public boolean registerListener(android.hardware.SensorEventListener, android.hardware.Sensor, int);
    method public boolean registerListener(android.hardware.SensorEventListener, android.hardware.Sensor, int);
@@ -13646,7 +13649,7 @@ package android.hardware {
    method public boolean registerListener(android.hardware.SensorEventListener, android.hardware.Sensor, int, int, android.os.Handler);
    method public boolean registerListener(android.hardware.SensorEventListener, android.hardware.Sensor, int, int, android.os.Handler);
    method public static boolean remapCoordinateSystem(float[], int, int, float[]);
    method public static boolean remapCoordinateSystem(float[], int, int, float[]);
    method public boolean requestTriggerSensor(android.hardware.TriggerEventListener, android.hardware.Sensor);
    method public boolean requestTriggerSensor(android.hardware.TriggerEventListener, android.hardware.Sensor);
    method public void unregisterDynamicSensorCallback(android.hardware.SensorManager.DynamicSensorConnectionCallback);
    method public void unregisterDynamicSensorCallback(android.hardware.SensorManager.DynamicSensorCallback);
    method public deprecated void unregisterListener(android.hardware.SensorListener);
    method public deprecated void unregisterListener(android.hardware.SensorListener);
    method public deprecated void unregisterListener(android.hardware.SensorListener, int);
    method public deprecated void unregisterListener(android.hardware.SensorListener, int);
    method public void unregisterListener(android.hardware.SensorEventListener, android.hardware.Sensor);
    method public void unregisterListener(android.hardware.SensorEventListener, android.hardware.Sensor);
@@ -13711,8 +13714,8 @@ package android.hardware {
    field public static final float STANDARD_GRAVITY = 9.80665f;
    field public static final float STANDARD_GRAVITY = 9.80665f;
  }
  }
  public static abstract class SensorManager.DynamicSensorConnectionCallback {
  public static abstract class SensorManager.DynamicSensorCallback {
    ctor public SensorManager.DynamicSensorConnectionCallback();
    ctor public SensorManager.DynamicSensorCallback();
    method public void onDynamicSensorConnected(android.hardware.Sensor);
    method public void onDynamicSensorConnected(android.hardware.Sensor);
    method public void onDynamicSensorDisconnected(android.hardware.Sensor);
    method public void onDynamicSensorDisconnected(android.hardware.Sensor);
  }
  }
+9 −5
Original line number Original line Diff line number Diff line
@@ -13905,6 +13905,7 @@ package android.hardware {
  public final class Sensor {
  public final class Sensor {
    method public int getFifoMaxEventCount();
    method public int getFifoMaxEventCount();
    method public int getFifoReservedEventCount();
    method public int getFifoReservedEventCount();
    method public int getId();
    method public int getMaxDelay();
    method public int getMaxDelay();
    method public float getMaximumRange();
    method public float getMaximumRange();
    method public int getMinDelay();
    method public int getMinDelay();
@@ -13917,7 +13918,9 @@ package android.hardware {
    method public java.util.UUID getUuid();
    method public java.util.UUID getUuid();
    method public java.lang.String getVendor();
    method public java.lang.String getVendor();
    method public int getVersion();
    method public int getVersion();
    method public boolean isAdditionalInfoSupported();
    method public boolean isDataInjectionSupported();
    method public boolean isDataInjectionSupported();
    method public boolean isDynamicSensor();
    method public boolean isWakeUpSensor();
    method public boolean isWakeUpSensor();
    field public static final int REPORTING_MODE_CONTINUOUS = 0; // 0x0
    field public static final int REPORTING_MODE_CONTINUOUS = 0; // 0x0
    field public static final int REPORTING_MODE_ONE_SHOT = 2; // 0x2
    field public static final int REPORTING_MODE_ONE_SHOT = 2; // 0x2
@@ -14042,8 +14045,9 @@ package android.hardware {
    method public deprecated int getSensors();
    method public deprecated int getSensors();
    method public boolean initDataInjection(boolean);
    method public boolean initDataInjection(boolean);
    method public boolean injectSensorData(android.hardware.Sensor, float[], int, long);
    method public boolean injectSensorData(android.hardware.Sensor, float[], int, long);
    method public void registerDynamicSensorCallback(android.hardware.SensorManager.DynamicSensorConnectionCallback);
    method public boolean isDynamicSensorDiscoverySupported();
    method public void registerDynamicSensorCallback(android.hardware.SensorManager.DynamicSensorConnectionCallback, android.os.Handler);
    method public void registerDynamicSensorCallback(android.hardware.SensorManager.DynamicSensorCallback);
    method public void registerDynamicSensorCallback(android.hardware.SensorManager.DynamicSensorCallback, android.os.Handler);
    method public deprecated boolean registerListener(android.hardware.SensorListener, int);
    method public deprecated boolean registerListener(android.hardware.SensorListener, int);
    method public deprecated boolean registerListener(android.hardware.SensorListener, int, int);
    method public deprecated boolean registerListener(android.hardware.SensorListener, int, int);
    method public boolean registerListener(android.hardware.SensorEventListener, android.hardware.Sensor, int);
    method public boolean registerListener(android.hardware.SensorEventListener, android.hardware.Sensor, int);
@@ -14052,7 +14056,7 @@ package android.hardware {
    method public boolean registerListener(android.hardware.SensorEventListener, android.hardware.Sensor, int, int, android.os.Handler);
    method public boolean registerListener(android.hardware.SensorEventListener, android.hardware.Sensor, int, int, android.os.Handler);
    method public static boolean remapCoordinateSystem(float[], int, int, float[]);
    method public static boolean remapCoordinateSystem(float[], int, int, float[]);
    method public boolean requestTriggerSensor(android.hardware.TriggerEventListener, android.hardware.Sensor);
    method public boolean requestTriggerSensor(android.hardware.TriggerEventListener, android.hardware.Sensor);
    method public void unregisterDynamicSensorCallback(android.hardware.SensorManager.DynamicSensorConnectionCallback);
    method public void unregisterDynamicSensorCallback(android.hardware.SensorManager.DynamicSensorCallback);
    method public deprecated void unregisterListener(android.hardware.SensorListener);
    method public deprecated void unregisterListener(android.hardware.SensorListener);
    method public deprecated void unregisterListener(android.hardware.SensorListener, int);
    method public deprecated void unregisterListener(android.hardware.SensorListener, int);
    method public void unregisterListener(android.hardware.SensorEventListener, android.hardware.Sensor);
    method public void unregisterListener(android.hardware.SensorEventListener, android.hardware.Sensor);
@@ -14117,8 +14121,8 @@ package android.hardware {
    field public static final float STANDARD_GRAVITY = 9.80665f;
    field public static final float STANDARD_GRAVITY = 9.80665f;
  }
  }
  public static abstract class SensorManager.DynamicSensorConnectionCallback {
  public static abstract class SensorManager.DynamicSensorCallback {
    ctor public SensorManager.DynamicSensorConnectionCallback();
    ctor public SensorManager.DynamicSensorCallback();
    method public void onDynamicSensorConnected(android.hardware.Sensor);
    method public void onDynamicSensorConnected(android.hardware.Sensor);
    method public void onDynamicSensorDisconnected(android.hardware.Sensor);
    method public void onDynamicSensorDisconnected(android.hardware.Sensor);
  }
  }
+9 −6
Original line number Original line Diff line number Diff line
@@ -13516,6 +13516,7 @@ package android.hardware {
  public final class Sensor {
  public final class Sensor {
    method public int getFifoMaxEventCount();
    method public int getFifoMaxEventCount();
    method public int getFifoReservedEventCount();
    method public int getFifoReservedEventCount();
    method public int getId();
    method public int getMaxDelay();
    method public int getMaxDelay();
    method public float getMaximumRange();
    method public float getMaximumRange();
    method public int getMinDelay();
    method public int getMinDelay();
@@ -13525,9 +13526,10 @@ package android.hardware {
    method public float getResolution();
    method public float getResolution();
    method public java.lang.String getStringType();
    method public java.lang.String getStringType();
    method public int getType();
    method public int getType();
    method public java.util.UUID getUuid();
    method public java.lang.String getVendor();
    method public java.lang.String getVendor();
    method public int getVersion();
    method public int getVersion();
    method public boolean isAdditionalInfoSupported();
    method public boolean isDynamicSensor();
    method public boolean isWakeUpSensor();
    method public boolean isWakeUpSensor();
    field public static final int REPORTING_MODE_CONTINUOUS = 0; // 0x0
    field public static final int REPORTING_MODE_CONTINUOUS = 0; // 0x0
    field public static final int REPORTING_MODE_ONE_SHOT = 2; // 0x2
    field public static final int REPORTING_MODE_ONE_SHOT = 2; // 0x2
@@ -13646,8 +13648,9 @@ package android.hardware {
    method public static void getRotationMatrixFromVector(float[], float[]);
    method public static void getRotationMatrixFromVector(float[], float[]);
    method public java.util.List<android.hardware.Sensor> getSensorList(int);
    method public java.util.List<android.hardware.Sensor> getSensorList(int);
    method public deprecated int getSensors();
    method public deprecated int getSensors();
    method public void registerDynamicSensorCallback(android.hardware.SensorManager.DynamicSensorConnectionCallback);
    method public boolean isDynamicSensorDiscoverySupported();
    method public void registerDynamicSensorCallback(android.hardware.SensorManager.DynamicSensorConnectionCallback, android.os.Handler);
    method public void registerDynamicSensorCallback(android.hardware.SensorManager.DynamicSensorCallback);
    method public void registerDynamicSensorCallback(android.hardware.SensorManager.DynamicSensorCallback, android.os.Handler);
    method public deprecated boolean registerListener(android.hardware.SensorListener, int);
    method public deprecated boolean registerListener(android.hardware.SensorListener, int);
    method public deprecated boolean registerListener(android.hardware.SensorListener, int, int);
    method public deprecated boolean registerListener(android.hardware.SensorListener, int, int);
    method public boolean registerListener(android.hardware.SensorEventListener, android.hardware.Sensor, int);
    method public boolean registerListener(android.hardware.SensorEventListener, android.hardware.Sensor, int);
@@ -13656,7 +13659,7 @@ package android.hardware {
    method public boolean registerListener(android.hardware.SensorEventListener, android.hardware.Sensor, int, int, android.os.Handler);
    method public boolean registerListener(android.hardware.SensorEventListener, android.hardware.Sensor, int, int, android.os.Handler);
    method public static boolean remapCoordinateSystem(float[], int, int, float[]);
    method public static boolean remapCoordinateSystem(float[], int, int, float[]);
    method public boolean requestTriggerSensor(android.hardware.TriggerEventListener, android.hardware.Sensor);
    method public boolean requestTriggerSensor(android.hardware.TriggerEventListener, android.hardware.Sensor);
    method public void unregisterDynamicSensorCallback(android.hardware.SensorManager.DynamicSensorConnectionCallback);
    method public void unregisterDynamicSensorCallback(android.hardware.SensorManager.DynamicSensorCallback);
    method public deprecated void unregisterListener(android.hardware.SensorListener);
    method public deprecated void unregisterListener(android.hardware.SensorListener);
    method public deprecated void unregisterListener(android.hardware.SensorListener, int);
    method public deprecated void unregisterListener(android.hardware.SensorListener, int);
    method public void unregisterListener(android.hardware.SensorEventListener, android.hardware.Sensor);
    method public void unregisterListener(android.hardware.SensorEventListener, android.hardware.Sensor);
@@ -13721,8 +13724,8 @@ package android.hardware {
    field public static final float STANDARD_GRAVITY = 9.80665f;
    field public static final float STANDARD_GRAVITY = 9.80665f;
  }
  }
  public static abstract class SensorManager.DynamicSensorConnectionCallback {
  public static abstract class SensorManager.DynamicSensorCallback {
    ctor public SensorManager.DynamicSensorConnectionCallback();
    ctor public SensorManager.DynamicSensorCallback();
    method public void onDynamicSensorConnected(android.hardware.Sensor);
    method public void onDynamicSensorConnected(android.hardware.Sensor);
    method public void onDynamicSensorDisconnected(android.hardware.Sensor);
    method public void onDynamicSensorDisconnected(android.hardware.Sensor);
  }
  }
+71 −15
Original line number Original line Diff line number Diff line
@@ -431,7 +431,7 @@ public final class Sensor {
     * A constant string describing a wake up tilt detector sensor type.
     * A constant string describing a wake up tilt detector sensor type.
     *
     *
     * @hide
     * @hide
     * @see #TYPE_WAKE_UP_TILT_DETECTOR
     * @see #TYPE_TILT_DETECTOR
     */
     */
    public static final String SENSOR_STRING_TYPE_TILT_DETECTOR =
    public static final String SENSOR_STRING_TYPE_TILT_DETECTOR =
            "android.sensor.tilt_detector";
            "android.sensor.tilt_detector";
@@ -706,6 +706,14 @@ public final class Sensor {
    private static final int DATA_INJECTION_MASK = 0x10;
    private static final int DATA_INJECTION_MASK = 0x10;
    private static final int DATA_INJECTION_SHIFT = 4;
    private static final int DATA_INJECTION_SHIFT = 4;


    // MASK for dynamic sensor (sensor that added during runtime), bit 6.
    private static final int DYNAMIC_SENSOR_MASK = 0x20;
    private static final int DYNAMIC_SENSOR_SHIFT = 5;

    // MASK for indication bit of sensor additional information support (bit 7).
    private static final int ADDITIONAL_INFO_MASK = 0x40;
    private static final int ADDITIONAL_INFO_SHIFT = 6;

    // TODO(): The following arrays are fragile and error-prone. This needs to be refactored.
    // TODO(): The following arrays are fragile and error-prone. This needs to be refactored.


    // Note: This needs to be updated, whenever a new sensor is added.
    // Note: This needs to be updated, whenever a new sensor is added.
@@ -887,12 +895,36 @@ public final class Sensor {
    }
    }


    /**
    /**
     * @return The type of this sensor as a string.
     * @return The UUID of the sensor. If the sensor does not support UUID, the returned value will
     * be an all zero UUID; if the sensor's combination of type and name is guaranteed to be unique
     * in system, the return value will be an all "F" UUID.
     *
     * @hide
     */
     */
    @SystemApi
    public UUID getUuid() {
    public UUID getUuid() {
        return mUuid;
        return mUuid;
    }
    }


    /**
     * @return The unique id of sensor. Return value of 0 means this sensor does not support UUID;
     * return value of -1 means this sensor can be uniquely identified in system by combination of
     * its type and name.
     */
    public int getId() {
        if (mUuid == ALL_0_UUID) {
            return 0;
        } else if (mUuid == ALL_F_UUID) {
            return -1;
        } else {
            int id = Math.abs(mUuid.hashCode()) + 1;
            if (id <= 0) { // catch corner case when hash is Integer.MIN_VALUE and Integer.MAX_VALUE
                id = 1;
            }
            return id;
        }
    }

    /**
    /**
     * @hide
     * @hide
     * @return The permission required to access this sensor. If empty, no permission is required.
     * @return The permission required to access this sensor. If empty, no permission is required.
@@ -960,6 +992,26 @@ public final class Sensor {
        return (mFlags & SENSOR_FLAG_WAKE_UP_SENSOR) != 0;
        return (mFlags & SENSOR_FLAG_WAKE_UP_SENSOR) != 0;
    }
    }


    /**
     * Returns true if the sensor is a dynamic sensor.
     *
     * @return <code>true</code> if the sensor is a dynamic sensor (sensor added at runtime).
     * @see SensorManager.DynamicSensorCallback
     */
    public boolean isDynamicSensor() {
        return (mFlags & DYNAMIC_SENSOR_MASK) != 0;
    }

    /**
     * Returns true if the sensor supports sensor additional information API
     *
     * @return <code>true</code> if the sensor supports sensor additional information API
     * @see SensorAdditionalInfo
     */
    public boolean isAdditionalInfoSupported() {
        return (mFlags & ADDITIONAL_INFO_MASK) != 0;
    }

    /**
    /**
     * Returns true if the sensor supports data injection when the
     * Returns true if the sensor supports data injection when the
     * HAL is set to data injection mode.
     * HAL is set to data injection mode.
@@ -986,6 +1038,10 @@ public final class Sensor {
                + ", power=" + mPower + ", minDelay=" + mMinDelay + "}";
                + ", power=" + mPower + ", minDelay=" + mMinDelay + "}";
    }
    }


    //special UUID hash constant
    private final static UUID ALL_0_UUID = new UUID(0,0);
    private final static UUID ALL_F_UUID = new UUID(~0L, ~0L);

    /**
    /**
     * Sets the Type associated with the sensor.
     * Sets the Type associated with the sensor.
     * NOTE: to be used only by native bindings in SensorManager.
     * NOTE: to be used only by native bindings in SensorManager.
+2 −2
Original line number Original line Diff line number Diff line
@@ -27,7 +27,7 @@ import java.lang.annotation.RetentionPolicy;
 * android.hardware.SensorEventCallback#onSensorAdditionalInfo onSensorAdditionalInfo}.
 * android.hardware.SensorEventCallback#onSensorAdditionalInfo onSensorAdditionalInfo}.
 *
 *
 * @see SensorManager
 * @see SensorManager
 * @see SensorEventListener3
 * @see SensorEventCallback
 * @see Sensor
 * @see Sensor
 *
 *
 */
 */
@@ -106,7 +106,7 @@ public class SensorAdditionalInfo {
     * such as accelerometer, gyro, etc.
     * such as accelerometer, gyro, etc.
     *
     *
     * Payload:
     * Payload:
     *     floatValues[0..11]: First 3 rows of a homogenous matrix in row major order that captures
     *     floatValues[0..11]: First 3 rows of a homogeneous matrix in row major order that captures
     *     any linear transformation, including rotation, scaling, shear, shift.
     *     any linear transformation, including rotation, scaling, shear, shift.
     */
     */
    public static final int TYPE_VEC3_CALIBRATION = 0x10002;
    public static final int TYPE_VEC3_CALIBRATION = 0x10002;
Loading