我有一个系统,一个Android平板电脑+一个实现AOA协议的嵌入式电路板。
一切正常,当连接到安卓设备时,嵌入式板卡发送ACCESSORY_START命令,安卓进入AOA模式。然后,两个之间的正常流也可以正常工作。
现在我有一个问题:
有没有一种方法从嵌入式目标禁用AOA模式,而不需要物理移除USB电缆?
一种ACCESSORY_STOP,所以我的Android目标重新获得了通常的PID:VID而不是PID:VID for AOA模式?
或者有一种方法可以用Android代码以编程的方式做到这一点?
发布于 2017-02-10 23:16:31
如果您想要在应用程序退出时关闭附件(而不是拔出它),请在Activity onDestroy()中调用System.exit(0)。这会杀死所有应用程序线程,包括阻塞输入流的附件读线程。然后,附件可以重新打开,而不需要重新插入。
这是对你问题的部分回答(只是为了让细心的学究们清楚地知道,他们正在努力地监视别人的事务)。但它是有用的,因为至少你可以退出你的应用程序,然后重新连接附件,而不需要拔出插头。
是的,这个问题在2017年仍然存在,尽管它在很久以前就被记录下来了。
发布于 2014-04-15 17:07:35
我正在处理一个嵌入式项目中的相同问题。就Android设备而言,我认为需要从USB引脚上拔下电源才能重新连接。
来自主机的数据级别的USB重置是不够的。我亲自测试过重置总线,但设备只是简单地以辅助模式重新连接。
如果android附件设备能够打开或关闭控制器的电源,则可以模拟物理USB重新连接。在我的嵌入式平台上,这是通过在/sys/class/gpio/ 123 /value中使用echo 0或echo 1来执行的,其中123是在linux内核源代码的头文件中定义的管脚号。此引脚编号必须导出到用户空间,并且必须与控制控制器电源的引脚的嵌入式项目原理图对齐,该引脚可能称为PWR_EN或ENABLE。
祝好运!
https://stackoverflow.com/questions/19914990
复制相似问题