Android传感器简单介绍
来源:互联网 发布:开票软件金税盘打不开 编辑:程序博客网 时间:2024/06/05 18:42
Android手机中存在好多种传感器,Android系统提供了接口可以将传感器的数据传送给我们,我们可以用获取到的数据做很多有趣的事,接下来我们就来学习一下最常用的三种传感器,光照传感器、加速度传感器和
方向传感器。
传感器的使用方法几乎都是差不多的,我们只需要学会了一种使用方法,那就基本可以去按同样的方式去使用其他的传感器。
一、光照传感器
1、获得传感器管理类实例
sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
2、得到光照传感器的实例
Sensor lightSensor = sensorManager.getDefaultSensor(Sensor.TYPE_LIGHT);
3、获得传感器监听实例
SensorEventListener lightListener = new SensorEventListener() { //当传感器检测数据发生改变时调用 @Override public void onSensorChanged(SensorEvent event) { //values数组中的第一个元素即为光照值 float[] values = event.values; lightLevel.setText("当前光照" + values[0] + "lx"); } //当传感器的精度发生改变时调用 @Override public void onAccuracyChanged(Sensor sensor, int accuracy) { }};
4、设置传感器监听
//为传感器添加监听,参数依次为监听实例、传感器实例,数据更新速率sensorManager.registerListener(lightListener, lightSensor, SensorManager.SENSOR_DELAY_NORMAL);
5、在onDestroy中取消监听
@Overrideprotected void onDestroy() { super.onDestroy(); if (sensorManager != null){ sensorManager.unregisterListener(lightListener); }}
二、加速度传感器
我们利用加速度传感器接口可以获得手机在x、y、z方向上的加速度。我们先介绍一下对于手机来说的x、y、z的方向。
同时我们应该注意,由于地心引力的存在,我们的手机始终会在某个方向受到一个9.8的重力加速度,如图中所示放置手机,z轴会受到一个9.8的重力加速度。
1、首先获得加速度传感器的实例
Sensor acceleratorSensor = sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
2、为传感器添加监听
sensorManager.registerListener(acceleratorListener, acceleratorSensor, SensorManager.SENSOR_DELAY_NORMAL);
3、在onDestroy()中取消监听
@Overrideprotected void onDestroy() { super.onDestroy(); if (sensorManager != null){ sensorManager.unregisterListener(acceleratorListener); }}
在监听函数中和光照传感器类似,会获得一个values数组,数组中的前三个元素依次为x、y、z轴的加速度值。
三、方向传感器
在手机中,方向传感器算是比较常用的一种传感器,它可以准确给出手机在各个方向旋转的角度,利用这些数据我们可以制作出指南针等一些 有用的工具。但是不同于前面的传感器的用法,方向传感器的用法略有不同,Android废弃了以前提供的一种类似于上面的那种直接获取方向旋转数据的方法,提倡使用加速度传感器的数据和地磁传感器的数据结合获取计算出方向传感器的数据。下面给出使用方法。
1、获得传感器管理类的实例
sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
2、获得加速度传感器和地磁传感器的实例
Sensor acceleratorSensor = sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);Sensor magneticSensor = sensorManager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD);
3、获得传感器监听类实例
SensorEventListener listener = new SensorEventListener() {//存放加速度传感器的值float[] acceleratorValues = new float[3];//存放地磁传感器的值float[] magneticValues = new float[3];@Overridepublic void onSensorChanged(SensorEvent event) { //判断当前是加速度传感器还是地磁传感器 if (event.sensor.getType() == Sensor.TYPE_ACCELEROMETER){ //注意:赋值时使用clone()方法,不然两个数组会指向同一个实例 acceleratorValues = event.values.clone(); }else if (event.sensor.getType() == Sensor.TYPE_MAGNETIC_FIELD){ magneticValues = event.values.clone(); } //存放计算出的旋转数据 float[] R = new float[9]; //存放方向传感器围绕z、x、y旋转的弧度值 float[] values = new float[3]; //第二个参数为将地磁向量转化为重力坐标的旋转矩阵 SensorManager.getRotationMatrix(R, null, acceleratorValues, magneticValues); SensorManager.getOrientation(R, values); acceleratorLevel.setText("X: " + acceleratorValues[0] + "\n" + "Y: " + acceleratorValues[1] + "\n" + "Z: " + acceleratorValues[2]); magneticLevel.setText("Z: " + values[0] + "\n" + "X: " + values[1] + "\n" + "Y: " + values[2]);
注:上面中values中存放的数据是旋转的弧度值,如果需要转化为角度值需要调用Math.toDegrees(values[0])
4、为传感器设置监听
sensorManager.registerListener(listener, acceleratorSensor, SensorManager.SENSOR_DELAY_GAME);sensorManager.registerListener(listener, magneticSensor, SensorManager.SENSOR_DELAY_GAME);
5、在onDestroy()方法中取消监听注册
@Overrideprotected void onDestroy() { super.onDestroy(); if (sensorManager != null){ sensorManager.unregisterListener(listener); }}
以上就是Android中常见的传感器的简单使用方法。
- Android传感器简单介绍
- 传感器的简单介绍
- IOS 传感器简单介绍
- ios-传感器简单介绍
- Android传感器介绍
- Android开发--传感器介绍
- Android传感器介绍
- Android 传感器介绍
- Android手机传感器介绍
- Android传感器介绍
- Android传感器介绍
- Android传感器介绍
- Android传感器介绍
- Android 传感器 (详解一)—— 简单介绍传感器的使用步骤
- android 传感器 简单实例
- Android 传感器 I-传感器基本介绍
- android 传感器(OnSensorChanged)使用介绍
- android 传感器(OnSensorChanged)使用介绍
- 大数的任意进制之间的转换(九度OJ题目1080)
- win7+虚拟机+开发板(网络互联设置)之三(ip设置注意事项)
- Android Multimedia框架总结(八)Stagefright框架之AwesomePlayer及数据解析器
- 程序A启动了程序B,并判断程序B是否已经退出
- 实时直播协议:编译RTMPdump(libRTMP)
- Android传感器简单介绍
- bzoj3343(第一道分块)
- LightOJ 1113 Discover the Web 栈模拟
- HTTP协议
- 判断是否是完全二叉树
- 时间管理Smart法则,一个在高盛工作的学姐总结的12个时间管理妙招
- 007-寄存器EAX与AX,AH,AL关系
- Madplay移植到OK6410全过程详解
- .NET Framework 4.5.1安装未成功,解决办法