要明确:这不是关于返回null
的函数。这是一个抛出Exception
的函数,结果是null
。
throw null;
就像那样。
我有一个相机应用程序,它在冰淇淋三明治中工作了一段时间。在姜饼中它崩溃了;但是,我刚看到Camera.open()
抛出 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。这是什么意思?
答案 0 :(得分:0)
重新启动手机修复此问题;我只能假设相机在测试过程中会以某种方式进入损坏状态。
答案 1 :(得分:0)
重新锁定相机以防止其他进程访问它。除非调用unlock(),否则默认情况下会锁定相机对象。通常使用reconnect()代替 从API级别14开始,相机会在start()中自动锁定应用程序。应用程序可以在录制开始后使用相机(例如:缩放)。录制开始或停止后无需呼叫。
检查对象是否已锁定,如果是,请尝试解锁。
https://developer.android.com/reference/android/hardware/Camera.html#lock%28%29