基于安卓平台的程序设计:传感器应用_第1页
基于安卓平台的程序设计:传感器应用_第2页
基于安卓平台的程序设计:传感器应用_第3页
基于安卓平台的程序设计:传感器应用_第4页
基于安卓平台的程序设计:传感器应用_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1. 开发传感器应用用Context的 getSystemService (Context.SENSOR_SERVICE)获取SensorManager对象。用SenserManager对象的 getDefaultSensor(int type)获取指定类型的传感器在Activity的 onResume中调用SensorManager的registerListener()为指定传感器注册监听器1. 开发传感器应用SensorManager 的registerListener(SensorEventListener ,Sensor sensor, int rate);rate: 获取传感器数据的

2、频率SensorManager.SENSOR_DELAY_FASTESTSensorManager.SENSOR_DELAY_GAMESensorManager.SENSOR_DELAY_NORMALSensorManager.SENSOR_DELAY_UI1. 开发传感器应用1) 加速度传感器:返回三个方向上的加速度 ,单位m/s21) 方向传感器:返回3个角度:手机顶部和正北的夹角手机顶部或尾部翘起的角度 手机侧面翘起的角度2) 磁场传感器:返回三个数据x,y,z三个方向上的磁场分量。单位 :uT3) 温度传感器:单位:摄氏度4) 光传感器:单位 勒克斯5)压力传感器:1.1 加速传感器

3、P548, AccelerometerText1.1 加速传感器 P548, AccelerometerTextpublic class AccelerometerTest extends Activityimplements SensorEventListener/ 定义系统的Sensor管理器SensorManager sensorManager;EditText etTxt1;Overridepublic void onCreate(Bundle savedInstanceState)super.onCreate(savedInstanceState);setContentView(R.

4、layout.main);/ 获取程序界面上的文本框组件etTxt1 = (EditText) findViewById(R.id.txt1);/ 获取系统的传感器管理服务sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);Overrideprotected void onResume()super.onResume();/ 为系统的加速度传感器注册监听器sensorManager.registerListener(this,sensorManager.getDefaultSensor(Sensor.

5、TYPE_ACCELEROMETER),SensorManager.SENSOR_DELAY_GAME);Overrideprotected void onStop()/ 取消注册sensorManager.unregisterListener(this);super.onStop();/ 以下是实现SensorEventListener接口必须实现的方法/ 当传感器的值发生改变时回调该方法Overridepublic void onSensorChanged(SensorEvent event) float values = event.values;StringBuilder sb = n

6、ew StringBuilder();sb.append(“X方向上的加速度:”); / 单位: m/s2sb.append(values0);sb.append(nY方向上的加速度:);sb.append(values1);sb.append(nZ方向上的加速度:);sb.append(values2);etTxt1.setText(sb.toString();/ 当传感器精度改变时回调该方法。Overridepublic void onAccuracyChanged(Sensor sensor, int accuracy) 1.2 各种传感器实例 P555,SensorSimulator要

7、去掉 .classpath文件中的:public class SensorSimulatorTest extends Activityimplements SensorEventListener private SensorManager mSensorManager;EditText etOrientation; EditText etMagnetic;EditText etTemerature;EditText etLight;EditText etPressure;Overridepublic void onCreate(Bundle savedInstanceState)super.o

8、nCreate(savedInstanceState);setContentView(R.layout.main);/ 获取界面上的EditText组件etOrientation = (EditText) findViewById(R.id.etOrientation);etMagnetic = (EditText) findViewById(R.id.etMagnetic);etTemerature = (EditText) findViewById(R.id.etTemerature);etLight = (EditText) findViewById(R.id.etLight);etPr

9、essure = (EditText) findViewById(R.id.etPressure); mSensorManager = (SensorManager)getSystemService(SENSOR_SERVICE);Overrideprotected void onResume()super.onResume();/ 为系统的方向传感器注册监听器mSensorManager.registerListener(this,mSensorManager.getDefaultSensor(Sensor.TYPE_ORIENTATION),SensorManager.SENSOR_DEL

10、AY_GAME);/ 为系统的磁场传感器注册监听器mSensorManager.registerListener(this,mSensorManager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD),SensorManager.SENSOR_DELAY_GAME);/ 为系统的温度传感器注册监听器mSensorManager.registerListener(this,mSensorManager.getDefaultSensor(Sensor.TYPE_TEMPERATURE),SensorManager.SENSOR_DELAY_GAME);/

11、为系统的光传感器注册监听器mSensorManager.registerListener(this,mSensorManager.getDefaultSensor(Sensor.TYPE_LIGHT),SensorManager.SENSOR_DELAY_GAME);/ 为系统的压力传感器注册监听器mSensorManager.registerListener(this,mSensorManager.getDefaultSensor(Sensor.TYPE_PRESSURE),SensorManager.SENSOR_DELAY_GAME);Overrideprotected void onS

12、top()/ 程序退出时取消注册传感器监听器mSensorManager.unregisterListener(this);super.onStop();Overrideprotected void onPause()/ 程序暂停时取消注册传感器监听器mSensorManager.unregisterListener(this);super.onPause();/ 以下是实现SensorEventListener接口必须实现的方法Override/ 当传感器精度改变时回调该方法。public void onAccuracyChanged(Sensor sensor, int accuracy)

13、 Overridepublic void onSensorChanged(SensorEvent event) float values = event.values;/ / 真机上获取触发event的传感器类型 int sensorType = event.sensor.getType();StringBuilder sb = null;/ 判断是哪个传感器发生改变switch (sensorType) / 方向传感器case Sensor.TYPE_ORIENTATION:sb = new StringBuilder();sb.append(绕Z轴转过的角度:);sb.append(val

14、ues0);sb.append(n绕X轴转过的角度:);sb.append(values1);sb.append(n绕Y轴转过的角度:);sb.append(values2);etOrientation.setText(sb.toString();break;/ 磁场传感器case Sensor.TYPE_MAGNETIC_FIELD:sb = new StringBuilder();sb.append(X方向上的角度:);sb.append(values0);sb.append(nY方向上的角度:);sb.append(values1);sb.append(nZ方向上的角度:);sb.app

15、end(values2);etMagnetic.setText(sb.toString();break;/ 温度传感器case Sensor.TYPE_TEMPERATURE:sb = new StringBuilder();sb.append(当前温度为:);sb.append(values0);etTemerature.setText(sb.toString();break;/ 光传感器case Sensor.TYPE_LIGHT:sb = new StringBuilder();sb.append(当前光的强度为:);sb.append(values0);etLight.setText(

16、sb.toString();break;/ 压力传感器case Sensor.TYPE_PRESSURE:sb = new StringBuilder();sb.append(当前压力为:);sb.append(values0);etPressure.setText(sb.toString();break;1.3 指南针 P558 Compasspublic class Compass extends Activityimplements SensorEventListener/ 定义显示指南针的图片ImageView znzImage;/ 记录指南针图片转过的角度float currentD

17、egree = 0f; / 定义真机的Sensor管理器SensorManager mSensorManager;Overridepublic void onCreate(Bundle savedInstanceState)super.onCreate(savedInstanceState);setContentView(R.layout.main);/ 获取界面中显示指南针的图片znzImage = (ImageView) findViewById(R.id.znzImage); / 获取真机的传感器管理服务 mSensorManager = (SensorManager)getSystem

18、Service(SENSOR_SERVICE);/ 获取传感器模拟器的传感器管理服务/mSensorManager = SensorManagerSimulator.getSystemService(this,/SENSOR_SERVICE);/ 连接传感器模拟器/mSensorManager.connectSimulator();Overrideprotected void onResume()super.onResume();/ 为系统的方向传感器注册监听器mSensorManager.registerListener(this,mSensorManager.getDefaultSensor(Sensor.TYPE_ORIENTATION),SensorManager.SENSOR_DELAY_GAME);Overrideprotected void onPause()/ 取消注册mSensorManager.unregisterListener(this);super.onP

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论