Android应用程序,如何与插入USB端口的设备进行通信?

56

我在考虑一个安卓应用(可能带有相应的物理设备),我想弄清楚这是否可行。

1)假设我将我的安卓手机连接到电脑。那么,安装在电脑上的应用程序能否与在手机上运行的应用程序通信?我只需要非常简单的数据交换,甚至可以是单向的(只需从手机向PC上的监听应用程序推送数据,无论何时手机想要,我不需要从PC发送任何数据到手机)。

当我插入手机时,手机会给我4个选项(充电、磁盘驱动器、HTC同步、网络共享),这使我认为这是不可行的,但仍值得一试。

2)电脑上的应用程序是否可以通过其他方式与手机上的应用程序通信?(Wi-Fi、蓝牙等)。我猜Wi-Fi不行,因为双方都没有对方的IP地址(而且我希望这种通信方式能够自动完成,而不需要手动输入IP地址)。

3)如果我制作了一个插入到手机底部小USB接口的设备(假设这是一个可以执行任何操作的神奇设备,只要能够实现就行)。那么,安卓应用程序能否与该设备通信?

4)任何其他让手机与我制作的“设备”或PC上的应用程序通信的想法都非常受欢迎。通过“网络”进行通信可能是一个选项(尽管必须有一个我拥有的中央服务器作为中间人),但我更希望两个设备之间的通信是直接的。


非常抱歉回复晚了,但我假设问题仍未解决。如果已经解决,请忽略此消息。我已使用ADB进行通信:请参考此链接获取更多详细信息。 - Ab5
4个回答

19

自从这个问题被问出来以后,世界已经发生了变化,现在的答案是Android开放配件开发工具包。它无法解决现有USB设备的问题,但它可以创建新设备,可以使用Android设备的USB连接。


1
@Zonata 我没有使用过它,但是http://developer.android.com/tools/adk/adk2.html声称支持Windows。 - James Moore
谢谢,但我想我会走老派路线...我找到了一个关于套接字转发的教程,可能会对其他人有兴趣:http://qtcstation.com/2011/03/connecting-android-to-the-pc-over-usb/ - Zonata
@JamesMoore 我应该买一部新的安卓手机来工作吗? - Madhawa Priyashantha
@FastSnail - 不,这已经发布了半个十年了。 - James Moore

9

1
这个链接已经失效了。你能帮我解决一下吗?或者附上其他可用的链接。 - Shubham Agrawal

5
编辑:请注意,这个答案是在Android USB主机和附件API以及许多设备发布之前编写的。
如果您在手机上开启USB调试,并在电脑上使用SDK的(开源)ADB工具的衍生版本,它们可以进行通信。电脑将需要发起通信,但在会话内,它可以是双向的,甚至大部分是从设备到电脑的。请参阅developer.android.com有关adb shell和端口转发的信息。不需要root权限。
人们正在使用蓝牙与Arduino嵌入式控制器通信。
有了root权限,我让我的手机充当USB主机,但这很麻烦,因为我必须使用WiFi获取调试Shell,因为USB已被占用。
一些手机在extusb连接器或音频线上有低电压串行端口,但需要root和电平转换器才能使用。
我曾经考虑过的另一个想法是,在耳机插孔上做一个软件调制解调器,显然日本的某位开发者已经为Android和iPhone制作了这个功能。这不需要root权限。

谢谢你的回答。我的想法是让普通人也能使用这个应用程序。这个应用程序将通过安卓市场进行安装(至少是安卓端的应用程序)。这意味着不需要root,不需要USB调试(我想),也不需要任何我妈妈无法完成的操作。你提到的蓝牙...这是否意味着需要root,还是说这是我妈妈也能做到的事情? - Daniel Magliola
1
耳机插孔的想法很有趣,毫无疑问。 - Daniel Magliola
2
蓝牙串行通信(与耳机相比)在某些 Android 版本之前可能无法使用,而外部硬件价格昂贵(如零件约为 20-30 美元,完整控制器板集成后高达 150 美元),但不应需要 root。打开 USB 调试也不需要 root,但是对于每个人来说都不是必需的。基本上,您可以选择硬件成本或用户复杂度。 - Chris Stratton

3

2
Android-notifier在USB模式下无法工作。支持Wifi和蓝牙模式。 - Mihir Palkhiwala

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