在 4.1上,gsensor架构和原理分析 -- 从上倒下
2013-09-19 15:45
323 查看
本文主要描述了在android4.1平台G-sensor相关软硬件的体系架构和实现原理,按照Applications、Framework、HAL、Driver和Hardware五大层次分别介绍。
· Application Framework
Sensor应用程序通过Sensor应用框架来获取sensor数据,应用框架层的Sensor
Manager通过JNI与C++层进行通信。
· Sensor Libraries
Sensor中间层主要由Sensor Manager、Sensor
service和Sensor硬件抽象层组成。
· Input Subsystem
通用的Linux输入框架专为与键盘、鼠标和触摸屏等输入设备而设计,并定义了一套标准事件集合。Sensor输入子系统采用采用了通用的Linux输入框架,它通过/sys/class/input节点和用户空间进行交互。
· Event Dev
Evdev提供了一种访问/dev/input/eventX输入设备事件的通用方法。
· AccelerometerDriver
此驱动通过I2C总线与MMA7660模组进行通信。
mSensorManager =(SensorManager) getSystemService(SENSOR_SERVICE);
(2) 获取传感器对象;
mSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
(3) 定义事件监听器;
mEventListener =new SensorEventListener() {
[java]
view plaincopy
@Override
publicvoid onSensorChanged(SensorEvent event) {
float[] values = event.values;
mTextView.setText("Accelerometer:" + values[0] +", "
+ values[1] +", " + values[2]);
}
@Override
publicvoidonAccuracyChanged(Sensor sensor,int accuracy) {
}
(4) 注册事件监听器;
protectedvoid onResume() {
[java]
view plaincopy
super.onResume();
mSensorManager.registerListener(mEventListener, mSensor,
SensorManager.SENSOR_DELAY_NORMAL);
(5) 卸载事件监听器;
protectedvoid onPause() {
[java]
view plaincopy
super.onPause();
mSensorManager.unregisterListener(mEventListener);
}
3 框架 (Framework)
nativeClassInit(): 初始化Native类信息;
sensors_module_init(): 创建Native SensorManager实例,从SensorService读取Sensor设备列表;
sensors_module_get_next_sensor(): 从SensorService读取下一个Sensor设备;
sensors_create_queue(): 创建和SensorService共享的消息队列;
sensors_data_poll(): 从消息队列中读取SensorService发过来的消息;
SensorDevice::poll(): 调用HAL接口读取数据;
SensorEventConnection::sendEvents(): 往消息队列中写入消息,SensorThread后续会读取该消息;
http://blog.csdn.net/silingsong/article/details/7513157
1.系统架构 (Architecture)
1.1 Android体系架构图
1.2 Sensor子系统架构图
· Application Framework
Sensor应用程序通过Sensor应用框架来获取sensor数据,应用框架层的Sensor
Manager通过JNI与C++层进行通信。
· Sensor Libraries
Sensor中间层主要由Sensor Manager、Sensor
service和Sensor硬件抽象层组成。
· Input Subsystem
通用的Linux输入框架专为与键盘、鼠标和触摸屏等输入设备而设计,并定义了一套标准事件集合。Sensor输入子系统采用采用了通用的Linux输入框架,它通过/sys/class/input节点和用户空间进行交互。
· Event Dev
Evdev提供了一种访问/dev/input/eventX输入设备事件的通用方法。
· AccelerometerDriver
此驱动通过I2C总线与MMA7660模组进行通信。
2 应用 (Applications)
2.1 应用开发五步曲
(1) 获取传感器管理器对象;mSensorManager =(SensorManager) getSystemService(SENSOR_SERVICE);
(2) 获取传感器对象;
mSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
(3) 定义事件监听器;
mEventListener =new SensorEventListener() {
[java]
view plaincopy
@Override
publicvoid onSensorChanged(SensorEvent event) {
float[] values = event.values;
mTextView.setText("Accelerometer:" + values[0] +", "
+ values[1] +", " + values[2]);
}
@Override
publicvoidonAccuracyChanged(Sensor sensor,int accuracy) {
}
(4) 注册事件监听器;
protectedvoid onResume() {
[java]
view plaincopy
super.onResume();
mSensorManager.registerListener(mEventListener, mSensor,
SensorManager.SENSOR_DELAY_NORMAL);
(5) 卸载事件监听器;
protectedvoid onPause() {
[java]
view plaincopy
super.onPause();
mSensorManager.unregisterListener(mEventListener);
}
3 框架 (Framework)
3.1 工作模型
3.1.1 SensorManager的创建
nativeClassInit(): 初始化Native类信息;
sensors_module_init(): 创建Native SensorManager实例,从SensorService读取Sensor设备列表;
sensors_module_get_next_sensor(): 从SensorService读取下一个Sensor设备;
3.1.2 SensorThread数据接收处理
sensors_create_queue(): 创建和SensorService共享的消息队列;
sensors_data_poll(): 从消息队列中读取SensorService发过来的消息;
3.1.3 SensorService的工作原理
SensorDevice::poll(): 调用HAL接口读取数据;
SensorEventConnection::sendEvents(): 往消息队列中写入消息,SensorThread后续会读取该消息;
3.1.4 SensorDevice对HAL的访问
http://blog.csdn.net/silingsong/article/details/7513157
相关文章推荐
- android架构和原理分析(G-sensor即Gravity-sensor--重力传感器)
- gsensor架构和原理分析
- android架构和原理分析(G-sensor即Gravity-sensor--重力传感器)
- gsensor架构和原理分析 .
- Android Sensor架构和原理分析
- 深入分析 iBATIS 框架之系统架构与映射原理
- 高通sensor架构实例分析之一
- 大型网站技术架构:核心原理与案例分析阅读笔记二
- 深入分析 iBATIS 框架之系统架构与映射原理--转载
- Openvswitch原理与代码分析(1):总体架构
- Android 核心分析之十二Android GEWS窗口管理之基本架构原理
- 《大型网站技术架构核心原理与案例分析》阅读笔记-01
- 《大型网站技术架构核心原理与案例分析》
- 大型网站技术架构:核心原理与案例分析阅读笔记三
- 系统原理分析架构-六-负载均衡(定义及介绍及LVS/Nginx/Haproxy比较)
- 转G-sensor 架构分析
- 读《大型网站技术架构-核心原理与技术分析》有感之一 架构师领导艺术
- JVM体系架构分析与内存原理模式详解~新
- F2FS文件系统架构与原理分析(一)——设计背景与功能
- OpenLayers 3实践与原理探究4.1-ol3源码分析-底层基础