在AOA附件上检测应用程序已关闭并重新打开

时间:2014-10-30 13:59:49

标签: android usb android-open-accessory

我有以下用例:

  1. 用户将配件连接到手机。
  2. 应用程序在手机上自动启动(这是AOA功能的一部分)。
  3. 应用程序和附件之间的通信进行。
  4. 用户关闭应用(通过将其从最近的应用菜单中滑出来)。
  5. 用户再次启动应用程序。
  6. 附件尝试将数据发送到应用程序。
  7. 在第6步,我在配件上获得USB error 7: Transfer error on bulk endpoint: Operation timed out - 与应用程序根本没有运行时相同!即使通知应用程序UsbAccessory可用,也会发生这种情况。

    处理这种情况的正确方法是什么?

1 个答案:

答案 0 :(得分:1)

目前,如果该应用程序已关闭,则无法重新打开从android端接收的端口。它是由较低层驱动程序实现中的错误引起的。

处理此问题的一种方法是运行协议以检查应用程序是否处于活动状态。如果它不活动,恢复的一种可能方法是从附件侧重新启动USB端口。

触发下层驱动程序重新枚举的最佳方法是从现在开始重启usb端口。

如果您在应用关闭之前关闭端口,那么它可以正常工作。但是,由于应用程序被杀死,情况并非如此。