如何以编程方式退出Android附件模式

时间:2013-11-11 20:09:55

标签: android mode adk accessory

我的系统包含Android平板电脑+实现AOA协议的嵌入式主板。

一切正常,嵌入式主板连接到Android设备时发送ACCESSORY_START命令,Android进入AOA模式。然后两者之间的正常流动也很好。

现在我有一个问题:

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

或者有一种方法可以使用Android代码以编程方式执行此操作吗?

2 个答案:

答案 0 :(得分:1)

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

这是对你的问题的部分答案(只是为了清楚地表明那些努力监视其他人的业务的警惕)。但它很有用,因为至少你可以退出你的应用程序然后重新连接配件而不拔掉插头。

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

答案 1 :(得分:0)

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

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

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

祝你好运!