首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android IIO传感器

Android IIO传感器
EN

Stack Overflow用户
提问于 2017-07-12 09:18:16
回答 1查看 1.4K关注 0票数 0

如何在应用程序级别和本地级别(例如从亚行外壳或通过现有的deamon)在Android本体上捕获iio传感器生成的?(例如,环境光传感器的in_intensity_falling_threshold事件)

我尝试了经典的方法: SensorManager侦听器(我为自己编写了一个测试应用程序,但也尝试了应用商店中的几个感官测试应用程序)。

然而,iio传感器似乎不会触发任何事件(尽管我可以从sysfs读取不断变化的数据)。

iio设备也会创建与Android中的输入设备相同的事件类型吗?我应该能够通过getevent命令看到事件吗?(如果需要,我可以提供更具体的系统/传感器信息。)

EN

回答 1

Stack Overflow用户

发布于 2017-10-24 12:08:41

让我分享我所学到的和经历的:

如何捕捉iio事件的简单答案是,它取决于传感器的内核驱动程序和Android上的传感器-HAL。

首先,iio事件由基于hw的中断驱动;例如,当有新的数据时,传感器上连接和识别的中断引脚向板发送信号。

其次,传感器管理器/服务不直接与驱动程序通信。它听到的是传感器-HAL。传感器-HAL为传感器服务生成事件,而不是驱动程序directly.That,这意味着SensorHAL应该从sysfs(由驱动程序创建的文件接口)读取数据,并将数据返回到传感器服务调用(参见轮询(),sensor_event结构在https://android.googlesource.com/platform/hardware/libhardware/+/master/include/hardware/sensors.h中)

最后,.Interrupt、iio和hwmon是linux内核中不同类型的基于设备sw的结构,它们仅用于定义为中断设备(如触摸屏)的设备产生的“中断事件”。

结论:如果您有一个新的传感器,并且希望在Android中捕获/读取数据,您应该

1__.查找/编写具有适当设备模型的驱动程序(输入、iio、hwmon等)

2__.make板识别设备(通过向设备树或板配置添加信息)。(档案)

3__.find/write一个合适的传感器-HAL或添加传感器到现有的HAL.

只有在这个步骤之后,应用程序才能通过SensorListener到达传感器数据。

如何从本机级别捕获/测试事件捕获:无法找到捕获事件的直接方法。获取传感器数据(在添加适当的驱动程序并使板识别设备后)的一般本机方法是使用sysfs接口。

例如,从android设备外壳(作为root用户):

代码语言:javascript
复制
#sys/bus/iio/devices/iio:device0/ls
in_accel_x_raw   in_accel_y_raw   in_accel_z_raw   in_accel_scale ....
#cat in_accel_x_raw 
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45053521

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档