正确关闭USB附件连接的方法

Yta*_*tai 22 usb android accessory adk

UsbAccessory在Android中关闭连接的正确方法是什么?似乎甚至在谷歌股票的例子中,如果我连接和配件,退出应用程序然后回到它,连接不会重新建立.

仔细观察,似乎打完电话后close()FileDescriptor,也不会再次打开,并且"无法打开/ dev/usb_accessory"日志发出.不调用close()是一个糟糕的选择,因为线程阻塞read()将不会被释放.在物理断开/重新连接设备后,一切正常.

看起来非常令人惊讶的是,退出应用程序然后再次打开它的简单用例在参考应用程序中不起作用,如果不可行则更令人惊讶.

我正在使用Nexus S运行的Android 2.3.6版本.

Yta*_*tai 15

问题是读取线程永远不会退出,因此文件描述符保持打开状态,并且在恢复应用程序时无法再次打开.

这已被证实是一个错误:http://code.google.com/p/android/issues/detail? id = 20545

如果您关心它,请投票给这个bug.

  • 我解决这个问题的方法是从Android发送一个"软关闭"命令,这会导致从附件返回到Android的"软关闭"命令,从而解除对read()的阻塞.只有当应用程序正常存在且协议不会失去同步时,它才会起作用.在实践中,它并不完美,但总比没有好. (2认同)
  • 那么你如何实现"软关闭"呢? (2认同)