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
一个简单的Demo下载,无需积分
http://download.csdn.net/detail/zqiang_55/4699641