当前位置:首页 > 嵌入式培训 > 嵌入式学习 > 讲师博文 >
Android传感器
时间:2018-09-28作者:华清远见

传感器概述

Android系统支持的传感器类型

与传感器相关的类和接口

监听传感器上报数据

传感器

概述 

大多数Android设备都会内置传感器,用来测量运动,旋转和环境条件(重力,温度,湿度等),这些传感器可以将采集到的高精度的数据上报给应用程序。

我们可以将传感器想成是应用程序的外延,帮助我们设计出更加丰富和多元化的应用。

我们可以通过Android框架层中的SensorManager获取当前手机内置的传感器。

 

Android系统支持的传感器类型

TYPE_ACCELEROMETER

名字:加速度传感器 

功能:测量设备在x,y,z三个方向上的加速度 

支持版本:1.5之后

TYPEAMBIENTTEMPERATURE

名字:温度传感器 

功能:测量环境温度,以摄氏度为单位 

支持版本:4.0之后 

TYPE_GRAVITY

名字:重力传感器 

功能:测量x,y,z三个方向上的重力分量 

支持版本:2.3之后 

TYPE_GYROSCOPE

名字:陀螺仪 

功能:测量在x,y,z三个方向上的旋转速率 

支持版本:2.3之后 

TYPE_LIGHT

名字:光传感器 

功能:测量环境光强 

支持版本:1.5之后 

TYPELINEARACCELERATION

名字:线性加速度传感器 

功能:测量在x,y,z三个方向上的加速度分量 

支持版本:2.3之后 

TYPEMAGNETICFIELD

名字:磁力传感器 

功能:测量在x,y,z三个方向上的磁场强度 

支持版本:1.5之后 

TYPE_ORIENTATION

名字:旋转传感器 

功能:测量在x,y,z三个方向上的旋转角度分量 

支持版本:1.5之后 

TYPE_PRESSURE

名字:压力传感器 

功能:测量气压值 

支持版本:2.3之后 

TYPE_PROXIMITY

名字:距离传感器 

功能:测量距离 

支持版本:1.5之后 

TYPERELATIVEHUMIDITY

名字:相对湿度传感器 

功能:测量环境湿度 

支持版本:4.0之后 

TYPEROTATIONVECTOR

名字:旋转向量传感器 

功能:测量旋转向量的三个元素 

支持版本:2.3之后 

TYPE_TEMPERATURE

名字:温度传感器 功能:测量设备的温度 支持版本:1.5之后

说明

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

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

注意

几乎不会有哪一个Android设备会内置以上所有的传感器。 

在一个Android设备上,可能会内置同一类型的多个传感器,比如,可能会内置两个精度不同的重力传感器。 

与传感器相关的类和接口

SensorManager

功能: 

1.获取手机内置传感器列表 

2.注册指定传感器监听器 

3.注销监听器 

Sensor

功能: 

1.用来表示一个传感器的类 

2.设置传感器的能力 

SensorEvent

功能: 

1.用来封装传感器上报数据的类

SensorEventListener

功能: 

1.用来监听传感器上报数据的监听器接口

获取内置传感器列表

//获取SensorManager SensorManager mSensorManager = (SensorManager)getSystemService(Context.SENSOR_SERVICE); //获取Sensor列表 //当传入参数为Sensor.TYPE_ALL时,表示获取所有//Sensor,也可以传入指定Sensor类型 List<Sensor> mSensorList = mSensorManager.getSensorList(Sensor.TYPE_ALL); 

监听传感器上报数据

流程

获取指定的传感器对象 

为该传感器设置监听器 

下面以光传感器为例

监听上报数据

//获取光传感器 Sensor mSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_LIGHT); //为传感器设置监听器 mSensorManager.registerListener(new SensorEventListener() { //当Sensor上报的数据发生改变时,onSensorChanged被调用,上报的数据会保存在values属性中 public void onSensorChanged(SensorEvent event) { Log.i("GetSensorList", "light = " + event.values[0]); } //当Sensor精度被改变时,onAccuracyChanged被调用 public void onAccuracyChanged(Sensor sensor, int accuracy) { } }, mSensor, SensorManager.SENSOR_DELAY_NORMAL, null); 

注销对指定Sensor的监听

//注销指定Sensor的监听 mSensorManager.unregisterListener(mSensorEventListener, mSensor); 

对于所有的传感器的使用方法都是一致的

1.获得传感器对象 

2.监听传感器上报数据 

3.注销对传感器的监听

注意

对于不同传感器,上报的数据都是保存在SensorEvent的values数组中,但是,意义会各有不同,比如:对于光传感器,只有values[0]中的数据有意义,它表示的是光强。对于加速度传感器,values[0],values[1],values[2]分别代表x,y,z三个方向上加速度的分量(查看SensorEvent类的帮助文档的说明)

练习

使用加速度传感器,控制小球在屏幕内的滚动。


发表评论

全国咨询电话:400-611-6270,双休日及节假日请致电值班手机:15010390966

在线咨询: 曹老师QQ(3337544669), 徐老师QQ(1462495461), 刘老师 QQ(3108687497)

企业培训洽谈专线:010-82600901,院校合作洽谈专线:010-82600350,在线咨询:QQ(248856300)

Copyright 2004-2018 华清远见教育集团 版权所有 ,京ICP备16055225号,京公海网安备11010802025203号