在我的活动中,我想用android.hardware.Camera拍照。 代码(见下文)在我的AVD中工作正常,但它在我的Android手机上不起作用 - 我得到的只是“错误-1”。
AVD : 目标:Android 2.3.3 SD卡:64 MB WVGA800
电话: 三星Galaxy S2搭载Android 2.3.6
代码:
android.hardware.Camera camera = Camera.open();
camera.takePicture(null, null, mPictureCallback);
camera.stopPreview();
camera.setPreviewCallback(null);
camera.release();
camera = null;
清单:
uses-feature android:name="android.hardware.camera"
uses-permission android:name="android.permission.CAMERA"
我不认为PictureCallback很重要 - 当我在onPictureTaken方法中评论所有内容时,会返回相同的错误。 此外,我已重新启动手机,尝试设置一些相机参数等 - 但没有任何帮助。 我找不到相机的这个特定错误代码。
提前致谢!
答案 0 :(得分:0)
如果没有正确指定 SurfaceView ,它将无效。
即使 SurfaceView 也必须具有最小尺寸。
答案 1 :(得分:0)
您的代码有一个重要的缺失部分。在致电startPreview()
之前,您需要致电takePicture()
。其他重要的是拍摄的照片可以延迟一点,Java Garbage Colletor可以收集你的相机变量,然后才能得到结果。因此,在Picture Callback方法上释放相机变量。您也不需要明确定义setPreviewCallback(null)
,您可以从代码中删除它。
在拍摄照片之前避免两次startPreview()
的执行是很重要的。禁用接口上的元素,并在Callback方法之后(和内部)启用。