传感器

用于在原生代码中接收和处理传感器事件的结构体和函数。

摘要

枚举

匿名枚举 59{
  ASENSOR_TYPE_INVALID = -1,
  ASENSOR_TYPE_ACCELEROMETER = 1,
  ASENSOR_TYPE_MAGNETIC_FIELD = 2,
  ASENSOR_TYPE_GYROSCOPE = 4,
  ASENSOR_TYPE_LIGHT = 5,
  ASENSOR_TYPE_PRESSURE = 6,
  ASENSOR_TYPE_PROXIMITY = 8,
  ASENSOR_TYPE_GRAVITY = 9,
  ASENSOR_TYPE_LINEAR_ACCELERATION = 10,
  ASENSOR_TYPE_ROTATION_VECTOR = 11,
  ASENSOR_TYPE_RELATIVE_HUMIDITY = 12,
  ASENSOR_TYPE_AMBIENT_TEMPERATURE = 13,
  ASENSOR_TYPE_MAGNETIC_FIELD_UNCALIBRATED = 14,
  ASENSOR_TYPE_GAME_ROTATION_VECTOR = 15,
  ASENSOR_TYPE_GYROSCOPE_UNCALIBRATED = 16,
  ASENSOR_TYPE_SIGNIFICANT_MOTION = 17,
  ASENSOR_TYPE_STEP_DETECTOR = 18,
  ASENSOR_TYPE_STEP_COUNTER = 19,
  ASENSOR_TYPE_GEOMAGNETIC_ROTATION_VECTOR = 20,
  ASENSOR_TYPE_HEART_RATE = 21,
  ASENSOR_TYPE_POSE_6DOF = 28,
  ASENSOR_TYPE_STATIONARY_DETECT = 29,
  ASENSOR_TYPE_MOTION_DETECT = 30,
  ASENSOR_TYPE_HEART_BEAT = 31,
  ASENSOR_TYPE_DYNAMIC_SENSOR_META = 32,
  ASENSOR_TYPE_ADDITIONAL_INFO = 33,
  ASENSOR_TYPE_LOW_LATENCY_OFFBODY_DETECT = 34,
  ASENSOR_TYPE_ACCELEROMETER_UNCALIBRATED = 35,
  ASENSOR_TYPE_HINGE_ANGLE = 36,
  ASENSOR_TYPE_HEAD_TRACKER = 37,
  ASENSOR_TYPE_ACCELEROMETER_LIMITED_AXES = 38,
  ASENSOR_TYPE_GYROSCOPE_LIMITED_AXES = 39,
  ASENSOR_TYPE_ACCELEROMETER_LIMITED_AXES_UNCALIBRATED = 40,
  ASENSOR_TYPE_GYROSCOPE_LIMITED_AXES_UNCALIBRATED = 41,
  ASENSOR_TYPE_HEADING = 42
}
枚举
传感器类型。
匿名枚举 60{
  ASENSOR_STATUS_NO_CONTACT = -1,
  ASENSOR_STATUS_UNRELIABLE = 0,
  ASENSOR_STATUS_ACCURACY_LOW = 1,
  ASENSOR_STATUS_ACCURACY_MEDIUM = 2,
  ASENSOR_STATUS_ACCURACY_HIGH = 3
}
枚举
传感器精度度量。
匿名枚举 61{
  AREPORTING_MODE_INVALID = -1,
  AREPORTING_MODE_CONTINUOUS = 0,
  AREPORTING_MODE_ON_CHANGE = 1,
  AREPORTING_MODE_ONE_SHOT = 2,
  AREPORTING_MODE_SPECIAL_TRIGGER = 3
}
枚举
传感器报告模式。
匿名枚举 62{
  ASENSOR_DIRECT_RATE_STOP = 0,
  ASENSOR_DIRECT_RATE_NORMAL = 1,
  ASENSOR_DIRECT_RATE_FAST = 2,
  ASENSOR_DIRECT_RATE_VERY_FAST = 3
}
枚举
传感器直接报告速率。
匿名枚举 63{
  ASENSOR_DIRECT_CHANNEL_TYPE_SHARED_MEMORY = 1,
  ASENSOR_DIRECT_CHANNEL_TYPE_HARDWARE_BUFFER = 2
}
枚举
传感器直接通道类型。
匿名枚举 64{
  ASENSOR_ADDITIONAL_INFO_BEGIN = 0,
  ASENSOR_ADDITIONAL_INFO_END = 1,
  ASENSOR_ADDITIONAL_INFO_UNTRACKED_DELAY = 0x10000,
  ASENSOR_ADDITIONAL_INFO_INTERNAL_TEMPERATURE,
  ASENSOR_ADDITIONAL_INFO_VEC3_CALIBRATION,
  ASENSOR_ADDITIONAL_INFO_SENSOR_PLACEMENT,
  ASENSOR_ADDITIONAL_INFO_SAMPLING
}
枚举
传感器附加信息类型。

类型定义

AAdditionalInfoEvent typedef
ADynamicSensorEvent typedef
AHardwareBuffer typedef
struct AHardwareBuffer
AHeadTrackerEvent typedef
AHeadingEvent typedef
struct AHeadingEvent
AHeartRateEvent typedef
ALimitedAxesImuEvent typedef
ALimitedAxesImuUncalibratedEvent typedef
AMetaDataEvent typedef
ASensor typedef
struct ASensor
ASensor 是一种不透明类型,提供有关硬件传感器的信息。
ASensorEvent typedef
struct ASensorEvent
描述传感器事件的信息,请参阅 SensorEvent 获取更多文档。
ASensorEventQueue typedef
ASensorEventQueue 是一种不透明类型,提供从硬件传感器访问 ASensorEvent 的能力。
ASensorList typedef
ASensorRef const *
ASensorList 是指向 ASensor 的引用数组。
ASensorManager typedef
ASensorManager 是一种不透明类型,用于管理传感器和事件队列。
ASensorRef typedef
ASensor const *
ASensorRef 是一种指向 ASensor 的常量指针类型。
ASensorVector typedef
struct ASensorVector
传感器事件。
AUncalibratedEvent typedef

变量

替代方法

函数

ASensorEventQueue_disableSensor(ASensorEventQueue *queue, ASensor const *sensor)
int
禁用选定的传感器。
ASensorEventQueue_enableSensor(ASensorEventQueue *queue, ASensor const *sensor)
int
以默认采样率启用选定的传感器。
ASensorEventQueue_getEvents(ASensorEventQueue *queue, ASensorEvent *events, size_t count)
ssize_t
从传感器事件队列中检索待处理的事件。
ASensorEventQueue_hasEvents(ASensorEventQueue *queue)
int
确定传感器事件队列是否有待处理的事件。
ASensorEventQueue_registerSensor(ASensorEventQueue *queue, ASensor const *sensor, int32_t samplingPeriodUs, int64_t maxBatchReportLatencyUs)
int
使用采样和报告参数启用选定的传感器。
ASensorEventQueue_requestAdditionalInfoEvents(ASensorEventQueue *queue, bool enable)
int
请求将 ASENSOR_TYPE_ADDITIONAL_INFO 事件传送到给定的 ASensorEventQueue 上。
ASensorEventQueue_setEventRate(ASensorEventQueue *queue, ASensor const *sensor, int32_t usec)
int
为给定的传感器设置事件的传送速率(微秒)。
ASensorManager_configureDirectReport(ASensorManager *manager, ASensor const *sensor, int channelId, int rate)
int
在通道上配置直接报告。
ASensorManager_createEventQueue(ASensorManager *manager, ALooper *looper, int ident, ALooper_callbackFunc callback, void *data)
创建一个新的传感器事件队列并将其与一个 looper 关联。
ASensorManager_createHardwareBufferDirectChannel(ASensorManager *manager, AHardwareBuffer const *buffer, size_t size)
int
基于 AHardwareBuffer 创建直接通道。
ASensorManager_createSharedMemoryDirectChannel(ASensorManager *manager, int fd, size_t size)
int
基于共享内存创建直接通道。
ASensorManager_destroyDirectChannel(ASensorManager *manager, int channelId)
void
销毁直接通道。
ASensorManager_destroyEventQueue(ASensorManager *manager, ASensorEventQueue *queue)
int
销毁事件队列并释放与之关联的所有资源。
ASensorManager_getDefaultSensor(ASensorManager *manager, int type)
ASensor const *
返回给定类型的默认传感器,如果不存在该类型的传感器则返回 NULL。
ASensorManager_getDefaultSensorEx(ASensorManager *manager, int type, bool wakeUp)
ASensor const *
返回具有给定类型和唤醒属性的默认传感器,如果不存在具有此类类型和唤醒属性的传感器,则返回 NULL。
ASensorManager_getDynamicSensorList(ASensorManager *manager, ASensorList *list)
ssize_t
返回可用动态传感器的列表。
ASensorManager_getInstance() __DEPRECATED_IN(26
获取传感器管理器的引用。
ASensorManager_getInstanceForPackage(const char *packageName)
获取传感器管理器的引用。
ASensorManager_getSensorList(ASensorManager *manager, ASensorList *list)
int
返回可用传感器的列表。
ASensor_getFifoMaxEventCount(ASensor const *sensor)
int
返回此传感器的最大批次大小。
ASensor_getFifoReservedEventCount(ASensor const *sensor)
int
返回为此传感器保留的硬件批次 FIFO 大小。
ASensor_getHandle(ASensor const *sensor)
int
返回传感器的句柄。
ASensor_getHighestDirectReportRateLevel(ASensor const *sensor)
int
获取传感器支持的最高直接速率级别。
ASensor_getMinDelay(ASensor const *sensor)
int
返回事件之间的最小允许延迟(微秒)。
ASensor_getName(ASensor const *sensor)
const char *
返回此传感器的名称(非本地化)
ASensor_getReportingMode(ASensor const *sensor)
int
返回此传感器的报告模式。
ASensor_getResolution(ASensor const *sensor)
float
返回此传感器的分辨率。
ASensor_getStringType(ASensor const *sensor)
const char *
返回此传感器的字符串类型。
ASensor_getType(ASensor const *sensor)
int
返回此传感器的类型。
ASensor_getVendor(ASensor const *sensor)
const char *
返回此传感器的供应商名称(非本地化)
ASensor_isDirectChannelTypeSupported(ASensor const *sensor, int channelType)
bool
测试传感器是否支持特定类型的直接通道。
ASensor_isWakeUpSensor(ASensor const *sensor)
bool
如果这是唤醒传感器,则返回 true,否则返回 false。

结构体

AAdditionalInfoEvent
ADynamicSensorEvent
AHeadTrackerEvent
AHeadingEvent
AHeartRateEvent
ALimitedAxesImuEvent
ALimitedAxesImuUncalibratedEvent
AMetaDataEvent
ASensorEvent

描述传感器事件的信息,请参阅 SensorEvent 获取更多文档。

ASensorVector

传感器事件。

AUncalibratedEvent

枚举

匿名枚举 59

声明于 android/sensor.h
 Anonymous Enum 59

传感器类型。

有关这些类型返回数据的详细说明,请参阅 android.hardware.SensorEvent::values

属性
ASENSOR_TYPE_ACCELEROMETER

ASENSOR_TYPE_ACCELEROMETER 报告模式:连续

所有值均以 SI 单位 (m/s^2) 表示,衡量设备减去重力作用的加速度。

ASENSOR_TYPE_ACCELEROMETER_LIMITED_AXES

ASENSOR_TYPE_ACCELEROMETER_LIMITED_AXES 报告模式:连续

前三个值以 SI 单位 (m/s^2) 表示,衡量设备减去重力作用的加速度。后三个值表示支持哪些加速度轴。值为 1.0 表示支持,值为 0 表示不支持。

ASENSOR_TYPE_ACCELEROMETER_LIMITED_AXES_UNCALIBRATED

ASENSOR_TYPE_ACCELEROMETER_LIMITED_AXES_UNCALIBRATED 报告模式:连续

前三个值以 SI 单位 (m/s^2) 表示,衡量设备减去重力作用的加速度。中间三个值表示每个轴的估计偏差。后三个值表示支持哪些加速度轴。值为 1.0 表示支持,值为 0 表示不支持。

ASENSOR_TYPE_ACCELEROMETER_UNCALIBRATED

ASENSOR_TYPE_ACCELEROMETER_UNCALIBRATED

ASENSOR_TYPE_ADDITIONAL_INFO

此传感器类型用于提供传感器事件数据之外的附加传感器信息。

附加信息可能包括

此类型永远不会绑定到传感器。换句话说,传感器列表中的任何传感器都不能具有 ASENSOR_TYPE_ADDITIONAL_INFO 类型。

如果设备支持传感器附加信息功能,它将通过 ASensorEvent 报告附加信息事件,并且 ASensorEvent 的类型将被设置为 ASENSOR_TYPE_ADDITIONAL_INFOASensorEvent 的传感器将被设置为报告传感器的句柄。

附加信息报告由多个帧组成,这些帧按 ASensorEvent#timestamp 排序。报告中的第一帧的 AAdditionalInfoEvent#type 将为 ASENSOR_ADDITIONAL_INFO_BEGIN,报告中的最后一帧的 AAdditionalInfoEvent#type 将为 ASENSOR_ADDITIONAL_INFO_END

ASENSOR_TYPE_AMBIENT_TEMPERATURE

ASENSOR_TYPE_AMBIENT_TEMPERATURE

环境温度传感器值以摄氏度返回。

ASENSOR_TYPE_DYNAMIC_SENSOR_META

描述动态传感器元事件传感器的常量。

当动态传感器添加到系统或从系统中移除时,会收到此类型的传感器事件。此传感器类型应始终使用特殊的触发报告模式。

ASENSOR_TYPE_GAME_ROTATION_VECTOR

ASENSOR_TYPE_GAME_ROTATION_VECTOR

ASENSOR_TYPE_GEOMAGNETIC_ROTATION_VECTOR

ASENSOR_TYPE_GEOMAGNETIC_ROTATION_VECTOR

ASENSOR_TYPE_GRAVITY

ASENSOR_TYPE_GRAVITY

所有值均以 SI 单位 (m/s^2) 表示,衡量重力的方向和大小。当设备静止时,重力传感器的输出应与加速度计的输出相同。

ASENSOR_TYPE_GYROSCOPE

ASENSOR_TYPE_GYROSCOPE 报告模式:连续

所有值均以弧度/秒为单位,衡量绕 X、Y 和 Z 轴的旋转速率。

ASENSOR_TYPE_GYROSCOPE_LIMITED_AXES

ASENSOR_TYPE_GYROSCOPE_LIMITED_AXES 报告模式:连续

前三个值以弧度/秒为单位,衡量绕 X、Y 和 Z 轴的旋转速率。后三个值表示支持哪些旋转轴。值为 1.0 表示支持,值为 0 表示不支持。

ASENSOR_TYPE_GYROSCOPE_LIMITED_AXES_UNCALIBRATED

ASENSOR_TYPE_GYROSCOPE_LIMITED_AXES_UNCALIBRATED 报告模式:连续

前三个值以弧度/秒为单位,衡量绕 X、Y 和 Z 轴的旋转速率。中间三个值表示每个轴周围的估计漂移(单位为 rad/s)。后三个值表示支持哪些旋转轴。值为 1.0 表示支持,值为 0 表示不支持。

ASENSOR_TYPE_GYROSCOPE_UNCALIBRATED

ASENSOR_TYPE_GYROSCOPE_UNCALIBRATED

ASENSOR_TYPE_HEADING

ASENSOR_TYPE_HEADING 报告模式:连续

航向传感器测量设备相对于正北方向(以度为单位)的指向。

ASENSOR_TYPE_HEAD_TRACKER

ASENSOR_TYPE_HEAD_TRACKER 报告模式:连续

测量用户头部的方向和旋转速度。仅供 Android 系统内部使用。

ASENSOR_TYPE_HEART_BEAT

ASENSOR_TYPE_HEART_BEAT

ASENSOR_TYPE_HEART_RATE

ASENSOR_TYPE_HEART_RATE

ASENSOR_TYPE_HINGE_ANGLE

ASENSOR_TYPE_HINGE_ANGLE 报告模式:变化时

铰链角度传感器值以度返回。

ASENSOR_TYPE_INVALID

无效传感器类型。

ASensor_getType 返回作为错误值。

ASENSOR_TYPE_LIGHT

ASENSOR_TYPE_LIGHT 报告模式:变化时

光传感器值以 SI 单位勒克斯 (lux) 返回。

ASENSOR_TYPE_LINEAR_ACCELERATION

ASENSOR_TYPE_LINEAR_ACCELERATION 报告模式:连续

所有值均以 SI 单位 (m/s^2) 表示,衡量设备不包括重力作用的加速度。

ASENSOR_TYPE_LOW_LATENCY_OFFBODY_DETECT

ASENSOR_TYPE_LOW_LATENCY_OFFBODY_DETECT

ASENSOR_TYPE_MAGNETIC_FIELD

ASENSOR_TYPE_MAGNETIC_FIELD 报告模式:连续

所有值均以微特斯拉 (uT) 为单位,衡量 X、Y 和 Z 轴的地磁场。

ASENSOR_TYPE_MAGNETIC_FIELD_UNCALIBRATED

ASENSOR_TYPE_MAGNETIC_FIELD_UNCALIBRATED

ASENSOR_TYPE_MOTION_DETECT

ASENSOR_TYPE_MOTION_DETECT

ASENSOR_TYPE_POSE_6DOF

ASENSOR_TYPE_POSE_6DOF

ASENSOR_TYPE_PRESSURE

ASENSOR_TYPE_PRESSURE

压力传感器值以百帕 (毫巴) 返回。

ASENSOR_TYPE_PROXIMITY

ASENSOR_TYPE_PROXIMITY 报告模式:变化时

在通话期间关闭和重新打开屏幕的接近传感器是唤醒接近传感器。在实现非唤醒接近传感器之前,实现唤醒接近传感器。对于唤醒接近传感器,设置标志 SENSOR_FLAG_WAKE_UP。该值对应于距离最近物体的距离(以厘米为单位)。

ASENSOR_TYPE_RELATIVE_HUMIDITY

ASENSOR_TYPE_RELATIVE_HUMIDITY

相对湿度传感器值以百分比返回。

ASENSOR_TYPE_ROTATION_VECTOR

ASENSOR_TYPE_ROTATION_VECTOR

ASENSOR_TYPE_SIGNIFICANT_MOTION

ASENSOR_TYPE_SIGNIFICANT_MOTION

ASENSOR_TYPE_STATIONARY_DETECT

ASENSOR_TYPE_STATIONARY_DETECT

ASENSOR_TYPE_STEP_COUNTER

ASENSOR_TYPE_STEP_COUNTER

ASENSOR_TYPE_STEP_DETECTOR

ASENSOR_TYPE_STEP_DETECTOR

匿名枚举 60

声明于 android/sensor.h
 Anonymous Enum 60

匿名枚举 61

声明于 android/sensor.h
 Anonymous Enum 61

传感器报告模式。

属性
AREPORTING_MODE_CONTINUOUS

连续报告

AREPORTING_MODE_INVALID

无效报告模式

AREPORTING_MODE_ONE_SHOT

一次性报告

AREPORTING_MODE_ON_CHANGE

变化时报告

AREPORTING_MODE_SPECIAL_TRIGGER

特殊触发报告

匿名枚举 62

声明于 android/sensor.h
 Anonymous Enum 62

传感器直接报告速率。

属性
ASENSOR_DIRECT_RATE_FAST

标称 200Hz

ASENSOR_DIRECT_RATE_NORMAL

标称 50Hz

ASENSOR_DIRECT_RATE_STOP

停止

ASENSOR_DIRECT_RATE_VERY_FAST

标称 800Hz

匿名枚举 63

声明于 android/sensor.h
 Anonymous Enum 63

传感器直接通道类型。

属性
ASENSOR_DIRECT_CHANNEL_TYPE_HARDWARE_BUFFER

AHardwareBuffer。

ASENSOR_DIRECT_CHANNEL_TYPE_SHARED_MEMORY

由 ASharedMemory_create 创建的共享内存

匿名枚举 64

声明于 android/sensor.h
 Anonymous Enum 64

传感器附加信息类型。

用于填充 AAdditionalInfoEvent#type

属性
ASENSOR_ADDITIONAL_INFO_BEGIN

标记附加信息帧的开始。

ASENSOR_ADDITIONAL_INFO_END

标记附加信息帧的结束。

ASENSOR_ADDITIONAL_INFO_INTERNAL_TEMPERATURE

float:摄氏温度

ASENSOR_ADDITIONAL_INFO_SAMPLING

float[2]:原始采样周期(秒),采样周期的标准差

ASENSOR_ADDITIONAL_INFO_SENSOR_PLACEMENT

设备框架中传感器元件的位置和方向:原点是移动设备屏幕表面的几何中心;轴定义对应于 Android 传感器定义。

float[12]:行主序的 3x4 矩阵

ASENSOR_ADDITIONAL_INFO_UNTRACKED_DELAY

未通过传感器时间戳跟踪的延迟估计。

这包括传感器前端滤波、数据传输等引入的延迟。float[2]:延迟(秒),估计值的标准差

ASENSOR_ADDITIONAL_INFO_VEC3_CALIBRATION

齐次矩阵的前三行,表示对三元素矢量原始传感器读数的校准。

float[12]:行主序的 3x4 矩阵

类型定义

AAdditionalInfoEvent

声明于 android/sensor.h
struct AAdditionalInfoEvent AAdditionalInfoEvent

ADynamicSensorEvent

声明于 android/sensor.h
struct ADynamicSensorEvent ADynamicSensorEvent

AHardwareBuffer

声明于 android/sensor.h
struct AHardwareBuffer AHardwareBuffer

AHeadTrackerEvent

声明于 android/sensor.h
struct AHeadTrackerEvent AHeadTrackerEvent

AHeadingEvent

声明于 android/sensor.h
struct AHeadingEvent AHeadingEvent

AHeartRateEvent

声明于 android/sensor.h
struct AHeartRateEvent AHeartRateEvent

ALimitedAxesImuEvent

声明于 android/sensor.h
struct ALimitedAxesImuEvent ALimitedAxesImuEvent

ALimitedAxesImuUncalibratedEvent

声明于 android/sensor.h
struct ALimitedAxesImuUncalibratedEvent ALimitedAxesImuUncalibratedEvent

AMetaDataEvent

声明于 android/sensor.h
struct AMetaDataEvent AMetaDataEvent

ASensorEvent

声明于 android/sensor.h
struct ASensorEvent ASensorEvent

描述传感器事件的信息,请参阅 SensorEvent 获取更多文档。

注意:对此结构的更改必须向后兼容,并反映在 sensors_event_t 中。

ASensorEventQueue

声明于 android/sensor.h
struct ASensorEventQueue ASensorEventQueue

ASensorEventQueue 是一种不透明类型,提供从硬件传感器访问 ASensorEvent 的能力。

可以使用 ASensorManager_createEventQueue() 获取新的 ASensorEventQueue

此文件提供了一组函数,用于在 ASensorEventQueue 上启用和禁用传感器、检查和获取事件以及设置事件速率。

ASensorList

声明于 android/sensor.h
ASensorRef const * ASensorList

ASensorList 是指向 ASensor 的引用数组。

可以使用 ASensorManager_getSensorList() 初始化 ASensorList

ASensorManager

声明于 android/sensor.h
struct ASensorManager ASensorManager

ASensorManager 是一种不透明类型,用于管理传感器和事件队列。

ASensorManager 是一个单例,可以使用 ASensorManager_getInstance() 获取。

此文件提供了一组函数,这些函数使用 ASensorManager 来访问和列出硬件传感器,以及创建和销毁事件队列。

ASensorRef

声明于 android/sensor.h
ASensor const * ASensorRef

ASensorRef 是一种指向 ASensor 的常量指针类型。

这用于定义 ASensorList 数组中的条目。

ASensorVector

声明于 android/sensor.h
struct ASensorVector ASensorVector

传感器事件。

AUncalibratedEvent

声明于 android/sensor.h
struct AUncalibratedEvent AUncalibratedEvent

变量

替代方法

声明于 android/sensor.h
ASensorManager Use ASensorManager_getInstanceForPackage instead

函数

ASensorEventQueue_disableSensor

声明于 android/sensor.h
int ASensorEventQueue_disableSensor(
  ASensorEventQueue *queue,
  ASensor const *sensor
)

禁用选定的传感器。

停止传感器向指定的传感器事件队列报告事件。

详细信息
参数
queue
要更改的 ASensorEventQueue
sensor
要禁用的 ASensor
返回值
成功时返回 0,失败时返回负错误代码。

ASensorEventQueue_enableSensor

声明于 android/sensor.h
int ASensorEventQueue_enableSensor(
  ASensorEventQueue *queue,
  ASensor const *sensor
)

以默认采样率启用选定的传感器。

以默认速率开始传感器向指定的传感器事件队列报告事件。

详细信息
参数
queue
传感器事件报告到的 ASensorEventQueue
sensor
要启用的 ASensor
返回值
成功时返回 0,失败时返回负错误代码。

ASensorEventQueue_getEvents

声明于 android/sensor.h
ssize_t ASensorEventQueue_getEvents(
  ASensorEventQueue *queue,
  ASensorEvent *events,
  size_t count
)

从传感器事件队列中检索待处理的事件。

从队列中检索下一个可用事件到指定的事件数组。

示例

ASensorEvent event;
ssize_t numEvent = ASensorEventQueue_getEvents(queue, &event, 1);

ASensorEvent eventBuffer[8];
ssize_t numEvent = ASensorEventQueue_getEvents(queue, eventBuffer, 8);

详细信息
参数
queue
从中获取事件的 ASensorEventQueue
events
指向 ASensorEvent 数组的指针。
count
可填充到数组事件中的最大事件数。
返回值
成功时返回的事件数;没有待处理事件或发生错误时返回负错误代码。

ASensorEventQueue_hasEvents

声明于 android/sensor.h
int ASensorEventQueue_hasEvents(
  ASensorEventQueue *queue
)

确定传感器事件队列是否有待处理的事件。

详细信息
参数
queue
要查询的 ASensorEventQueue
返回值
如果队列有事件,则为 1;如果没有事件,则为 0;如果发生错误,则为负值。

ASensorEventQueue_registerSensor

声明于 android/sensor.h
int ASensorEventQueue_registerSensor(
  ASensorEventQueue *queue,
  ASensor const *sensor,
  int32_t samplingPeriodUs,
  int64_t maxBatchReportLatencyUs
)

使用采样和报告参数启用选定的传感器。

以指定的采样周期和最大批量报告延迟启用选定的传感器。要禁用传感器,请使用 ASensorEventQueue_disableSensor

详细信息
参数
queue
传感器事件报告到的 ASensorEventQueue
sensor
要启用的 ASensor
samplingPeriodUs
传感器的采样周期(1/采样率),单位为微秒。
maxBatchReportLatencyUs
传递两批传感器事件之间的最大时间间隔,单位为微秒。对于传感器流式传输,设置为 0。
返回值
成功时返回 0,失败时返回负错误代码。

ASensorEventQueue_requestAdditionalInfoEvents

声明于 android/sensor.h
int ASensorEventQueue_requestAdditionalInfoEvents(
  ASensorEventQueue *queue,
  bool enable
)

请求将 ASENSOR_TYPE_ADDITIONAL_INFO 事件传送到给定的 ASensorEventQueue 上。

传感器数据事件始终会传递到 ASensorEventQueue

ASENSOR_TYPE_ADDITIONAL_INFO 事件将通过 ASensorEventQueue_getEvents 返回。客户端负责在处理事件之前检查 ASensorEvent#type 以确定事件类型。

客户端必须能容忍 AAdditionalInfoEvent#type 的任何值,因为将来可能会定义新值并传递给客户端。

自 API 级别 29 起可用。

详细信息
参数
queue
要配置的 ASensorEventQueue
enable
true 表示请求 ASENSOR_TYPE_ADDITIONAL_INFO 事件,false 表示停止接收事件
返回值
成功时返回 0,失败时返回负错误代码。

ASensorEventQueue_setEventRate

声明于 android/sensor.h
int ASensorEventQueue_setEventRate(
  ASensorEventQueue *queue,
  ASensor const *sensor,
  int32_t usec
)

为给定的传感器设置事件的传送速率(微秒)。

此函数必须在调用 ASensorEventQueue_enableSensor 之后调用。请注意,这仅是一个提示,通常事件会以更高的速率到达。设置低于 ASensor_getMinDelay() 返回值的速率将导致错误。

详细信息
参数
queue
传感器事件将传递到的 ASensorEventQueue
sensor
要更新采样率的 ASensor
usec
传感器采样周期 (1/采样率),单位为微秒。
返回值
成功时返回 0,失败时返回负错误代码。

ASensorManager_configureDirectReport

声明于 android/sensor.h
int ASensorManager_configureDirectReport(
  ASensorManager *manager,
  ASensor const *sensor,
  int channelId,
  int rate
)

在通道上配置直接报告。

在直接通道上配置传感器直接报告:将速率设置为 ASENSOR_DIRECT_RATE_STOP 以外的值,以便传感器事件可以直接写入用于创建缓冲区的共享内存区域。成功时返回一个正令牌,可用于标识来自不同传感器的传感器事件。调用速率为 ASENSOR_DIRECT_RATE_STOP 将停止通道中指定传感器的直接报告。

要停止配置到通道的所有活动传感器直接报告,将 sensor 设置为 NULL,将 rate 设置为 ASENSOR_DIRECT_RATE_STOP

为了成功配置直接报告,传感器必须支持指定的速率和通道类型,这可以通过 ASensor_getHighestDirectReportRateLevelASensor_isDirectChannelTypeSupported 分别进行检查。

示例

ASensorManager *manager = ...;
ASensor *sensor = ...;
int channelId = ...;

ASensorManager_configureDirectReport(manager, sensor, channel_id, ASENSOR_DIRECT_RATE_FAST);

自 API 级别 26 起可用。

详细信息
参数
manager
sensor
表示要操作的 ASensor。如果速率为 ASENSOR_DIRECT_RATE_STOP,表示停止所有活动的传感器直接报告,则可以为 NULL。
channelId
rate
传感器支持的预定义 ASENSOR_DIRECT_RATE_... 之一。
返回值
成功时返回正令牌,失败时返回负错误代码。

ASensorManager_createEventQueue

声明于 android/sensor.h
ASensorEventQueue * ASensorManager_createEventQueue(
  ASensorManager *manager,
  ALooper *looper,
  int ident,
  ALooper_callbackFunc callback,
  void *data
)

创建一个新的传感器事件队列并将其与一个 looper 关联。

"ident" 是调用 ALooper_pollOnce() 时将返回的事件的标识符。如果提供非 NULL 回调,标识符必须 >= 0,或者为 ALOOPER_POLL_CALLBACK。

ASensorManager_createHardwareBufferDirectChannel

声明于 android/sensor.h
int ASensorManager_createHardwareBufferDirectChannel(
  ASensorManager *manager,
  AHardwareBuffer const *buffer,
  size_t size
)

基于 AHardwareBuffer 创建直接通道。

创建一个 ASENSOR_DIRECT_CHANNEL_TYPE_HARDWARE_BUFFER 类型的直接通道,用于配置传感器直接报告。

自 API 级别 26 起可用。

详细信息
参数
manager
buffer
size
要使用的预期大小,必须小于或等于 buffer 的大小。
返回值
作为通道 ID 的正整数,用于 ASensorManager_destroyDirectChannelASensorManager_configureDirectReport,失败时返回小于或等于 0 的值。

ASensorManager_createSharedMemoryDirectChannel

声明于 android/sensor.h
int ASensorManager_createSharedMemoryDirectChannel(
  ASensorManager *manager,
  int fd,
  size_t size
)

基于共享内存创建直接通道。

创建一个 ASENSOR_DIRECT_CHANNEL_TYPE_SHARED_MEMORY 类型的直接通道,用于配置传感器直接报告。

自 API 级别 26 起可用。

详细信息
参数
manager
fd
代表由 ASharedMemory_create 创建的共享内存的文件描述符
size
要使用的大小,必须小于或等于共享内存的大小。
返回值
作为通道 ID 的正整数,用于 ASensorManager_destroyDirectChannelASensorManager_configureDirectReport,失败时返回小于或等于 0 的值。

ASensorManager_destroyDirectChannel

声明于 android/sensor.h
void ASensorManager_destroyDirectChannel(
  ASensorManager *manager,
  int channelId
)

销毁直接通道。

销毁先前使用 ASensorManager_create*DirectChannel() 派生函数之一创建的直接通道。请注意,用于创建直接通道的缓冲区不会随 ASensorManager_destroyDirectChannel 一起销毁,必须单独关闭或释放。

自 API 级别 26 起可用。

详细信息
参数
manager
channelId

ASensorManager_destroyEventQueue

声明于 android/sensor.h
int ASensorManager_destroyEventQueue(
  ASensorManager *manager,
  ASensorEventQueue *queue
)

销毁事件队列并释放与之关联的所有资源。

ASensorManager_getDefaultSensor

声明于 android/sensor.h
ASensor const * ASensorManager_getDefaultSensor(
  ASensorManager *manager,
  int type
)

返回给定类型的默认传感器,如果不存在该类型的传感器则返回 NULL。

ASensorManager_getDefaultSensorEx

声明于 android/sensor.h
ASensor const * ASensorManager_getDefaultSensorEx(
  ASensorManager *manager,
  int type,
  bool wakeUp
)

返回具有给定类型和唤醒属性的默认传感器,如果不存在具有此类类型和唤醒属性的传感器,则返回 NULL。

自 API 级别 21 起可用。

ASensorManager_getDynamicSensorList

声明于 android/sensor.h
ssize_t ASensorManager_getDynamicSensorList(
  ASensorManager *manager,
  ASensorList *list
)

返回可用动态传感器的列表。

如果没有可用的动态传感器,则 list 中返回 nullptr。

每次调用此函数时,之前返回的列表都会被释放,不得再使用。

如果客户端从 ASENSOR_TYPE_DYNAMIC_SENSOR_META 收到表明传感器已更改的传感器更新,则应调用此函数。如果发生这种情况,则此方法先前收到的列表将过时。

自 API 级别 33 起可用。

详细信息
参数
manager
list
返回的动态传感器列表。
返回值
返回的传感器数量(正数)或负错误代码。BAD_VALUE:manager 为 NULL。

ASensorManager_getInstance

声明于 android/sensor.h
ASensorManager * ASensorManager_getInstance() __DEPRECATED_IN(26

获取传感器管理器的引用。

ASensorManager 是每个包的单例,因为不同的包可以访问不同的传感器。

已弃用:请改用 ASensorManager_getInstanceForPackage(const char*)

示例

ASensorManager* sensorManager = ASensorManager_getInstance();

ASensorManager_getInstanceForPackage

声明于 android/sensor.h
ASensorManager * ASensorManager_getInstanceForPackage(
  const char *packageName
)

获取传感器管理器的引用。

ASensorManager 是每个包的单例,因为不同的包可以访问不同的传感器。

示例

ASensorManager* sensorManager = ASensorManager_getInstanceForPackage("foo.bar.baz");

自 API 级别 26 起可用。

ASensorManager_getSensorList

声明于 android/sensor.h
int ASensorManager_getSensorList(
  ASensorManager *manager,
  ASensorList *list
)

返回可用传感器的列表。

返回的列表由传感器管理器拥有,并且在调用此函数之间不会改变。

详细信息
参数
manager
list
返回的传感器列表。
返回值
返回的传感器数量(正数)或负错误代码。BAD_VALUE:manager 为 NULL。

ASensor_getFifoMaxEventCount

声明于 android/sensor.h
int ASensor_getFifoMaxEventCount(
  ASensor const *sensor
)

返回此传感器的最大批次大小。

批量通常会较小,因为硬件 fifo 可能会被其他传感器使用。

自 API 级别 21 起可用。

ASensor_getFifoReservedEventCount

声明于 android/sensor.h
int ASensor_getFifoReservedEventCount(
  ASensor const *sensor
)

返回为此传感器保留的硬件批次 FIFO 大小。

自 API 级别 21 起可用。

ASensor_getHandle

声明于 android/sensor.h
int ASensor_getHandle(
  ASensor const *sensor
)

返回传感器的句柄。

句柄标识系统中的传感器,并包含在 ASensorEvent 的传感器字段中,包括那些发送类型为 ASENSOR_TYPE_ADDITIONAL_INFO 的事件。

传感器的句柄可用于将 ASENSOR_TYPE_ADDITIONAL_INFO 事件映射到生成事件的传感器。

需要注意的是,ASensor_getHandle 返回的值与 Java API android.hardware.Sensor 的 getId() 返回的值不同,并且它们之间不存在映射。

自 API 级别 29 起可用。

ASensor_getHighestDirectReportRateLevel

声明于 android/sensor.h
int ASensor_getHighestDirectReportRateLevel(
  ASensor const *sensor
)

获取传感器支持的最高直接速率级别。

自 API 级别 26 起可用。

详细信息
参数
sensor
表示要检查的 ASensor
返回值
表示传感器支持的最高速率级别的 ASENSOR_DIRECT_RATE_... 枚举。如果返回值为 ASENSOR_DIRECT_RATE_STOP,则表示传感器不支持直接报告。

ASensor_getMinDelay

声明于 android/sensor.h
int ASensor_getMinDelay(
  ASensor const *sensor
)

返回事件之间的最小允许延迟(微秒)。

值为零表示此传感器不会以恒定速率报告事件,而仅在有新数据可用时报告。

ASensor_getName

声明于 android/sensor.h
const char * ASensor_getName(
  ASensor const *sensor
)

返回此传感器的名称(非本地化)

ASensor_getReportingMode

声明于 android/sensor.h
int ASensor_getReportingMode(
  ASensor const *sensor
)

返回此传感器的报告模式。

AREPORTING_MODE_* 常量之一。

自 API 级别 21 起可用。

ASensor_getResolution

声明于 android/sensor.h
float ASensor_getResolution(
  ASensor const *sensor
)

返回此传感器的分辨率。

ASensor_getStringType

声明于 android/sensor.h
const char * ASensor_getStringType(
  ASensor const *sensor
)

返回此传感器的字符串类型。

自 API 级别 21 起可用。

ASensor_getType

声明于 android/sensor.h
int ASensor_getType(
  ASensor const *sensor
)

返回此传感器的类型。

ASensor_getVendor

声明于 android/sensor.h
const char * ASensor_getVendor(
  ASensor const *sensor
)

返回此传感器的供应商名称(非本地化)

ASensor_isDirectChannelTypeSupported

声明于 android/sensor.h
bool ASensor_isDirectChannelTypeSupported(
  ASensor const *sensor,
  int channelType
)

测试传感器是否支持特定类型的直接通道。

自 API 级别 26 起可用。

详细信息
参数
sensor
表示要检查的 ASensor
channelType
返回值
如果传感器支持指定的直接通道类型,则为 true。

ASensor_isWakeUpSensor

声明于 android/sensor.h
bool ASensor_isWakeUpSensor(
  ASensor const *sensor
)

如果这是唤醒传感器,则返回 true,否则返回 false。

自 API 级别 21 起可用。