我正在使用CameraX来构建带有“预览”和“分析”用例的相机。我已经在模拟器和设备上本地构建并运行了我的应用程序。但是,当我发布到Google Play后,我得到了我的其中一个用户的crashlytics报告的以下堆栈跟踪:
Fatal Exception: java.lang.IllegalArgumentException: Can not get supported output size under supported maximum for the format: 34
at androidx.camera.camera2.impl.SupportedSurfaceCombination.checkSupported(SupportedSurfaceCombination.java)
at androidx.camera.camera2.impl.SupportedSurfaceCombination.checkSupported(SupportedSurfaceCombination.java)
at androidx.camera.camera2.impl.Camera2DeviceSurfaceManager.getMaxOutputSize(Camera2DeviceSurfaceManager.java)
at androidx.camera.core.CameraX.calculateSuggestedResolutions(CameraX.java)
at androidx.camera.core.CameraX.attach(CameraX.java)
at com.glan.input.fragment.CameraFragment.startCamera(CameraFragment.java) // *** Note this is where I call CameraX.bindToLifecycle(activity, previewUseCase, analysisUseCase)
at com.glan.input.fragment.CameraFragment.access$000(CameraFragment.java)
at androidx.fragment.app.Fragment.onActivityCreated(Fragment.java)
at androidx.fragment.app.FragmentManagerImpl.addAddedFragments(FragmentManagerImpl.java)
at androidx.fragment.app.FragmentManagerImpl.dispatchPause(FragmentManagerImpl.java)
at androidx.fragment.app.FragmentManagerImpl.addAddedFragments(FragmentManagerImpl.java)
at androidx.fragment.app.BackStackRecord.executeOps(BackStackRecord.java)
at androidx.fragment.app.FragmentManagerImpl.addAddedFragments(FragmentManagerImpl.java)
at androidx.fragment.app.FragmentManagerImpl.allocBackStackIndex(FragmentManagerImpl.java)
at androidx.fragment.app.FragmentManagerImpl.completeShowHideFragment(FragmentManagerImpl.java)
at androidx.fragment.app.FragmentManagerImpl.execPendingActions(FragmentManagerImpl.java)
at androidx.fragment.app.FragmentManagerImpl$2.run(FragmentManagerImpl.java)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5421)
at java.lang.reflect.Method.invoke(Method.java)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
我查看了CameraX的源代码,发现当没有图像输出尺寸候选匹配给定的用例和图像格式组合时,抛出此错误。 34
(错误消息的最后一个字符)是PRIVATE
image format。
我已经遍历了我正在使用的两个用例的源代码,似乎唯一可以选择的格式是YUV_420_888
(预览和分析)或{{1} }(分析)。
在阅读CameraX代码时,我肯定有可能错过了一些东西。如何确保不使用JPEG
图片格式?
对于它的价值,这是发生此崩溃的设备的设备信息:
PRIVATE