こんにちは、いつもお世話になっております。
Android Open Accessoryで外部機器とUSB通信するためのアプリを試作しています。
どうしてもハマっている問題があり投稿させていただきました。
[問題]
USB通信中に以下の事象が起こると、通信を一向に再開できないでいます。
・OSによってアプリが強制終了される(メモリ不足や長時間Background滞在など)
・タスクキラーアプリなどでアプリが強制終了される
・アプリをアップデートする
アプリを再起動したりプロセスをKILLしたりしてもダメで、一度USBを抜き差ししないと復帰しません。(USB抜き差しはなるべく避けたいのです・・)
Android OSのバグ?かと疑っているのですが、何か妙案がある方、同様の症状で困っている方など、何でも良いのでご意見いただけると幸いです。
[補足]
・使用している外部機器は、Microchip社のADK(PIC24F)やMacです。
・Microchip社のサンプルアプリや書籍のアプリ(Android×Arduinoでつくるクラウド連携デバイス)などでも確認しましたが症状は同じでした。
・アプリからデータ送信しようとすると、必ず以下のエラーが出て失敗します。
----------------------------------------------------------------------------------------
W/System.err(17198): java.io.IOException: write failed: ENODEV (No such device)
W/System.err(17198): at libcore.io.IoBridge.write(IoBridge.java:462)
W/System.err(17198): at java.io.FileOutputStream.write(FileOutputStream.java:187)
・・・・・・
W/System.err(17198): Caused by: libcore.io.ErrnoException: write failed: ENODEV (No such device)
W/System.err(17198): at libcore.io.Posix.writeBytes(Native Method)
W/System.err(17198): at libcore.io.Posix.write(Posix.java:178)
W/System.err(17198): at libcore.io.BlockGuardOs.write(BlockGuardOs.java:191)
W/System.err(17198): at libcore.io.IoBridge.write(IoBridge.java:457)
W/System.err(17198): ... 23 more
----------------------------------------------------------------------------------------
・受信処理がブロックするというバグ↓が報告されていますが、試しに外部機器からデータを定期的(1秒)に送信させた状態でテストしてもダメでした。