在 4.1上,gsensor架构和原理分析 -- 从上倒下

本文主要描述了在android4.1平台G-sensor相关软硬件的体系架构和实现原理,按照Applications、Framework、HAL、Driver和Hardware五大层次分别介绍。

1.系统架构 (Architecture)

1.1 Android体系架构图



1.2 Sensor子系统架构图


 · Application Framework

       Sensor应用程序通过Sensor应用框架来获取sensor数据,应用框架层的Sensor Manager通过JNIC++层进行通信。

 · Sensor Libraries

       Sensor中间层主要由Sensor ManagerSensor serviceSensor硬件抽象层组成。

 · 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() {

  1. @Override  
  2. publicvoid onSensorChanged(SensorEvent event) {  
  3.    float[] values = event.values;  
  4.    mTextView.setText("Accelerometer:" + values[0] +", "  
  5.           + values[1] +", " + values[2]);  
  6. }  
  7.   
  8. @Override  
  9. publicvoidonAccuracyChanged(Sensor sensor,int accuracy) {  
  10. }  

(4)   注册事件监听器;

protectedvoid onResume() {

  1. super.onResume();  
  2.   
  3. mSensorManager.registerListener(mEventListener, mSensor,  
  4.        SensorManager.SENSOR_DELAY_NORMAL);  

(5)   卸载事件监听器;

protectedvoid onPause() {

  1.    super.onPause();  
  2.     
  3.    mSensorManager.unregisterListener(mEventListener);  
  4. }  

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









  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值