android驱动程序之 - sensor
2024-10-11 14:13:59
上图是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);
}
最新文章
- 深入浅出Node.js(一):什么是Node.js
- js 根据名字获取cookie 的方法
- 设计3D标签
- java-读取类中的属性名称和值
- spark配置
- demo15 AlertDialog
- duilib中的V和H布局中滚动条问题
- 开启CURL扩展,让服务器支持PHP curl函数(远程采集)
- WTL 自定义 Button类-自绘
- 17 个 Linux 下用于 C/C++ 的最好的 IDE
- 判断一个int 型整数 是否为回文数
- JS封深入了解
- IntelliJ IDEA 发布13版本——创造java奇迹
- 让.NET程序快速释放内存的办法
- .net文件上传,客户端用jquery file upload
- spring mvc 一次请求 两次查询
- 笔记:Struts2 的 JSON 插件
- ES ik分词器使用技巧
- mysql批量update的两种方法
- TypeScript 基础入门(一)
热门文章
- ASP终极防下载(转)
- 【转】来自《轻松scrum之旅》的敏捷开发总结
- linux中文输入法
- android小笔记
- [Server Running] [Node.js, PM2] Using PM2 To Keep Your Node Apps Alive
- 上struts2的xml在&;lt;result type=&;quot;redirect&;quot;&;gt;参数问题
- ios开发——实用技术OC-Swift篇&;触摸与手势识别
- jQuery Masonry构建pinterest网站布局注意要点(转)
- Bootstrap的Affix与ScrollSpy用法 bootstrap-scrollspy &;&; bootstrap-dropdown
- 自定义手势_GestureOverlayVIew