はじめに
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();
}
おわりに
ちゃんと使うなら標準ライブラリ使えよってことですかね・・・