【发布时间】:2013-07-15 13:10:03
【问题描述】:
我的应用很基础很简单,只需要打开相机(连图片都不显示,我注释了代码)
所以,基本上,我有类似的东西:
@Override
public void onResume() {
super.onResume();
if (camera != null) {
//Just to be sure
camera.stopPreview();
camera.setPreviewCallback(null);
camera.release();
camera = null;
}
Log.e("DebugCam", "Before");
camera = Camera.open();
Log.e("DebugCam", "After");
}
@Override
protected void onPause() {
super.onPause();
if (camera != null) {
camera.stopPreview();
camera.release();
camera = null;
}
}
但我的 logcat 只显示第一条消息:
Before
应用刚刚挂起,我必须重启设备才能让它再次工作!!!
我真的不明白问题出在哪里,或者我如何才能至少避免真正烦人的冻结。
我真的不明白如何调试这个......
编辑:我在 Android 错误跟踪中看到了这一点,听起来我需要一个解决方法,因为补丁于 6 月发布) https://code.google.com/p/android/issues/detail?id=1578
【问题讨论】:
-
手机没有重启。手机不是 Galaxy(索尼和阿尔卡特)
-
除了应用程序之外,您的设备相机在正常打开相机或拍照时会这样吗?
-
官方 Android 错误跟踪器中接受的错误使我得出结论,某些应用程序是有罪的。一旦发生这种情况,即使是官方相机应用程序也会冻结,但我无法在其他应用程序上重现此错误,可能是因为我每天调试我的应用程序 50 次,并且无法多次使用其他应用程序
-
在拍照前删除预览回调,如 camera.setPreviewCallback(null); camera.takePicture(null, null, yourPictureCallback);还有一件事,通过谷歌搜索,我发现即使您的代码正常,previewCallback 有时也会导致问题。如果您的示例应用程序不是必须的,那么请尽量避免它。