Android摄像头在棒棒糖的IntentService中失败

Android摄像头在棒棒糖的IntentService中失败,android,camera,android-camera,intentservice,Android,Camera,Android Camera,Intentservice,我正试图在IntentService的背景下拍照。在安卓4.4上一切正常,但在安卓5.1上我有一个错误: 03-18 14:35:54.497 7659-8956/xyz.bringoff.proximityphoto.app E/InvisibleCameraService﹕ 无法使用相机:无法连接到相机服务 我的代码如下所示: private void handleActionShot() { mSensorManager = (SensorManager) getSystemSe

我正试图在IntentService的背景下拍照。在安卓4.4上一切正常,但在安卓5.1上我有一个错误:

03-18 14:35:54.497 7659-8956/xyz.bringoff.proximityphoto.app E/InvisibleCameraService﹕ 无法使用相机:无法连接到相机服务

我的代码如下所示:

private void handleActionShot() {

    mSensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
    mProximity = mSensorManager.getDefaultSensor(Sensor.TYPE_PROXIMITY);

    releaseCamera();

    mCamera = getCameraInstance();
}

public Camera getCameraInstance() {
    Camera c = null;

    int numCams = Camera.getNumberOfCameras();
    if (numCams > 0) {
        try {
            c = Camera.open(Camera.CameraInfo.CAMERA_FACING_BACK);
        } catch (RuntimeException e) {
            Log.e(TAG, "Can't use a camera: " + e.getMessage());
            releaseCamera();
            return null;
        }
    }
    if (c != null) {
        c.setParameters(getProperParametersForCurrentDevice(c));
        c.lock();
    }

    return c;
}

在这两个android版本上,我没有发现记录在案的摄像头请求之间的差异。

我发现了一个问题。接收者两次捕捉到状态为“U OFFHOOK”的意图,并分别两次启动意图服务。我在第一次启动时得到了一个摄影机实例,所以第二次捕获
onHandleIntent()
摄影机时已锁定。因此,我添加了一个签入
onHandleIntent()
方法

if (ACTION_SHOT.equals(action) && !mAlreadyRunning) {
            mAlreadyRunning = true;
            handleActionShot();
        }
现在它开始工作了