Android Camerax在真实设备上崩溃

问题描述 投票:1回答:3

我开始在我的Android应用程序中使用CameraX(1.0.8 alpha)库,并且在实际的Samnsung A50设备+模拟器上进行开发时,它们都可以正常工作。但是,当它发布到Play商店时-我在Pixel 2XLNexus 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商店时-我看到...

android camera android-camera android-camera2 android-camerax
3个回答
0
投票

有时在使用旧版本或新版本的lib时会发生这种情况。尝试更改它


0
投票

根据官方文档:“ CameraX库处于Alpha阶段,因为它的API表面尚未完成。我们不建议在生产中使用Alpha库。库应严格避免依赖生产中的Alpha库,因为它们的API表面可能会在源代码和二进制不兼容的方式。”您可以等待稳定的版本,也可以使用Camera或Camera2的api。


0
投票

这可能无法完美回答,我可能是错的,但是请尝试以下方法:

© www.soinside.com 2019 - 2024. All rights reserved.