Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/219.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Android内核级别访问和使用加速计的值_Android_Linux Kernel_Accelerometer - Fatal编程技术网

在Android内核级别访问和使用加速计的值

在Android内核级别访问和使用加速计的值,android,linux-kernel,accelerometer,Android,Linux Kernel,Accelerometer,如何访问android内核空间中的加速计并使用其数据?我正在做一个项目,我需要在手机移动(在车内)时控制手机的一些功能,我想使用加速计来帮助确定手机是否加速。这一切都必须在内核空间中完成。我在android开发者页面上找到了如何使用加速计和SensorEvent来检测用户级应用程序中的变化。但是如何在内核级别上做类似的事情呢?我应该打系统电话吗 通过四处查看和搜索,我认为文件位于/goldfish/drivers/hwmon/中,但我不太确定。加速度计输入,在antive级别,来自/dev/in

如何访问android内核空间中的加速计并使用其数据?我正在做一个项目,我需要在手机移动(在车内)时控制手机的一些功能,我想使用加速计来帮助确定手机是否加速。这一切都必须在内核空间中完成。我在android开发者页面上找到了如何使用加速计和SensorEvent来检测用户级应用程序中的变化。但是如何在内核级别上做类似的事情呢?我应该打系统电话吗


通过四处查看和搜索,我认为文件位于/goldfish/drivers/hwmon/中,但我不太确定。

加速度计输入,在antive级别,来自/dev/input/event devices。您可以使用工具箱的
getevent()
,在倾斜手机时实时显示输入事件(如果内存可用,您需要/dev/input/event3,但您可以自己轻松检查)

加速计的驱动程序导出这个字符设备,然后Android运行时(在libhardware的帮助下)将其转换为熟悉的SensorEvent。没有用于此的内核API。最简单的解决方案是直接与/dev/event接口。这可以通过两种方式实现:

  • 用户模式守护进程侦听/dev/event,并与内核线程通信(例如,通过阻塞内核模块导出的另一个字符设备、反向系统调用等)

  • 不建议使用,但会起作用-从内核模式打开/dev/input/event(使用直接调用
    sys\u open
    ,然后调用
    sys\u read
    )。这需要“绕过”内核保护(最明显的是设置
    kernel\u-DS


  • 听起来你真的知道自己在说什么;不幸的是,我没有。对于linux和android,我都是新手。首先,正如我在最初的帖子中提到的,它必须完全处于内核模式,所以我想选项A不是我所需要的。我不知道你是什么意思。但我从你说的话中得到的是,我需要连接设备来测试事件。所以我无法检查计算机上的哪个事件?请你试着用一种无意义的方式解释一下好吗?谢谢你的客气话。。这就是我们的谋生之道:-)答案是技术性的,因为你问的是内核模式,所以很自然地,这是假设的。“工具箱”提供了在Android上使用“adb”获得的shell命令。首先运行“getevent”(并查看Android开发者网站)。这将向您显示设备如何发送加速度。事件。然后,您可以通过调用sys_open、sys_read from kernel mode来获得设备名,并可以使用选项(B)——正如本站点其他地方可能已经记录的那样。如果没有,只需在这里添加评论,我知道怎么可以这样假设。我想我应该更清楚。恐怕我仍然不知道如何使用模拟器检查sensorevent(getevent)。