在树莓派上实现安卓系统

3

我正在一个项目上工作,该项目是在Android(Gingerbread)上运行Raspberry Pi,我们在这个项目中的目标是从一个Zigbee(pikkerton)设备中获取温度和光线读数。Zigbee设备将数据发送到一个插入Raspberry Pi的dongle中,我们应该通过dongle在Raspberry Pi上读取这些值并在Android上显示。

  1. 我们已经成功地在Raspberry Pi上安装了Android操作系统,并将输出连接到显示器上并通过鼠标和键盘进行控制。
  2. 我们正在使用NDK开发代码(一种从dongle读取值并显示相同内容的应用程序)。
  3. 需要一些输入来建立NDK之间的Zigbee dongle和Raspberry Pi之间的串行通信方法。

嗨,Darshan!欢迎来到Stack Overflow。你的问题非常开放式,因此不适合在SO上提问。如果你对自己的实现有具体的问题,请随时提出。你的问题可能会被关闭,因为它感觉很像“我有一个作业项目要做,请有人给我提供代码好吗?” - CanSpice
实际上,这个问题可能既合适又可回答。 - Chris Stratton
感谢 CanSpice 的建议,我们已经成功地在 Raspberry pi 上使用 Linux 操作系统和 Python 代码实现了相同的想法。所以我已经有了逻辑和代码,我们只是在尝试其他可能性。由于我很新于 Android 编程,因此需要一些指导。 - Darshan
@Darshan 最终你是如何解决你的问题的?> - Hunt
正如Chris Stratton所建议的那样,我必须调整内核以便内核提供创建/dev/ttyUSB0的权限(在/dev文件夹中存在此节点表示您的树莓派具有检测到连接到其上的USB设备的能力),当插入dongle时。 - Darshan
这个链接对学习内核编译很有帮助,不是很难,需要2-3天的工作时间,如果你擅长Linux,只需要一天时间。 - Darshan
1个回答

2
看起来你的dongle提供了串行接口,所以你有两种选择:
1. 你可以让一个linux级别的驱动程序创建一个串行接口
你需要让创建串行设备(/dev/ttyUSB0或/dev/ttyACM0或类似的)的任何东西设置权限,以允许所有用户访问。或者您可以将权限设置为仅允许访问硬编码的Unix级用户组ID,并修改Android安装程序以添加一个新的Android权限,结果是该应用程序的用户ID成为该Unix组的成员,以便它可以访问端口。(参见如何处理Internet和External Storage权限的示例,或者如何处理收音机设备的受限示例)然后你可以使用普通的Linux串行API从你的NDK代码中访问端口,或者使用Java串行API从Java代码中访问端口。
2. 你可以禁用任何Linux级别的驱动程序,并从Android应用程序代码中直接与原始USB设备通信
首先检查您正在使用的Android版本是否具有USB主机API;如果没有,您需要首先升级它。这种方法将需要更少的自定义Android,但可能需要更多的了解与dongle的实际USB通信。不过,你可能能够追踪下来从Android应用程序中与类似设备通信的示例代码。

谢谢你帮助Chris,我认为Gingerbread支持USB主机API,因为我可以将鼠标和键盘连接到我的Raspberry-PI上,操作系统会响应鼠标按钮和键盘的点击。我会尝试实现你建议的第二种方法。 - Darshan
这个链接告诉我,Android 2.3.4 可以用于 USB 通信,并支持 USB 附件,尽管它不直接支持 USB 主机。 - Darshan
除非您的安装中有其他可以充当USB主机的设备,否则附件模式将无法帮助。 - Chris Stratton
将USB卡阅读器连接到USB主机的工作中是否有效? - Darshan
不确定您的意思,请您重新表述一下? - Chris Stratton
显示剩余6条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接