NullPointerException在android studio应用中使用相机时遇到问题

unhi4e5o  于 2022-11-16  发布在  Android
关注(0)|答案(1)|浏览(201)

我试图将手机的相机预览传输到应用程序中的textureView。当我启动该方法时,我在logcat中得到以下错误,应用程序崩溃。
导致的错误:java.lang.空指针异常:尝试在空对象引用上调用虚拟方法“android.hardware.camera2.CaptureRequest$Builder”
这是密码。

try {
            //[0] Usually is the back cam but may need to play with it.

            ActivityCompat.requestPermissions(CameraActivity.this ,new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},PackageManager.PERMISSION_GRANTED);
            Log.d("asd","here");
            if (ActivityCompat.checkSelfPermission(this, Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) {
                Log.d("asd","OOOOOPPPSs");
                return;
            }
            Log.d("asd","BBBBBBBBBBBBBBBBBB");
            cameraId=cameraManager.getCameraIdList()[0];
            Log.d("asd","AAAAAAAAAAAAAAAAAAAAAAA");
            cameraManager.openCamera(cameraId, stateCallbackForCamera, null);
        }catch (Exception a){
            a.printStackTrace();
        }

这是我得到的日志输出。
2022-10-19 12:56:06.227 11217-11217/com.示例.测试应用程序D/asd:此处
2022-10-19 12:56:06.227 11217-11217/com.示例.测试应用程序D/asd:千千次每秒
如果我通过将if语句更改为

ActivityCompat.checkSelfPermission(this, Manifest.permission.CAMERA) == PackageManager.PERMISSION_GRANTED

我得到的新日志输出变为
2022-10-19 12:47:19.959 10777-10777/com.示例.测试应用程序D/asd:此处
2022-10-19 12:47:19.959 10777-10777/com.示例.测试应用程序D/asd:我的天
我有两个问题,第一;为什么权限检查失败?(应用程序不会显示弹出窗口询问权限)。
其次,我相信代码

cameraId=cameraManager.getCameraIdList()[0];

不知何故破坏了应用程序,为什么会这样,我怎么才能修复它?也许cameraManager是空的?
这就是如何cameraManager是分配,我采取了这从一个视频,我看到,它是工作正常的人,但我不熟悉这些概念,所以任何帮助是appriciated。

cameraManager = (CameraManager) getSystemService(CAMERA_SERVICE);

编辑:找到了原因并解决了我自己的情况,现在遇到了另一个问题,检查我的第一个答案。

nnvyjq4y

nnvyjq4y1#

我找到了原因;就像我这个白痴一样,我忘了在请求行中添加摄像头权限请求。一旦添加了这个请求,应用程序将运行得非常好。虽然我现在有另一个问题;我第一次运行应用程序后,添加相机请求,权限请求弹出在屏幕上,当我接受它,相机仍然不会工作几秒钟,然后应用程序重置为主要活动本身,只有在第二次尝试时,它会正常工作。为什么呢?
更详细一点;该应用程序由几个活动组成,主要活动基本上是空的,只有一个按钮和语音识别,它将您引导到相机活动,在那里发生与相机相关的一切。

相关问题