Android开发系列 – 传感器概述与堆栈

1.Android传感器概述

Android 传感器属于虚拟设备,可提供来自以下各种物理传感器的数据:加速度计、陀螺仪、磁力计、气压计、湿度传感器、压力传感器、光传感器、近程传感器和心率传感器。

每个 Android 传感器都有一个“类型”,表示传感器的行为及其提供的数据。

(1)官方 Android 传感器类型在 sensors.h 中的 SENSOR_TYPE_ 名称下进行定义。

(2)绝大多数传感器都具有官方传感器类型。

(3)这些类型记录在 Android SDK 中。

(4)此类传感器的行为在 Android 兼容性测试套件 (CTS) 中进行测试。

(5)如果制造商在 Android 设备上集成了一种新型传感器,则可以自行定义一个临时类型来引用它。

 

2.传感器堆栈

扫描二维码关注公众号,回复: 10804292 查看本文章

下图显示了 Android 传感器堆栈。各个组件仅可与其上方和下方紧邻的组件通信,不过某些传感器可以绕过传感器中枢(如果存在)进行通信。控制信号从应用向下流向传感器,数据从传感器向上流向应用。

2.1应用

    Android应用是我们需要开发的,也是熟悉Android传感器必须学习的步骤。通过Application开发,能够快速熟悉基础的Android传感器开发。也能够自己基于各种传感器开发一些非常好的App。

 

对于学生,可以开发一些App,参加比赛,或者一些课程设计作业,非常具有特色。能够提升个人能力。

 

2.2 SDK

    熟悉基础的应用开发后,我们应该进一步深入SDK,通过看SDK源码,进一步熟悉传感器。

应用通过 Sensors SDK(软件开发套件)API 访问传感器。SDK 包含用以列出可用传感器和注册到传感器的函数。

在注册到传感器时,应用可指定自己的首选采样率和延迟要求。

例如:应用可注册到默认加速度计,以 100Hz 的频率请求事件,并允许事件报告有 1 秒延迟。应用将以至少 100Hz 的频率从加速度计接收事件,且最多会延迟 1 秒。

2.3框架

框架负责将多个应用关联到 HAL。HAL 本身是单一客户端。如果框架级别没有发生这种多路复用,则在任何指定时间内每个传感器都只能被一个应用访问。

 

(1)当第一个应用注册到传感器时,框架会向 HAL 发送请求以激活传感器。

(2)当其他应用注册到相同的传感器时,框架会考虑每个应用的要求,并将更新的已请求参数发送到 HAL。

(3)当注册到某个传感器的最后一个应用取消注册之后,框架会向 HAL 发送请求以停用该传感器,从而避免不必要的功耗。

 

 

 

2.4多路复用的影响

在框架中实现多路复用层的这一需求说明了一些设计决策的原因。

 

(1)当应用请求特定采样率时,不能保证事件不会以更快的频率到达。如果另一个应用以更快的频率请求同一传感器,则第一个应用也将以那个快的频率来接收事件。

(2)请求的最大报告延迟同样无法得到保证应用可能以比请求的延迟短的多的延迟接收事件。

 

(3)除了采样率和最大报告延迟之外,应用还无法配置传感器参数。

例,假设某个物理传感器可同时在“高精确度”和“低电耗”模式下运行。

这两种模式中只有一种可以在 Android 设备上使用,因为若非如此,一个应用可能请求高精确度模式,而另一个可能请求低电耗模式,而框架根本无法同时满足这两个应用的要求。框架必须始终能够满足所有客户端的需要,因此同时使用两种模式是不可行的。

(4)没有将数据从应用向下发送至传感器或其驱动程序的机制。这样可以确保某个应用无法修改传感器的行为,从而不会对其他应用造成破坏。

2.5传感器融合

Android 框架为部分复合传感器提供默认实现。如果设备上有陀螺仪、加速度计和磁力计,但没有旋转矢量传感器、重力传感器和线性加速度传感器,则 Android 框架会实现这些传感器,以便应用仍可以使用它们。

 

默认实现无法访问其他实现可以访问的所有数据,并且必须在 SoC 上运行,因此它不像其他实现那样精准和省电。设备制造商应尽可能定义自己的融合传感器(旋转矢量传感器、重力传感器和线性加速度传感器,以及游戏旋转矢量传感器等较新的复合传感器),而非依赖该默认实现。此外,设备制造商也可以要求传感器芯片供应商为其提供实现。

默认的传感器融合实现没有相关的维护,且可能导致依赖它的设备无法通过 CTS 验证。

 

白浪介绍:

(1)关于射频、微波、天线、无线通信、智能硬件、软件编程、渗透安全、人工智能、区块链,Java、Android、C/C++、python等综合能力的培养提升。

(2)各种学习资料、学习软件分享(仅供学生学习)。

1.扫码关注公众号(Geekxiaobai)

                                 

2. 在后台发送“Python高级编程”“Python Graphics”或者“2003”,即可免费获得电子书籍。仅供学习之用。

3. 扫码关注后,查看往期内容,会有更多资料惊喜等着你来拿哦  

  想要更多相关学习资料,可以在文章后面留言哦,后期将会根据留言需求免费分享学习资料哦。

========******=========******========******=========******==========

 

发布了42 篇原创文章 · 获赞 13 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/sunskyday/article/details/105524748
今日推荐