質問: doSomethingWith(reader); } }; ``` ちなみにcamera2 APIを使った静止画撮影での用途を想定しています。
回答: ちょっとドキュメント読んだだけでなので自信ないですが、コードで書き下すと以下の様な手順になりそうです。 ``` Image image = reader.acquireLatestImage(); Plane plane = image.getPlanes()[0]; ByteBuffer buf = plane.getBuffer(); byte[] b = buf.array(); int off = buf.arrayOffset(); Bitmap bitmap = BitmapFactory.decodeByteArray(b, off, b.length - off); ``` ドキュメントを読み解くと、大まかな流れとしては以下のとおりになってるように見受けられました。 1. Image から Plane を取り出して 2. Plane から ByteBuffer を取り出して 3. ByteBuffer の中身を BitmapFactory に食わせる なお BitmapFactory を使うということは Image#getFormat) の説明のJPEGの箇所に書いてあったのを参考にしました。 もしかしたら ByteBuffer#array) が失敗するかもしれませんが、その場合は ByteBuffer#get(byte[])) を使って、以下のよう byte[] を取り出し、BitmapFactoryに渡せそうです。 ``` byte[] b = new byte[buf.remaining()]; buf.get(b); BitmapFactory.decodeByteArray(b, 0, b.length); ``` 以上、外していたらごめんなさい。