我一直喜欢便宜的智能手机(50 美元),因为用很少的钱我就可以拥有一个带有大量传感器和类似设备的强大系统。所以我想知道是否可以在不使用非常有限的 Android API 的情况下使用硬件,然后在较低级别对其进行编程,当然是使用 root。我特别想看看 LTE 模块是如何工作的,并尝试完全控制它,Android API 不允许它做太多事情。
更新:我正在使用名为 libhybris 的东西,它是一个允许在 Linux 中使用 Android 驱动程序 blob 的包装器。
最佳答案
手机的第一层软件是引导加载程序。它告诉处理器将哪个分区加载到内存中以执行内核。这是制造商通常会因为贪婪的企业原因而屏蔽的级别,这超出了本网站的范围。
手机的第二层是linux内核。生根是获得根用户访问该层的过程。 Root 是主管理员用户帐户,有权对设备执行任何操作。访问这一层就是大多数人所说的生根。内核的很大一部分是用 C 编写的,其他部分是用 C++ 编写的。在这个级别上发生的事情就是所有魔力所在。对于大多数电话来说,这是调制解调器代码所在的位置。通常可以通过串行命令来完成此操作。传感器也在此级别进行编程并通过驱动程序进行通信。读取传感器数据通常不需要根访问权限,通常只是权限的一种情况。
下一个级别是android操作系统,java实例运行在其之上,java实例又执行android操作系统。这是大多数用户会看到的部分,主要是用 java 编写的。实际上,您可以在此级别运行任何类型的用户界面。
Android 应用程序的非常简短的 View 。
android api 为 java 开发人员提供了一种编写与内核通信并访问手机硬件不同部分的“应用程序”的方法。这些应用程序也可以使用 C++ 编写。直到最近,Google 才将 C++ 集成到 Android Studio 中,但最常见且仍然最有效的方法是使用 QT 框架。
关于android - 硬件访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53134098/