在使用google的官方com.google.android.cameraview时出现的空指针问题
直接上问题:
使用Cameraview初始化完毕后启动直接报空指针,兼容性问题设备为(华为畅享20pro、oppo a92s)
原因
Camera2的prepareImageReader方法中首先要获取屏幕的宽高比,找到匹配的对应分辨率SortedSet对象,使用最后一个作为初始化时候的分辨率,因为有些纪行在获取分辨率的SortedSet对象时返回了空,所以导致初始化时无法初始化成功。
解决办法:
为空时使用默认分辨率
/**
* Max preview width that is guaranteed by Camera2 API
*/
private static final int MAX_PREVIEW_WIDTH = 1920;
/**
* Max preview height that is guaranteed by Camera2 API
*/
private static final int MAX_PREVIEW_HEIGHT = 1080;
private void prepareImageReader() {
if (mImageReader != null) {
mImageReader.close();
}
if (mPictureSizes.sizes(mAspectRatio) != null) {
Size largest = mPictureSizes.sizes(mAspectRatio).last();
mImageReader = ImageReader.newInstance(largest.getWidth(), largest.getHeight(),
ImageFormat.JPEG, /* maxImages */ 2);
} else {
mImageReader = ImageReader.newInstance(MAX_PREVIEW_WIDTH, MAX_PREVIEW_HEIGHT,
ImageFormat.JPEG, /* maxImages */ 2);
}
mImageReader.setOnImageAvailableListener(mOnImageAvailableListener, null);
}