3

我有一个带有 Android 平板电脑的系统 + 一个实现 AOA 协议的嵌入式板。

一切正常,嵌入式板在连接到 Android 设备时发送 ACCESSORY_START 命令,Android 进入 AOA 模式。然后两个之间的正常流程也可以正常工作。

现在我有一个问题:

有一种方法可以从嵌入式目标禁用 AOA 模式而无需物理移除 USB 电缆?
一种 ACCESSORY_STOP,所以我的 Android 目标恢复了通常的 PID:VID 而不是 PID:VID 用于 AOA 模式?

或者有一种方法可以用 Android 代码以编程方式做到这一点?

4

2 回答 2

1

如果您想在应用退出时关闭附件(不拔掉它),请在 Activity onDestroy() 中调用 System.exit(0)。这会杀死所有应用程序线程,包括阻塞输入流的附件读取线程。然后可以重新打开附件而无需重新插入。

这是对您的问题的部分回答(只是为了让警惕的学究们努力监控他人的业务)。但它很有用,因为至少您可以退出您的应用程序,然后再次重新连接配件而无需拔下电源。

是的,这个问题在 2017 年仍然存在。尽管它在很久以前就有记录了。

于 2017-02-10T15:16:31.307 回答
0

我在嵌入式项目中处理同样的问题。对于 Android 设备,我认为需要从 USB 引脚断开电源才能重新连接。

来自主机的数据级 USB 复位是不够的。我亲自测试过重置总线,但设备只是作为附件模式重新连接。

如果 android 附件设备能够打开或关闭控制器,则可以模拟物理 USB 重新连接。对于我的嵌入式平台,这是通过使用 echo 0 或 echo 1 into /sys/class/gpio/123/value 来执行的,其中 123 是在 linux 内核源代码的头文件中定义的引脚号。此引脚号必须导出到用户空间,并且必须与嵌入式项目的原理图对齐到控制控制器供电的引脚,该引脚可能称为 PWR_EN 或 ENABLE。

祝你好运!

于 2014-04-15T09:07:34.770 回答