From 5f459046caf8b8ae25be83ce695eaea1bc7e73ef Mon Sep 17 00:00:00 2001
From: Eva Chen
Date: Mon, 10 Jan 2022 20:13:28 -0800
Subject: [PATCH] Add TYPE_HEADING sensor type to sensor framework.
Bug: 189983308
Test: Compiled
Change-Id: I183f176352fd6e08025647638cee35fd1600f3f0
---
core/api/current.txt | 2 ++
core/java/android/hardware/Sensor.java | 19 +++++++++++++++++++
core/java/android/hardware/SensorEvent.java | 18 ++++++++++++++++++
3 files changed, 39 insertions(+)
diff --git a/core/api/current.txt b/core/api/current.txt
index f30a6eb4fa821..37754e70ea8f9 100644
--- a/core/api/current.txt
+++ b/core/api/current.txt
@@ -16886,6 +16886,7 @@ package android.hardware {
field public static final String STRING_TYPE_GYROSCOPE_LIMITED_AXES = "android.sensor.gyroscope_limited_axes";
field public static final String STRING_TYPE_GYROSCOPE_LIMITED_AXES_UNCALIBRATED = "android.sensor.gyroscope_limited_axes_uncalibrated";
field public static final String STRING_TYPE_GYROSCOPE_UNCALIBRATED = "android.sensor.gyroscope_uncalibrated";
+ field public static final String STRING_TYPE_HEADING = "android.sensor.heading";
field public static final String STRING_TYPE_HEAD_TRACKER = "android.sensor.head_tracker";
field public static final String STRING_TYPE_HEART_BEAT = "android.sensor.heart_beat";
field public static final String STRING_TYPE_HEART_RATE = "android.sensor.heart_rate";
@@ -16921,6 +16922,7 @@ package android.hardware {
field public static final int TYPE_GYROSCOPE_LIMITED_AXES = 39; // 0x27
field public static final int TYPE_GYROSCOPE_LIMITED_AXES_UNCALIBRATED = 41; // 0x29
field public static final int TYPE_GYROSCOPE_UNCALIBRATED = 16; // 0x10
+ field public static final int TYPE_HEADING = 42; // 0x2a
field public static final int TYPE_HEAD_TRACKER = 37; // 0x25
field public static final int TYPE_HEART_BEAT = 31; // 0x1f
field public static final int TYPE_HEART_RATE = 21; // 0x15
diff --git a/core/java/android/hardware/Sensor.java b/core/java/android/hardware/Sensor.java
index 166ae451fb6dd..0d3aaf5757296 100644
--- a/core/java/android/hardware/Sensor.java
+++ b/core/java/android/hardware/Sensor.java
@@ -793,6 +793,21 @@ public final class Sensor {
public static final String STRING_TYPE_GYROSCOPE_LIMITED_AXES_UNCALIBRATED =
"android.sensor.gyroscope_limited_axes_uncalibrated";
+ /**
+ * A constant string describing a heading sensor.
+ *
+ * See {@link android.hardware.SensorEvent#values SensorEvent.values} for more details.
+ */
+ public static final int TYPE_HEADING = 42;
+
+ /**
+ * A constant string describing a heading sensor.
+ *
+ * @see #TYPE_HEADING
+ *
+ */
+ public static final String STRING_TYPE_HEADING = "android.sensor.heading";
+
/**
* A constant describing all sensor types.
*/
@@ -918,6 +933,7 @@ public final class Sensor {
6, // SENSOR_TYPE_GYROSCOPE_LIMITED_AXES
9, // SENSOR_TYPE_ACCELEROMETER_LIMITED_AXES_UNCALIBRATED
9, // SENSOR_TYPE_GYROSCOPE_LIMITED_AXES_UNCALIBRATED
+ 2, // SENSOR_TYPE_HEADING
};
/**
@@ -1385,6 +1401,9 @@ public final class Sensor {
case TYPE_GYROSCOPE_LIMITED_AXES_UNCALIBRATED:
mStringType = STRING_TYPE_GYROSCOPE_LIMITED_AXES_UNCALIBRATED;
return true;
+ case TYPE_HEADING:
+ mStringType = STRING_TYPE_HEADING;
+ return true;
default:
return false;
}
diff --git a/core/java/android/hardware/SensorEvent.java b/core/java/android/hardware/SensorEvent.java
index 7da136f73c533..45d4c09921a64 100644
--- a/core/java/android/hardware/SensorEvent.java
+++ b/core/java/android/hardware/SensorEvent.java
@@ -779,6 +779,24 @@ public class SensorEvent {
*
*
*
+ * {@link android.hardware.Sensor#TYPE_HEADING Sensor.TYPE_HEADING}:
+ *
+ * A sensor of this type measures the direction in which the device is
+ * pointing relative to true north in degrees. The value must be between
+ * 0.0 (inclusive) and 360.0 (exclusive), with 0 indicating north, 90 east,
+ * 180 south, and 270 west.
+ *
+ * Accuracy is defined at 68% confidence. In the case where the underlying
+ * distribution is assumed Gaussian normal, this would be considered one
+ * standard deviation. For example, if heading returns 60 degrees, and
+ * accuracy returns 10 degrees, then there is a 68 percent probability of
+ * the true heading being between 50 degrees and 70 degrees.
+ *
+ *
+ * - values[0]: Measured heading in degrees.
+ * - values[1]: Heading accuracy in degrees.
+ *
+ *
* @see GeomagneticField
*/
public final float[] values;