USB アクセサリのプラグを抜き差しした後、再接続する際に問題があります。アクセサリを初めて接続すると、デバイスと実際に通信するためのすべての手順を実行できます
- アクセサリを列挙する
- アクセサリへのアクセス許可を取得する
- アクセサリを開く
- FileDescriptor の I/O ストリームを使用してデバイスの読み取りと書き込みを行う
ケーブルを抜き差しすると、上記の最初の 2 つの手順を完了することができます。問題は、UsbManager のオープン アクセサリが ParcelFileDescriptor として null を返すことです。何が原因でしょうか? 一部のリソースがまだ予約されているため、Android がデバイスへのアクセスを許可できない可能性がありますか? openAccessory を呼び出す前に、I/O ストリームを解放し、ParcelFileDescriptor を閉じています。アクセサリを適切にクリーンアップするために他にすべきことはありますか? USB アクセサリに関する公式ドキュメント ページには、通信の終了に関するセクションがありますが、あまり役に立ちません。
http://developer.android.com/guide/topics/connectivity/usb/accessory.html