【问题标题】:Android camera fails in IntentService on LollipopAndroid 相机在 Lollipop 上的 IntentService 中失败
【发布时间】:2016-03-18 12:42:17
【问题描述】:

我正在尝试在 IntentService 的背景中拍照。在 Android 4.4 上一切正常,但在 Android 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 版本的相机请求之间的记录差异。

【问题讨论】:

    标签: android camera android-camera intentservice


    【解决方案1】:

    我发现了一个问题。 Receiver 两次捕获到 STATE_OFFHOOK 的意图,并分别启动了两次 IntentService。我在第一次启动时得到了一个摄像头实例,所以第二次抓到onHandleIntent() 摄像头已经被锁定。所以,我在onHandleIntent() 方法中添加了一个检查

    if (ACTION_SHOT.equals(action) && !mAlreadyRunning) {
                mAlreadyRunning = true;
                handleActionShot();
            }
    

    现在它可以工作了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-22
      • 1970-01-01
      • 1970-01-01
      • 2016-04-05
      • 2013-02-20
      • 1970-01-01
      相关资源
      最近更新 更多