我在我的一个应用中使用了来自此处的相机2示例代码:https://github.com/googlesamples/android-Camera2Basic/blob/master/Application/src/main/java/com/example/android/camera2basic/Camera2BasicFragment.java
一直以来,它都运行良好,但最近发现只有Google Pixel 2和Pixel 2 XL设备上,在拍照时应用程序会崩溃。
崩溃报告显示如下:
java.lang.NullPointerException:
at ....Camera2BasicFragment$ImageSaver.run (Camera2BasicFragment.java:935)
at android.os.Handler.handleCallback (Handler.java:873)
at android.os.Handler.dispatchMessage (Handler.java:99)
at android.os.Looper.loop (Looper.java:193)
at android.os.HandlerThread.run (HandlerThread.java:65)
这是第935行(ImageSaver类):
ByteBuffer buffer = mImage.getPlanes()[0].getBuffer();
我尝试了几种方法,但由于没有Pixel 2设备,所以无法进行测试。有什么建议吗?
更新(2018年11月05日):
因此,逻辑上的解释是从ImageReader返回的图像某种方式为空:
@Override
public void onImageAvailable(ImageReader reader) {
mBackgroundHandler.post(new ImageSaver(reader.acquireLatestImage(), mFile));
}
其他一些SO帖子暗示ImageReader格式可能不被支持。这是该格式:
mImageReader = ImageReader.newInstance(largest.getWidth(), largest.getHeight(),
ImageFormat.JPEG, /*maxImages*/2);
但我想不出为什么JPEG格式会不受支持。
仍在寻找答案!
Camera2ApiActivity.java
...第1173
行说了什么? - Martin Zeitler