Android 管理摄像头-无法访问摄像头

Android 管理摄像头-无法访问摄像头,android,camera,Android,Camera,我正在写一个程序来访问摄像机。它工作了一段时间,但现在它是相机API抛出异常,因为相机仍然在使用,当我试图打开它。我认为这是因为我在onPause、onResume和我使用它的地方没有正确处理它。这是我的密码: @Override protected void onResume(){ if (!getPackageManager() .hasSystemFeature(PackageManager.FEATURE_CAMERA)) { Toast.

我正在写一个程序来访问摄像机。它工作了一段时间,但现在它是相机API抛出异常,因为相机仍然在使用,当我试图打开它。我认为这是因为我在onPause、onResume和我使用它的地方没有正确处理它。这是我的密码:

@Override
protected void onResume(){
    if (!getPackageManager()
            .hasSystemFeature(PackageManager.FEATURE_CAMERA)) {
        Toast.makeText(this, "No camera on this device", Toast.LENGTH_LONG)
                .show();
    } else {
        cameraId = findFrontFacingCamera();
        if (cameraId < 0) {
            Toast.makeText(this, "No front facing camera found.",
                    Toast.LENGTH_LONG).show();
        } else {
            try {
                if (camera != null) {
                    camera.release();
                    camera = null;
                }
                camera = Camera.open(cameraId);
                try {
                    camera.setPreviewTexture(cameraTexture);
                }
                catch(IOException e){
                    Log.i("CameraHome", "could not set camera preview");
                }
            }
            catch (Exception e){

            }
        }
    }
    super.onResume();}
使用中:

//Take picture
    camera.startPreview();
    camera.takePicture(null, null,
            new PhotoHandler(getApplicationContext()));
    camera.stopPreview();
    camera.release();
知道我做错了什么吗?每次我重新启动应用程序时,它都会抛出一个异常,表示相机正在使用,即使我启动了默认的相机应用程序并将其关闭


编辑:正在访问相机,但从未调用我的回调(PhotoHandler中的onPictureTaken),就好像没有正确捕获图片一样。

证明此代码有效。必须卸载、重新启动和重新安装。然后我的onPictureTaken回调没有被调用。我相信这是因为我打电话太早了。我把它移到了我的暂停状态,并在拍照通话后取消了释放通话。现在一切正常

我已经在s3中检查过了,工作正常你能给出一些样本,可以生成你得到的错误,这样我就可以帮你了。这些是我在摄影机上调用方法的唯一实例。我有一种感觉,我没有将相机释放到系统中,把相机弄糟了。现在,即使我有正确的代码,它仍然没有访问权限,因为我以前搞砸了。。。在这种情况下,我想知道是否有办法重置摄像头
camera.startPreview();takePicture(null,null,newphotohandler(getApplicationContext());camera.stopPreview();相机。释放()
在这种情况下,您必须移除
摄像机.stopPreview();相机。释放()我卸载、重新启动和重新安装。它现在可以进入摄像机了。。。它并没有告诉我它不能再这样了。那很好。但是,它现在没有捕获图像。我打电话给takePicture并给出一个onPictureTaken回调,但这个回调从未被输入,我相信它是固定的。我认为过早调用stopPreview会中断进程,因此我将其移动到onpause命令,并在使用该命令后删除release()
//Take picture
    camera.startPreview();
    camera.takePicture(null, null,
            new PhotoHandler(getApplicationContext()));
    camera.stopPreview();
    camera.release();