我一直很喜欢便宜的智能手机(50美元),因为只要花很少的钱,我就可以拥有一个功能强大的系统,其中包含许多传感器和类似的东西。因此,我想知道是否有可能在不使用非常有限的android API的情况下使用硬件,然后以较低的级别(当然是使用根)对其进行编程。特别是,我想了解LTE模块的工作原理,并在完全控制的情况下进行试验,Android API不允许它做太多事情。
答案 0 :(得分:0)
有点问题。
硬件制造商实际上是这样做的。
请考虑到Android是Linux much like other distributions。 制造商开发硬件,然后编译位于其之上的Android版本。每个Android编译都是专门针对硬件定制的,并配备了驱动程序,这些驱动程序使主OS可以访问不同的硬件功能。
例如,某些表格将调整Android操作系统,使其不支持蜂窝通信,因为它们决定削减成本并交付不带蜂窝模块的平板电脑。
在这里,您有2个选择:
此外,总是有Android NDK可以为您提供对Android的更底层访问,但是您仍然受到KIT API的限制,因此我不确定它是否会对您有所帮助。
答案 1 :(得分:0)
电话的第一层软件是引导程序。它告诉处理器将哪个分区加载到内存中以执行内核。由于贪婪的公司原因(超出了本网站的范围),制造商通常会将此级别设置为禁止。
电话的第二层是linux内核。 rooting是获得root用户访问此层的过程。根是有权对设备执行任何操作的主要管理员用户帐户。大多数人指的是访问这一层。内核的很大一部分用C编写,其他部分则用c ++编写。在此级别上发生的一切就是所有魔术。对于大多数电话,这是调制解调器代码所在的位置。通常可以通过串行命令与之对话。传感器也在此级别进行编程,并通过驱动程序进行通信。读取传感器数据通常不需要根访问权限,通常只是一种权限情况。
下一个级别是android操作系统,java实例在其之上运行,而该实例又执行android操作系统。这是大多数用户将看到的部分,主要用Java编写。实际上,您可以在此级别上运行任何类型的用户界面。
一个简短的android应用视图。
android api为Java开发人员提供了一种编写与内核通信并访问手机硬件不同部分的“应用”的方法。这些应用程序也可以使用c ++编写。直到最近,谷歌才将c ++集成到android studio中,但是最常见且仍然最有效的方法是使用QT框架。