在Android2.3 gingerbread系统中,google提供了11种传感器供应用层使用。

01 #define SENSOR_TYPE_ACCELEROMETER       1 //加速度
02 #define SENSOR_TYPE_MAGNETIC_FIELD      2 //磁力
03 #define SENSOR_TYPE_ORIENTATION         3 //方向
04 #define SENSOR_TYPE_GYROSCOPE           4 //陀螺仪
05 #define SENSOR_TYPE_LIGHT               5 //光线感应
06 #define SENSOR_TYPE_PRESSURE            6 //压力
07 #define SENSOR_TYPE_TEMPERATURE         7 //温度
08 #define SENSOR_TYPE_PROXIMITY           8 //接近
09 #define SENSOR_TYPE_GRAVITY             9 //重力
10 #define SENSOR_TYPE_LINEAR_ACCELERATION 10//线性加速度
11 #define SENSOR_TYPE_ROTATION_VECTOR     11//旋转矢量

我们依次看看这十一种传感器

1 加速度传感器

加速度传感器又叫G-sensor,返回x、y、z三轴的加速度数值。

该数值包含地心引力的影响,单位是m/s^2。

将手机平放在桌面上,x轴默认为0,y轴默认0,z轴默认9.81。

将手机朝下放在桌面上,z轴为-9.81。

将手机向左倾斜,x轴为正值。

将手机向右倾斜,x轴为负值。

将手机向上倾斜,y轴为负值。

将手机向下倾斜,y轴为正值。

加速度传感器可能是最为成熟的一种mems产品,市场上的加速度传感器种类很多。

手机中常用的加速度传感器有BOSCH(博世)的BMA系列,AMK的897X系列,ST的LIS3X系列等。

这些传感器一般提供±2G至±16G的加速度测量范围,采用I2C或SPI接口和MCU相连,数据精度小于16bit。

2 磁力传感器

磁力传感器简称为M-sensor,返回x、y、z三轴的环境磁场数据。

该数值的单位是微特斯拉(micro-Tesla),用uT表示。

单位也可以是高斯(Gauss),1Tesla=10000Gauss。

硬件上一般没有独立的磁力传感器,磁力数据由电子罗盘传感器提供(E-compass)。

电子罗盘传感器同时提供下文的方向传感器数据。

3 方向传感器

方向传感器简称为O-sensor,返回三轴的角度数据,方向数据的单位是角度。

为了得到精确的角度数据,E-compass需要获取G-sensor的数据,

经过计算生产O-sensor数据,否则只能获取水平方向的角度。

方向传感器提供三个数据,分别为azimuth、pitch和roll。

azimuth:方位,返回水平时磁北极和Y轴的夹角,范围为0°至360°。

0°=北,90°=东,180°=南,270°=西。

pitch:x轴和水平面的夹角,范围为-180°至180°。

当z轴向y轴转动时,角度为正值。

roll:y轴和水平面的夹角,由于历史原因,范围为-90°至90°。

当x轴向z轴移动时,角度为正值。

电子罗盘在获取正确的数据前需要进行校准,通常可用8字校准法。

8字校准法要求用户使用需要校准的设备在空中做8字晃动,

原则上尽量多的让设备法线方向指向空间的所有8个象限。

手机中使用的电子罗盘芯片有AKM公司的897X系列,ST公司的LSM系列以及雅马哈公司等等。

由于需要读取G-sensor数据并计算出M-sensor和O-sensor数据,

因此厂商一般会提供一个后台daemon来完成工作,电子罗盘算法一般是公司私有产权。

4 陀螺仪传感器

陀螺仪传感器叫做Gyro-sensor,返回x、y、z三轴的角加速度数据。

角加速度的单位是radians/second。

根据Nexus S手机实测:

水平逆时针旋转,Z轴为正。

水平逆时针旋转,z轴为负。

向左旋转,y轴为负。

向右旋转,y轴为正。

向上旋转,x轴为负。

向下旋转,x轴为正。

ST的L3G系列的陀螺仪传感器比较流行,iphone4和google的nexus s中使用该种传感器。

5 光线感应传感器

光线感应传感器检测实时的光线强度,光强单位是lux,其物理意义是照射到单位面积上的光通量。

光线感应传感器主要用于Android系统的LCD自动亮度功能。

可以根据采样到的光强数值实时调整LCD的亮度。

6 压力传感器

压力传感器返回当前的压强,单位是百帕斯卡hectopascal(hPa)。

7 温度传感器

温度传感器返回当前的温度。

8 接近传感器

接近传感器检测物体与手机的距离,单位是厘米。

一些接近传感器只能返回远和近两个状态,

因此,接近传感器将最大距离返回远状态,小于最大距离返回近状态。

接近传感器可用于接听电话时自动关闭LCD屏幕以节省电量。

一些芯片集成了接近传感器和光线传感器两者功能。

下面三个传感器是Android2新提出的传感器类型,目前还不太清楚有哪些应用程序使用。

9 重力传感器

重力传感器简称GV-sensor,输出重力数据。

在地球上,重力数值为9.8,单位是m/s^2。

坐标系统与加速度传感器相同。

当设备复位时,重力传感器的输出与加速度传感器相同。

10 线性加速度传感器

线性加速度传感器简称LA-sensor。

线性加速度传感器是加速度传感器减去重力影响获取的数据。

单位是m/s^2,坐标系统与加速度传感器相同。

加速度传感器、重力传感器和线性加速度传感器的计算公式如下:

加速度 = 重力 + 线性加速度

11 旋转矢量传感器

旋转矢量传感器简称RV-sensor。

旋转矢量代表设备的方向,是一个将坐标轴和角度混合计算得到的数据。

RV-sensor输出三个数据:

x*sin(theta/2)

y*sin(theta/2)

z*sin(theta/2)

sin(theta/2)是RV的数量级。

RV的方向与轴旋转的方向相同。

RV的三个数值,与cos(theta/2)组成一个四元组。

RV的数据没有单位,使用的坐标系与加速度相同。

举例:

sensors_event_t.data[0] = x*sin(theta/2)
sensors_event_t.data[1] = y*sin(theta/2)
sensors_event_t.data[2] = z*sin(theta/2)
sensors_event_t.data[3] =   cos(theta/2)

GV、LA和RV的数值没有物理传感器可以直接给出,

需要G-sensor、O-sensor和Gyro-sensor经过算法计算后得出。

算法一般是传感器公司的私有产权。

参考文献:http://www.dzsc.com/data/html/2010-11-29/87454.html

android 传感器的学习相关推荐

  1. android传感器的学习

    学习懈怠了几天,有些惭愧... 说说今天的学习吧,今天主要是将我的PAD的传感器-加速度传感器 的API和其结果得到了,没办法,我的PAD只有这么一个传感器,测试得到. 话说以前有个U880,不过屏幕 ...

  2. 【转】深入探讨 Android 传感器

    Android 是一个面向应用程序开发的富平台,它拥有许多具有吸引力的用户界面元素和数据管理功能.Android 还提供了一组丰富的接口选项.在本文中,学习如何配合使用 Android 的各种传感器选 ...

  3. 《Android传感器开发与智能设备案例实战》——第1章,第1.2节Android的巨大优势...

    本节书摘来自异步社区<Android传感器开发与智能设备案例实战>一书中的第1章,第1.2节Android的巨大优势,作者 朱元波,更多章节内容可以访问云栖社区"异步社区&quo ...

  4. Android Qcom Display学习(十三)

    该系列文章总目录链接与各部分简介: Android Qcom Display学习(零) 在上一篇中dump GraphicBuffer中,知道了护眼模式中调用setColorTransform应用于每 ...

  5. Android传感器、语音识别、定位系统、Google Map API、快捷方式、widget编程总结及示例

    Android特色开发 第一部分 传感器    传感器是一种物理装置或生物器官,能够探测.感受外界的信号.物理条件(如:光.热.湿度)或化学组成(如:烟雾),并将探知的信息传递给其他设备或器官.    ...

  6. Android传感器、语音识别、定位系统、Google Map API、快捷方式、widget编程总结及示例...

    Android特色开发 第一部分 传感器 传感器是一种物理装置或生物器官,能够探测.感受外界的信号.物理条件(如:光.热.湿度)或化学组成(如:烟雾),并将探知的信息传递给其他设备或器官. Andro ...

  7. Android传感器Motion Sensor开发实验

    目录 一.实验目的 二.实验要求 三.实验原理 (一)第一次实验 1.JDK(Java Development Kit) 2.Android SDK 3.AVD(Android Virtual Dev ...

  8. 深入探讨 Android 传感器

    深入探讨 Android 传感器 随处监控您的环境 Android 是一个面向应用程序开发的富平台,它拥有许多具有吸引力的用户界面元素和数据管理功能.Android 还提供了一组丰富的接口选项.在本文 ...

  9. Android 传感器

    Android 是一个面向应用程序开发的富平台,它拥有许多具有吸引力的用户界面元素和数据管理功能.Android 还提供了一组丰富的接口选项.在本文中,学习如何配合使用 Android 的各种传感器选 ...

最新文章

  1. 利用rawcap抓包(自己发给自己的包裹)
  2. 护理方面关于人工智能的构想_如何提出惊人的AI,ML或数据科学项目构想。
  3. c语言判断字符配对,【C语言】判断花括号{}是否匹配
  4. 如何收缩超大的SharePoint_Config数据库
  5. 7-14 修建道路 (10 分)
  6. abp执行mysql语句_在ABP模板工程中使用MySql
  7. 最流行PythonWeb开发框架
  8. oracle between 和大于小于性能_2.oracle伪例+序列
  9. 面试java程序员hr问你职业规划,2022最新
  10. 对称与非对称密钥加密
  11. over()分析函数
  12. [BJOI2019] 排兵布阵
  13. python数据采集培训
  14. 华为WeAutomate RPA介绍
  15. 水星USB无线网卡mw150us苹果macOS系统驱动成功
  16. 关于大数据的视频资料
  17. java智能家居_基于JAVA的智能家居控制系统的设计(毕业设计).doc
  18. plc程序结构及其特点介绍
  19. 多任务学习中各loss权重应该如何设计?
  20. golang小案例 —— 剪子剪子包袱锤小游戏

热门文章

  1. #运算符、不同的指针类型、数组和指针、指针运算、堆、栈、静态区、只读区、下标VS指针...
  2. 一个自动化测试的案例之记事狗微博篇
  3. 汉字转换成拼音的代码(asp版)
  4. 计算机网络的定义分类性能指标,3_计算机网络分类与主要性能指标.ppt
  5. pdo mysql 事务_PHP PDO对象如何确定它是否已经存在于MySQL事务中?
  6. php服务器错误日志在哪里看,PHP取服务器错误日志
  7. sql关系数据库计算机,关系数据库语言SQL - 淮阴工学院计算机工程实验中 ….ppt...
  8. java xmpp消息推送_基于XMPP协议(openfire服务器)的消息推送实现
  9. mie散射理论方程_腾讯游戏学院专家:PBR渲染模型的理论及具体应用
  10. java中找不到javax包_logstash 找不到 java 环境