Google Android Sensor -- 002 -- 报告模式


说明:Sensor 系列文章请参考 Android Sensor。此篇搬运自 android官方网站 report-modes


报告模式

传感器可以不同的方式(称为报告模式)生成事件;每种传感器类型有且仅有一个与之关联的报告模式。共有 4 种报告模式。

连续模式


以传递给 batch 函数的 sampling_period_ns 参数所定义的恒定速率生成事件。使用连续报告模式的示例传感器有加速度计陀螺仪

变化模式


仅在测量值发生变化时生成事件。在 HAL 层激活传感器(在其上调用 activate(…, enable=1))也会触发事件,也就是说在激活变化传感器时,HAL 必须立即返回事件。使用变化报告模式的示例传感器包括计步器、近程传感器和心率传感器类型。

传递给 batch 函数的 sampling_period_ns 参数用于设置连续事件之间的最小时间间隔,也就是说不得在自上一事件后的 sampling_period _ns 纳秒内生成事件,即使值在这段时间内发生了变化也是如此。如果值发生变化,则必须在自上一事件的 sampling_period_ns 后立即生成事件。

例如,假设:

  • 我们使用 sampling_period_ns = 10 * 10^9(10 秒)激活计步器。
  • 然后步行 55 秒,再站立 1 分钟。
  • 在第一分钟,约每 10 秒生成一个事件(包括传感器激活时的 t=0 秒以及 t=60 秒),共有 7 个事件;在第二分钟,不生成任何事件,因为步数的值在 t=60 秒后没有发生变化。

(calmXia: 变化模式有两个关键点:1. HAL层激活传感器时立即返回一个事件;2. 仅在 1/sampling_period_ns 周期内测量值发生变化时生成事件。常见的传感器有:proximity sensor,step couner,heart rate sensor。)

单次模式


一检测到事件,传感器便会自行禁用,然后通过 HAL 发送单个事件。顺序非常重要,可避免出现争用情况(在通过 HAL 报告事件之前,传感器必须处于禁用状态)。重新激活传感器之前,不会发送其他任何事件。显著运动传感器(significant motion)就是这样一种传感器。

单次传感器有时称为触发传感器。

传递给 batch 函数的 sampling_period_ns 和 max_report_latency_ns 参数会被忽略。来自单次事件的事件不可存储在硬件 FIFO 中;这些事件在生成后必须立即报告。

特殊模式


有关何时生成事件的详细信息,请参阅各传感器类型说明

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值