android sensor 框架分析---sensor native分析
来源:互联网 发布:网络教育如何报名 编辑:程序博客网 时间:2024/05/01 20:18
6,sensor native分析
获取sensor数据除了android上层进行开发之外,还可以直接进行native开发。
6.1 开发说明
初始化,
sensorManager = ASensorManager_getInstance(); //获取AsensorManager对象 //设置加速度的值accelerometer = ASensorManager_getDefaultSensor(sensorManager, ASENSOR_TYPE_ACCELEROMETER); //获取Alooper对象looper = ALooper_prepare(ALOOPER_PREPARE_ALLOW_NON_CALLBACKS);// 获取AsensorEventQueue对象accelerometerEventQueue = ASensorManager_createEventQueue(sensorManager, looper, LOOPER_ID_USER, NULL, NULL);auto status = ASensorEventQueue_enableSensor(accelerometerEventQueue, accelerometer);//设置sensor的频率, SENSOR_REFRESH_PERIOD_US为 int值,单位为us。status = ASensorEventQueue_setEventRate(accelerometerEventQueue, accelerometer, SENSOR_REFRESH_PERIOD_US);
获取一组sensor的值,sensor组的大小和频率有关。
ASensorEvent event; float a = SENSOR_FILTER_ALPHA; float x = (float)sensorDataFilter.x; float y = (float)sensorDataFilter.y; float z = (float)sensorDataFilter.z; while (ASensorEventQueue_getEvents(accelerometerEventQueue, &event, 1) > 0) { sensorDataFilter.x = a * event.acceleration.x + (1.0f - a) * sensorDataFilter.x; sensorDataFilter.y = a * event.acceleration.y + (1.0f - a) * sensorDataFilter.y; sensorDataFilter.z = a * event.acceleration.z + (1.0f - a) * sensorDataFilter.z; LOGI("JNIresume update"); }
6.2 分析
代码路径如下,
/frameworks/base/native/android/
主要论述下设置sensor的参数值,例如设置频率, ASensorEventQueue_setEventRate的流程图,然后论述下获取数据的
ASensorEventQueue_getEvents详细流程。
6.2.1setEventRate分析
调用流程图如下,
6.2.2 getEvents分析
sensor.cpp的ASensorEventQueue_getEvents方法如下,
ssize_t ASensorEventQueue_getEvents(ASensorEventQueue* queue, ASensorEvent* events, size_t count){ ssize_t actual = static_cast<SensorEventQueue*>(queue)->read(events, count); if (actual > 0) { static_cast<SensorEventQueue*>(queue)->sendAck(events, actual); } return actual;}
直接调用SensorEventQueue的read方法读取管道中的数据,具体的流程和5.3小节完全一样。
阅读全文
0 0
- android sensor 框架分析---sensor native分析
- android sensor 框架分析---sensor数据流分析
- android sensor 框架分析---sensor 总结
- android sensor 框架分析---服务端
- android sensor 框架分析---客户端
- Android Sensor分析
- Sensor HAL框架分析之一
- Sensor HAL框架分析之一
- Sensor HAL框架分析之一
- Android Sensor HAL层分析
- android sensor 框架分析---客户端和服务端的连接
- Sensor HAL框架分析之二
- Sensor HAL框架分析之三 .
- Sensor HAL框架分析之四 .
- Sensor HAL框架分析之三
- Sensor HAL框架分析之二
- Sensor HAL框架分析之四
- android2.3 G-sensor实现框架分析
- java中import的简述
- ray marching shader 2:viewspace 转换 worldspace
- 【JZOJ 5205】【GDOI2018模拟7.6】仰望星空
- Hadoop基础教程-第8章 Zookeeper(8.4 Zookeeper集群模式)(草稿)
- 小米6连接android studio2.3出现Installation failed with message Failed to establish session.
- android sensor 框架分析---sensor native分析
- 【Linux4.1.12源码分析】邻居子系统实现分析
- 新浪博客搬家过来的东西
- thinkphp5.0l路由冲突原因及解决方法
- Interaction System入门之手柄按钮高亮及文字提示
- 华为机试,计算字符的个数
- 基于Lasagne实现限制玻尔兹曼机(RBM)
- strcpy函数、memcpy函数、strncpy函数的实现
- 项目兼容Kotlin踩过的坑