连接到 USB 后立即向 Android 设备发送数据,导致超时

Sending data to Android device, immediately after connection to USB, results in timeout

我有以下用例:

  1. 应用程序正在 phone.
  2. 上运行
  3. 用户将附件连接到 phone。
  4. 附件将 phone 置于附件模式。
  5. 重新连接并打开正确的 USB 端点后,附件会立即尝试向应用发送数据。

在第 4 步,我在配件上获得 USB error 7: Transfer error on bulk endpoint: Operation timed out。发生这种情况大概是因为应用程序尚未打开 InputStream。

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

正如您可能知道的那样,USB 充其量是不稳定的,所以我会查看驱动程序 and/or 重新启动主机和 phone 的问题。这是我假设设备上的 USB 设置良好的唯一建议。

这个 Whosebug Question 有很多我会看的答案,有些答案不像不使用 USB3 端口那样明显。

解决方案原来是增加 USB 传输的超时时间。我正在使用 USB4Java,它的默认超时时间为 5 秒。当超时增加时,结果发现第一次传输需要 15 秒才能完成。所以我把它设置为 30 秒。