0

需要明确的是:这与返回的函数无关null。这是关于一个函数抛出一个Exception结果是null.

throw null;

像那样。

我有一个相机应用程序,它在冰淇淋三明治中运行了一段时间。在姜饼中它崩溃了;但是,我刚刚看到Camera.open() throw null

try {
    releaseCameraAndPreview();
    mCamera = Camera.open(camera);
    //and the above throws ...
} catch (Exception e) {
    e.printStackTrace();
    //and e is null, causing a NullPointerException
}

releaseCameraAndPreview这是:

private void releaseCameraAndPreview() {
    if (mCamera != null) {
        mCamera.stopPreview();
        mCamera.release();
        mCamera = null;
    }
}

此时相机为空,因此没有任何反应。

我什至不知道可以抛出null。这是什么意思?

4

2 回答 2

0

重启手机解决了这个问题;我只能假设相机在测试过程中以某种方式进入了损坏状态。

于 2013-06-12T10:24:17.343 回答
0

重新锁定相机以防止其他进程访问它。除非调用 unlock(),否则默认情况下会锁定相机对象。通常使用 reconnect() 代替。
从 API 级别 14 开始,相机在 start() 中为应用程序自动锁定。应用程序可以在录制开始后使用相机(例如:变焦)。录制开始或停止后无需调用它。

检查对象是否被锁定,如果是,请尝试将其解锁。

https://developer.android.com/reference/android/hardware/Camera.html#lock%28%29

于 2015-07-27T14:16:55.833 回答