はじめに
CameraXで撮影した画像をBitmapに変換しようとした時に以下のエラーで苦しめられたのでメモっておきます。
java.lang.IllegalStateException: Image is already closed
かいけつ
撮影時のリスナーである onCaptureSuccess 内でコンストラクタを呼んでたのが原因でした。
failed
override fun onCaptureSuccess(image: ImageProxy?, rotationDegrees: Int) {
super.onCaptureSuccess(image, rotationDegrees)
// do
}
success
override fun onCaptureSuccess(image: ImageProxy?, rotationDegrees: Int) {
// do
}
なんでか
onCaptureSuccess の内部の実装を見ると中で ImageProxy を close させていたためでした。
ImageCapture.java
public void onCaptureSuccess(ImageProxy image, int rotationDegrees) {
image.close();
}
おわりに
ちゃんと使うなら標準ライブラリ使えよってことですかね・・・