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

标签 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 返回的图像在某种程度上为空:
@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 会是一种不受支持的格式。

还在寻找答案!

最佳答案

所有手机都有带有camera2 api的三重摄像头崩溃,这适用于所有背面有2个摄像头或单摄像头的手机
因此建议将 API 更改为多摄像头之一,而不是将其限制为 2 或 3 个摄像头

关于Android:Camera2 API 仅在 Google Pixel 2 和 2 XL 设备上崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53103837/

相关文章:

android - Camerax 在服务中运行。如何在前台服务中获取生命周期所有者或在没有它的情况下运行?

java - 我想在 android 中为 6 个 edittext 框创建函数,其中包括 edittext 的所有属性,这样我就可以简单地调用函数

android - Android 中的互联网连接检查

android - 如何仅为音频通话构建linphone android sdk?

Xamarin Cam2 IOnImageAvailableListener 的 OnImageAvailable 被调用两次导致

android - camera 和 camera2 API 有什么区别

Android Camera2 API JPEG_QUALITY 不可用

android - 如何解决显示垂直视口(viewport)的 flutter 抽屉被赋予无限高度

java - Android 和 Protobuf

android - 配置 CameraX(闪光模式、自动白平衡模式、 Action 模式等)