AndroidStudioにて、一定時間感覚でファイルを保存するプログラムを作成しています。
1分に1度、AlarmManagerで書き込みをしておりますが、1時間に2回ほどの割合で下記のようなエラーコードが出て、悩んでおります。
(起こるときは数分で起こったりもするのですが、1時間以上たって起こる場合もあります‥‥)
グーグルのCamera2Basicサンプルコードを利用しています。
なかなか再現せず、何が原因なのでしょうか。
ご教示いただければ幸いです。よろしくお願いいたします。
**
端末 :ZenFone2
Androidバージョン :5.0
AndroidStudio :1.5
**
W/System.err: java.io.FileNotFoundException: /storage/emulated/0/DCIM/example/yyyy-MM_dd-HH_mm-.jpg: open failed: EBUSY (Device or resource busy) W/System.err: at libcore.io.IoBridge.open(IoBridge.java:459) W/System.err: at java.io.FileOutputStream.<init>(FileOutputStream.java:87) W/System.err: at java.io.FileOutputStream.<init>(FileOutputStream.java:72) W/System.err: at jp.co.example.test.Camera2BasicFragment$ImageSaver.run(Camera2BasicFragment.java:998) W/System.err: at android.os.Handler.handleCallback(Handler.java:739) W/System.err: at android.os.Handler.dispatchMessage(Handler.java:95) W/System.err: at android.os.Looper.loop(Looper.java:135) W/System.err: at android.os.HandlerThread.run(HandlerThread.java:61) W/System.err: Caused by: android.system.ErrnoException: open failed: EBUSY (Device or resource busy) W/System.err: at libcore.io.Posix.open(Native Method) W/System.err: at libcore.io.BlockGuardOs.open(BlockGuardOs.java:186) W/System.err: at libcore.io.IoBridge.open(IoBridge.java:445) W/System.err: ... 7 more
下記コードです。
lang
1@Override 2 public void run() { 3 ByteBuffer buffer = mImage.getPlanes()[0].getBuffer(); 4 byte[] bytes = new byte[buffer.remaining()]; 5 buffer.get(bytes); 6 FileOutputStream output = null; 7 try { 8 output = new FileOutputStream(mFile); 9 output.write(bytes); 10 } catch (IOException e) { 11 e.printStackTrace(); 12 } finally { 13 mImage.close(); 14 if (null != output) { 15 try { 16 output.close(); 17 } catch (IOException e) { 18 e.printStackTrace(); 19 } 20 } 21 } 22 }
あなたの回答
tips
プレビュー