Android 摄像头->;结果活动->;反压->;摄像机

Android 摄像头->;结果活动->;反压->;摄像机,android,camera,start-activity,Android,Camera,Start Activity,我目前使用的是自定义相机,但是,当我选择从“多媒体资料”中选择图像并按下“上一步”,然后继续拍照时,它会在mCamera实例中的空指针上崩溃 当我打开多媒体资料时,我选择释放相机,这是有效的。之后,当我按back键时,它将进入“结果”活动。从那里,我手动调用创建相机所需的所有实例的方法。然而,当调用mCamera.open时,它给出了一个错误,我发现了这个错误。但当我想拍照时,它崩溃了,因为mCamera是空的 我做错了什么?我松开相机,这样它就可以换一个新的了 编辑: 发布: Intent i

我目前使用的是自定义相机,但是,当我选择从“多媒体资料”中选择图像并按下“上一步”,然后继续拍照时,它会在mCamera实例中的空指针上崩溃

当我打开多媒体资料时,我选择释放相机,这是有效的。之后,当我按back键时,它将进入“结果”活动。从那里,我手动调用创建相机所需的所有实例的方法。然而,当调用mCamera.open时,它给出了一个错误,我发现了这个错误。但当我想拍照时,它崩溃了,因为mCamera是空的

我做错了什么?我松开相机,这样它就可以换一个新的了

编辑:

发布:

Intent i = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
            startActivityForResult(i, 100);

        try {
            mCamera.release();
            Log.e("Camera", "Camera has been released");
        } catch (NullPointerException E){
            E.printStackTrace();
        }
创建:

// Create an instance of Camera
    mCamera = getCameraInstance();

    // Create our Preview view and set it as the content of our activity.
    mPreview = new CameraPreview(this, mCamera);
    FrameLayout preview = (FrameLayout) findViewById(R.id.camera_preview);
    preview.addView(mPreview);
正确的解决方案:

谢谢你,艾哈迈德

“是的,您已经用onStart方法打开了相机,并用活动的onStop方法将其释放。onResume和onPause方法是android活动可见生命周期的一部分。当另一个活动占用整个可见空间时,调用OnStop。当另一个活动出现在前台时,甚至会调用OnPause,即使它没有占用整个可见空间,如弹出的意图选择器对话框。因此,我想将您的相机创建和发布转移到正确的生命周期方法应该可以做到这一点。您可以在此处找到有关活动生命周期的更多信息,但我相信您对此很熟悉:

"


我做错了什么?实际上我在onResume中创建了所有内容,但是将其切换到onStart解决了这个问题。

确保在
onCreate()
方法中调用
getCameraInstance()
方法,因为如果在
onCreate()之外调用它
method相机将不会启用,并会给你一个空指针异常


我想这可以帮到你:

你能发布一些代码让我们看看你在做什么吗。我已经添加了所需的代码^create的第一行将不会成功,因为它无法打开相机。谢谢Ahmed,它工作了,我以前忘了一些东西。但是它现在工作了,谢谢!