【发布时间】:2015-01-27 08:14:20
【问题描述】:
我正在尝试使用片段实现我自己的相机。一切进展顺利,但最近我在谷歌开发者控制台中看到了相机在初始化时为空的崩溃报告。这是我如何在我的应用程序中初始化相机的代码。
/** A safe way to get an instance of the Camera object. */
public static Camera getCameraInstance(int cameraType) {
Camera c = null;
try {
c = Camera.open(cameraType);
} catch (Exception e) {
e.printStackTrace();
}
return c; // returns null if camera is unavailable
}
以上代码是 Google 开发人员在其博客上推荐的。看相机可能会返回 null,这是我在某些时候(并非总是)得到相机对象 null 的情况。所以我的问题是,如何正确初始化相机以避免为空?
注意:我关注了 android dev 博客,我正在通过以下方式释放相机资源 onPause。
@Override
public void onPause() {
// free up camera so that other program can use it
if (camera != null) {
camera.stopPreview();
camera.release();
paused = true;
}
// getActivity().setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
// // set the activity back to //whatever it needs to be when going
// back.
super.onPause();
}
我正在以下列方式在 onResume 中初始化相机
@Override
public void onResume() {
// resume camera
if (paused) {
paused = false;
try {
initCamera();
} catch (IOException e) {
e.printStackTrace();
}
}
super.onResume();
}
谁能告诉我为什么我在极少数情况下会得到空相机对象?
【问题讨论】:
-
除了@AlonsoFloo 的回答之外,您可以在相机返回 null 时向应用用户显示错误 toast,而不是让应用崩溃。
标签: android camera android-camera