卧式纯绿 2024-05-04 15:50 采纳率: 62.1%
浏览 3
已结题

安卓开发调用摄像头预览创建会话出错

安卓开发调用摄像头预览在界面上并获取实时数据出错
代码都没有报错也不知道是哪里出现了问题,运行时就会闪退

img


这是oncreate函数

img


opencamera函数

img


创建会话预览的函数

  • 写回答

5条回答 默认 最新

  • 专家-赤兔[在线] 优质创作者: 编程框架技术领域 2024-05-04 15:50
    关注

    引自免费微信小程序:皆我百晓生

    根据您提供的代码片段,看起来您的应用在尝试初始化相机预览功能时遇到了问题。这里有几个可能的问题点,我会逐一检查并提供相应的修复建议。

    首先,在onCreate()方法中,确保您已经请求了所需的权限。在Android 6.0(API级别23)及以上版本中,您需要在运行时请求用户授权访问相机权限。这是您在代码中注释掉的部分,您可以将其添加到应用程序中:

    if (ContextCompat.checkSelfPermission(this, Manifest.permission.CAMERA)
            != PackageManager.PERMISSION_GRANTED) {
        ActivityCompat.requestPermissions(this,
                new String[]{Manifest.permission.CAMERA},
                MY_CAMERA_PERMISSION_REQUEST_CODE);
    }
    

    接下来,在onRequestPermissionsResult()方法中处理用户的权限决定:

    @Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
        if (requestCode == MY_CAMERA_PERMISSION_REQUEST_CODE) {
            if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                // Permission granted, continue with camera operations
                openCamera();
            } else {
                Toast.makeText(this, "Camera permission denied", Toast.LENGTH_SHORT).show();
            }
        }
    }
    

    然后,我们检查createCameraPreviewSession()方法中的错误处理。当捕获请求构建失败时,您应该更新UI或者记录错误信息。为了简化,可以将异常打印到日志中:

    try {
        // ...
    } catch (CameraAccessException e) {
        Log.e("CameraApp", "Error creating capture request", e);
    } catch (NullPointerException e) {
        Log.e("CameraApp", "Null pointer exception while configuring preview", e);
    }
    

    最后,为了更容易调试,确保在onSurfaceTextureAvailable()方法中添加一些日志输出,以便了解何时触发这个回调:

    @Override
    public void onSurfaceTextureAvailable(@NonNull SurfaceTexture surface, int width, int height) {
        Log.d("CameraApp", "Surface texture available");
        openCamera();
    }
    

    将这些更改应用到您的代码后,重新编译并运行应用程序。如果仍然出现问题,您可以通过查看Logcat(Android Studio工具窗口的一部分)中的日志输出来进一步诊断问题。

    如果您在调试过程中遇到困难,可以分享更详细的错误日志,这样我可以更好地协助您解决问题。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(4条)

报告相同问题?

问题事件

  • 系统已结题 8月17日
  • 已采纳回答 8月9日
  • 创建了问题 5月4日