Android三类传感器-动作传感器-位置传感器-环境传感器
2015-11-20 16:25
429 查看
Android的传感器主要分为三类:动作传感器,位置传感器和环境传感器。
动作传感器
Android的动作传感器主要在XYZ轴上测量加速度和旋转角度,主要有以下几种:
加速传感器(Accelerameter)
陀螺仪传感器(Gyroscope)
重力传感器(Gravity)
旋转向量传感器(Rotational vetor)
在获取某传感器参数之前,我们需要查看ANDROID设备是否支持该传感器,下面首先演示如何获取一个设备所支持的所有传感器。
我们需要一个SensorManager类来获取传感器的相关信息,并把它显示在TextView当中。
动作传感器–以加速度传感器为例
要监听传感器的回传数据,需要实现SensorEventListener接口,并重写方法onSensorChanged(),onAccuracyChanged(),和重写Fragment类中的onResume()和onPause()。
首先在onResume()中注册要监听的传感器类型(以加速度传感器为例)
SENSOR_DELAY_FASTEST表示监听数据的速度很快。
在onPause()销毁该传感器
在onSensorChanged()中写捕捉到传感器后的动作
位置传感器
位置传感器常用的有3个:
方向传感器TYPE_ORIENTATION,
磁场传感器TYPE_MAGNETOMETER
邻近传感器TYPE_PROXIMITY。
其中邻近传感器使用最多,即在接听电话时判断人脸与屏幕的距离从而判断是否熄灭屏幕以防止误触。
方向传感器,磁场传感器都有3个返回值(event.value[0],event.value[1],event.value[2]),而邻近传感器只有一个返回值(event.value[0])。
设置位置传感器的方法与动作传感器相同,即在onResume()方法内注册传感器,并在onSensorChanged()监听返回值。
在方向传感器中,event.value[0]表示绕着Z轴(上下)旋转的角度,如果Y轴正对北方, 返回值为0;如果Y轴正对东方, 返回值为90,如果Y轴正对南方, 返回值为180,如果Y轴正对西方, 返回值为270。
event.value[1]表示绕着Y轴(前后)旋转的角度。
event.value[2]表示绕着X轴(左右)旋转的角度。
环境传感器
ANDROID APIs中提供了4个环境传感器,分别为
温度TYPE_AMBIENT_TEMPERATURE(℃),
压力TYPE_PRESSURE(hPa),
光线TYPE_LIGHT(lx),
湿度TYPE_RELATIVE_HUMIDITY(RH).
手机最常用的是光线,这些传感器都只有一个返回值。
动作传感器
Android的动作传感器主要在XYZ轴上测量加速度和旋转角度,主要有以下几种:
加速传感器(Accelerameter)
陀螺仪传感器(Gyroscope)
重力传感器(Gravity)
旋转向量传感器(Rotational vetor)
在获取某传感器参数之前,我们需要查看ANDROID设备是否支持该传感器,下面首先演示如何获取一个设备所支持的所有传感器。
我们需要一个SensorManager类来获取传感器的相关信息,并把它显示在TextView当中。
SensorManager sensorManager= (SensorManager) getContext().getSystemService(Context.SENSOR_SERVICE); List<Sensor> sensors=sensorManager.getSensorList(Sensor.TYPE_ALL); for (Sensor sensor:sensors) { tv_sensors.append(sensor.getName() + "\n"); }
动作传感器–以加速度传感器为例
要监听传感器的回传数据,需要实现SensorEventListener接口,并重写方法onSensorChanged(),onAccuracyChanged(),和重写Fragment类中的onResume()和onPause()。
首先在onResume()中注册要监听的传感器类型(以加速度传感器为例)
@Override public void onResume() { super.onResume(); sensorManager.registerListener(this, sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER), SensorManager.SENSOR_DELAY_FASTEST); }
SENSOR_DELAY_FASTEST表示监听数据的速度很快。
在onPause()销毁该传感器
@Override public void onPause() { super.onPause(); sensorManager.unregisterListener(this); }
在onSensorChanged()中写捕捉到传感器后的动作
@Override public void onSensorChanged(SensorEvent event) { switch (event.sensor.getType()) { case Sensor.TYPE_ACCELEROMETER: String string_accelerameter = "加速度X:" + event.values[0] + "/|Y:" + event.values[1] + "/|Z:" + event.values[2]; tv_accelerameter.setText(string_accelerameter); break; case Sensor.TYPE_ROTATION_VECTOR: String string_TYPE_ROTATION_VECTOR = "X:" + event.values[0] + "/|Y:" + event.values[1] + "/|Z:" + event.values[2]; Log.v("TYPE_ROTATION_VECTOR", string_TYPE_ROTATION_VECTOR); break; } }
位置传感器
位置传感器常用的有3个:
方向传感器TYPE_ORIENTATION,
磁场传感器TYPE_MAGNETOMETER
邻近传感器TYPE_PROXIMITY。
其中邻近传感器使用最多,即在接听电话时判断人脸与屏幕的距离从而判断是否熄灭屏幕以防止误触。
方向传感器,磁场传感器都有3个返回值(event.value[0],event.value[1],event.value[2]),而邻近传感器只有一个返回值(event.value[0])。
设置位置传感器的方法与动作传感器相同,即在onResume()方法内注册传感器,并在onSensorChanged()监听返回值。
在方向传感器中,event.value[0]表示绕着Z轴(上下)旋转的角度,如果Y轴正对北方, 返回值为0;如果Y轴正对东方, 返回值为90,如果Y轴正对南方, 返回值为180,如果Y轴正对西方, 返回值为270。
event.value[1]表示绕着Y轴(前后)旋转的角度。
event.value[2]表示绕着X轴(左右)旋转的角度。
环境传感器
ANDROID APIs中提供了4个环境传感器,分别为
温度TYPE_AMBIENT_TEMPERATURE(℃),
压力TYPE_PRESSURE(hPa),
光线TYPE_LIGHT(lx),
湿度TYPE_RELATIVE_HUMIDITY(RH).
手机最常用的是光线,这些传感器都只有一个返回值。
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件
- SourceProvider.getJniDirectories