Android:Camera2 API仅在Google Pixel 2和2 XL设备上崩溃

时间:2018-11-01 14:58:13

标签: android android-camera2

我在以下其中一个应用中使用Camera2示例代码: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月5日):

因此,逻辑上的解释是,从ImageReader返回的图像以某种方式为null:

@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是不受支持的格式。

还在寻找答案!

1 个答案:

答案 0 :(得分:0)

所有手机都有带camera2 api的三摄像头崩溃,这适用于所有背面有2个摄像头或单摄像头的手机

因此建议将 API 更改为多摄像头,而不是将其限制为 2 或 3 个摄像头