- 1、本文档共32页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第三十七章 传感器编程
一、概述
传感器是一种物理装置或生物器官,能够探测、感受外界的信号,如光、热、湿度、烟雾等,并将探知的信息传转换为电信号或其它形式的信息。
目前许多智能手机的硬件设备都提供了对传感器的支持,如手机设备的摆放方向、外界磁场、温度和压力等。Android的SDK提供了对这些传感器的支持, Android的应用程序能通过这些传感器获取外界环境的状态。对传感器设备的开发可以有效的提高用户体验,设计出如:指南针、水平仪等应用,传感器的开发也广泛应用于游戏,通过传感器感知玩家的动作,从而在游戏中提供对这些动作的响应。
以下将介绍Android支持的传感器、与传感器相关的类、传感器的开发步骤和应用案例。
二、传感器的类别
图1列出Android支持的传感器的种类:
传感器名称
在Sensor类中对应的常量
加速度传感器
Sensor.TYPE_ACCELEROMETER
陀螺仪传感器
Sensor.TYPE_GYROSCOPE
亮度传感器
Sensor.TYPE_LIGHT
磁场传感器
Sensor.TYPE_MAGNETIC_FIELD
方向传感器
Sensor.TYPE_ORIENTATION
压力传感器
Sensor.TYPE_PRESSURE
近程传感器
Sensor.TYPE_PROXIMITY
温度传感器
Sensor.TYPE_TEMPERATURE
Android支持的所有的传感器类型
Sensor.TYPE_ALL
图1
【提示】
不同的智能手机的硬件支持的传感器的类别不同,如有的手机不支持温度传感器,因此在这样的手机上无法实现温度的感知操作。
本章案例介绍加速度、方向、磁场这三个传感器的应用,这三种传感器绝大部分智能手机均支持。
三、Sensor类
㈠概述
表示传感器的种类,如图1所示的传感器类型在Sensro类中均用常量来表示。
㈡常用方法
int getType();
·作用:返回传感器的种类,传感器种类用图1所示的常量来表示。
·示例:int sensorType=getType();
㈢创建Sensor对象
Sensor对象需要用SensorManager类的静态方法getDefaultSensor()方法创建,并通过一个int类型的参数指明该Sensor对象代表的传感器类型,示例如下:
Sensor sensor;
sensor=mSensorManager.getDefaultSensor(
Sensor.TYPE_ACCELEROMETER);
【提示】
1、以上代码创建了代表加速度传感器的对象sensor。
2、mSensorManager是传感器管理器对象,该对象是SensorManger类,该类将在下面介绍。
四、SensorManager类
㈠概述
创建Sensor对象、设置传感器采集数据的频率、设置传感器监听事件以捕获指定类型的传感数据。
㈡创建SensorManager对象
1、示例:
SensorManager mSensorManager;
mSensorManager=(SensorManager)getSystemService(SENSOR_SERVICE);
2、说明
第一行定义了该类的一个引用型变量。
第二行调用Context类的静态方法getSystemService方法,并指定了参数为Context类的一个常量SENSOR_SERVICE,在内存的堆中创建了SensorManager类的一个对象。
㈡重要常量
图2是SensorManager类中的重要常量,这些常量代表获取数据的频率
常量名
获取数据的频率
SensorManager.SENSOR_DELAY_FASTEST
最快,该种模式耗电量大,影响程序的性能。当需要高密度采集传感器数据时,才考虑采取此方式。
SensorManager.SENSOR_DELAY_GAME
适合一般实时性要求的数据采集频率,如游戏。
SensorManager.SENSOR_DELAY_NORMAL
适合于实时性要求不高的数据采集场合。
SensorManager.SENSOR_DELAY_UI
适合普通用户界面的频率,省电、系统开销少,但延迟较大。
图2
㈢常用方法
1、Sensor getDefaultSensor(int type);
【作用】创建type值指定的传感器对象。
(type取值参见”图1 Android支持的传感器的种类”)
【示例】创建加速度传感器对象
Sensor sensor;
sensor=mSensorManager.getDefaultSensor(
Sensor.TYPE_ACCELEROMETER);
2、boolean
文档评论(0)