我开始在我的Android应用程序中使用CameraX(1.0.8 alpha)库,并且在实际的Samnsung A50设备+模拟器上进行开发时,它们都可以正常工作。但是,当它发布到Play商店时-我在Pixel 2XL和Nexus 5X设备上看到了很多崩溃(我在此设备的模拟器上尝试了我的应用,但是一切正常。)]
我只是叫bindToLifecle:
Fatal Exception: java.lang.IllegalArgumentException: Can not get supported output size under supported maximum for the format: 34 at androidx.camera.camera2.internal.SupportedSurfaceCombination.getSupportedOutputSizes(SupportedSurfaceCombination.java:29) at androidx.camera.camera2.internal.Camera2DeviceSurfaceManager.getSuggestedResolutions(Camera2DeviceSurfaceManager.java:29) at androidx.camera.core.CameraX.calculateSuggestedResolutions(CameraX.java:14) at androidx.camera.lifecycle.ProcessCameraProvider.bindToLifecycle(ProcessCameraProvider.java)
有人遇到过这样的问题吗?
初始化代码:
@SuppressLint("RestrictedApi")
private void definePermissionsCallback() {
allPermissionsCheck = Dexter.withActivity(this)
.withPermissions(WRITE_EXTERNAL_STORAGE, Manifest.permission.CAMERA)
.withListener(new MultiplePermissionsListener() {
@Override
public void onPermissionsChecked(MultiplePermissionsReport report) {
if (report.areAllPermissionsGranted()) {
isFileStoragePermissionGiven = true;
isCameraPermissionGiven = true;
SharedPreferences sharedPreferences = getSharedPreferences(APPLICATION_SETTINGS, MODE_PRIVATE);
sharedPreferences.edit().putBoolean(ALLOW_CAMERA, true).apply();
findViewById(R.id.switch_camera).setEnabled(true);
cameraProviderFuture = ProcessCameraProvider.getInstance(MainActivity.this);
cameraProviderFuture.addListener(() -> {
try {
cameraProvider = (ProcessCameraProvider) cameraProviderFuture.get();
bindPreview();
} catch (ExecutionException | InterruptedException e) {
Crashlytics.logException(e);
}
}, ContextCompat.getMainExecutor(MainActivity.this));
return;
}...
void bindPreview() {
cameraProvider.unbindAll();
Preview preview = new Preview.Builder()
.setTargetName("Preview")
.build();
preview.setPreviewSurfaceProvider(previewView.getPreviewSurfaceProvider());
cameraSelector = new CameraSelector.Builder().requireLensFacing(lensFacing).build();
cameraProvider.bindToLifecycle(this, cameraSelector, preview);
}
我开始在我的Android应用程序中使用CameraX(1.0.8 alpha)库,并且在实际的Samnsung A50设备+仿真器上进行开发时,所有功能都工作正常。但是当它发布到Play商店时-我看到...
有时在使用旧版本或新版本的lib时会发生这种情况。尝试更改它
根据官方文档:“ CameraX库处于Alpha阶段,因为它的API表面尚未完成。我们不建议在生产中使用Alpha库。库应严格避免依赖生产中的Alpha库,因为它们的API表面可能会在源代码和二进制不兼容的方式。”您可以等待稳定的版本,也可以使用Camera或Camera2的api。
这可能无法完美回答,我可能是错的,但是请尝试以下方法: