Android_传感器综述
Android 的Sensor 系统涉及了Android 的各个层次。Android 系统支持多种传感器,有的传感器已经在Android 的框架中使用,大多数传感器由应用程序来使用。
传感器
JAVA 中的名称
本地接口名称
数值
加速度
TYPE_ACCELEROMETER
SENSOR_TYPE_ACCELEROMETER
1
磁力域
TYPE_MAGNETIC_FIELD
SENSOR_TYPE_MAGNETIC_FIELD
2
方向
TYPE_ORIENTATION
SENSOR_TYPE_ORIENTATION
3
陀螺
TYPE_GYROSCOPE
SENSOR_TYPE_GYROSCOPE
4
光线(亮度)
TYPE_LIGHT
SENSOR_TYPE_LIGHT
5
压力
TYPE_PRESSURE
SENSOR_TYPE_PRESSURE
6
温度
TYPE_TEMPERATURE
SENSOR_TYPE_TEMPERATURE
7
距离
TYPE_PROXIMITY
SENSOR_TYPE_PROXIMITY
8
传感器系统的JAVA 部分包含了以下几个文件:
SensorManager.java :
实现传感器系统核心的管理类SensorManager
Sensor.java :
单一传感器的描述性文件Sensor
SensorEvent.java :
表示传感器系统的事件类SensorEvent
SensorEventListener.java :
传感器事件的监听者SensorEventListener 接口
SensorListener.java :
传感器的监听者SensorListener 接口(不推荐使用)
SensorManager 的主要的接口如下所示 :
public class SensorManager extends IRotationWatcher.Stub
{
public Sensor getDefaultSensor (int type) {// 获得默认的传感器 }
public List<Sensor> getSensorList (int type) { // 获得传感器列表 }
public boolean registerListener (SensorEventListener listener,
Sensor sensor, int rate, Handler handler) { // 注册传感器的监听者 }
void unregisterListener(SensorEventListener listener, Sensor sensor)
{ // 注销传感器的监听者}
}
Sensor 的主要的接口如下所示 :
public class Sensor {
float getMaximumRange() { // 获得传感器最大的范围 }
String getName() { // 获得传感器的名称 }
float getPower() {/ / 获得传感器的耗能 }
float getResolution() { // 获得传感器的解析度 }
int getType() { // 获得传感器的类型 }
String getVendor() { // 获得传感器的Vendor }
int getVersion() { // 获得传感器的版本 }
}
Sensor 类的初始化在SensorManager 的JNI 代码中实现,在SensorManager.java 维护了一个Sensor 的列表。
SensorEvent 类比较简单,实际上是Sensor 类加上
了数值(values ),精度(accuracy ),时间戳timestamp )等内容。
SensorEventListener 接口描述了SensorEvent 的监听者内容如下所示:
public interface SensorEventListener {
public void onSensorChanged(SensorEvent event);
public void onAccuracyChanged(Sensor sensor, int accuracy);
}
同时在eoe上看到一篇不错的文章:
http://www.eoeandroid.com/forum.php?mod=viewthread&tid=181058