【发布时间】:2014-07-24 01:19:40
【问题描述】:
我正在开发一个简单的应用程序,它可以让用户为自己拍照,然后对图像进行修改。这一直工作得很好,但现在突然尝试拍照导致整个手机崩溃。
我能够“解决”这个问题的唯一方法是改变:
mCamera = Camera.open(1);
到:
mCamera = Camera.open();
这对我来说没有意义,因为 Camera.open(1) 在应用程序的整个生命周期中一直运行良好。使用时手机甚至会死机:
mCamera.takePicture(null, null, null); //Useless I know. Just for test purposes.
最糟糕的是,由于整个手机崩溃并重新启动,我无法得到问题的 logcat。如果我尝试在模拟器中运行它,它运行得很好。即使经过大量搜索,我也没有找到任何拥有相机 api 导致整个手机崩溃的人。
所以我想我的问题是,有没有人知道可能是什么原因造成的?或者我可能会从哪里着手修复它?
编辑: 我应该补充一点,我也尝试过使用:
int cameraCount = 0;
Camera.CameraInfo cameraInfo = new Camera.CameraInfo();
cameraCount = Camera.getNumberOfCameras();
for (int camIdx = 0; camIdx < cameraCount; camIdx++) {
Camera.getCameraInfo(camIdx, cameraInfo);
if (cameraInfo.facing == Camera.CameraInfo.CAMERA_FACING_FRONT) {
try {
mCamera = Camera.open(camIdx);
} catch (RuntimeException e) {
Log.e(TAG, "Camera failed to open: " + e.getLocalizedMessage());
}
}
}
这也打开了前置摄像头并允许我进行预览,与 mCamera = Camera.open(1); 相同但是拍照的时候还是会死机。
【问题讨论】:
-
Camera.open(int)需要有效的相机 ID。getNumberOfCameras()告诉你什么? -
即使我面临同样的问题,但在我的情况下,应用程序冻结并且我收到错误 100 我已释放相机对象仍然遇到该错误 100
-
你发现了吗?我有同样的问题。当我尝试拍照时,整个手机都会重新启动!!
标签: java android android-camera