上图是android系统架构图,从中可以得知,sensor必贯穿架构的各个层次。按照架构层次,下面从五个方面来分析sensor架构:

1. sensor架构之App层;

2. sensor架构之Framework层;

3. sensor架构之Libraries层;

4. sensor架构之HAL层;

5. sensor架构之Driver。

1. sensor架构之App层

下面以g-sensor为例,写一个简单的apk,看一下sensor在App层到底是如何工作的,一般需要下面四个步骤来实现一个sensor应用。

Step1:通过getSystemService获取sensor服务,其实就是初始化一个SensorManager实例;

 SensorManager mSensorManager = (SensorManager)getSystemService(SENSOR_SERVICE);

Step2:通过SensorManager的getDefaultSensor方法获取指定类型的传感器的sensor对象;

 Sensor sensor = mSensorManager.getDefaultSensor(Sensor.TYPE_GRAVITY); // 重力感应

Step3:实现SensorEventListener接口的onSensorChanged和onAccuracyChanged方法;

 SensorEventListenerlsn = new SensorEventListener() {
public void onSensorChanged(SensorEvent e) {
//当传感器的值发生变化时,会执行这里
} public void onAccuracyChanged(Sensor s, int accuracy) {
//当传感器的精度变化时,会执行这里
}
};

Step4:通过SensorManager的registerListener方法注册监听,获取传感器变化值。

 mSensorManager.registerListener(lsn,sensor, SensorManager.SENSOR_DELAY_GAME);

注:当传感器的值发生变化时,会调用onSensorChanged方法;当传感器的精度变化时会调用onAccuracyChanged方法。

完整示例代码:

 public class main extends Activity {
private float x, y, z;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
SensorManager mSensorManager= (SensorManager) getSystemService(SENSOR_SERVICE);
Sensor sensor = mSensorManager.getDefaultSensor(Sensor.TYPE_GRAVITY);
SensorEventListener lsn = new SensorEventListener() { public void onSensorChanged(SensorEvent e) {
System.out.println(e.value[0]);
System.out.println(e.value[1]);
System.out.println(e.value[2]);
}
public void onAccuracyChanged(Sensor s, int accuracy) {
}
};
mSensorManager.registerListener(lsn, sensor, SensorManager.SENSOR_DELAY_GAME);
}

最新文章

  1. 深入浅出Node.js(一):什么是Node.js
  2. js 根据名字获取cookie 的方法
  3. 设计3D标签
  4. java-读取类中的属性名称和值
  5. spark配置
  6. demo15 AlertDialog
  7. duilib中的V和H布局中滚动条问题
  8. 开启CURL扩展,让服务器支持PHP curl函数(远程采集)
  9. WTL 自定义 Button类-自绘
  10. 17 个 Linux 下用于 C/C++ 的最好的 IDE
  11. 判断一个int 型整数 是否为回文数
  12. JS封深入了解
  13. IntelliJ IDEA 发布13版本——创造java奇迹
  14. 让.NET程序快速释放内存的办法
  15. .net文件上传,客户端用jquery file upload
  16. spring mvc 一次请求 两次查询
  17. 笔记:Struts2 的 JSON 插件
  18. ES ik分词器使用技巧
  19. mysql批量update的两种方法
  20. TypeScript 基础入门(一)

热门文章

  1. ASP终极防下载(转)
  2. 【转】来自《轻松scrum之旅》的敏捷开发总结
  3. linux中文输入法
  4. android小笔记
  5. [Server Running] [Node.js, PM2] Using PM2 To Keep Your Node Apps Alive
  6. 上struts2的xml在<result type="redirect">参数问题
  7. ios开发——实用技术OC-Swift篇&触摸与手势识别
  8. jQuery Masonry构建pinterest网站布局注意要点(转)
  9. Bootstrap的Affix与ScrollSpy用法 bootstrap-scrollspy && bootstrap-dropdown
  10. 自定义手势_GestureOverlayVIew