我在我的应用程序中遇到这个古怪的问题,当我将parameters.setPreviewSize(width,height)设置为从支持的预览大小获取的特定值时,相机无法捕获图片(Camera.Parameters.getSupportedPreviewSizes() )。当我尝试使用其他一些尺寸(从支持的预览尺寸获得)时,相机会拍照。
首先我打开相机&在surfaceChanged方法中设置摄像机参数。我的目标是根据宽度和宽度来设置相机的预览尺寸。设备屏幕的高度。我正在寻找支持的最大尺寸,其宽度小于或等于屏幕设备的宽度。
在Nexus 4上,我得到的值为768 * 432.以下是我通过getSupportedPreviewSizes()循环时所有大小的列表;
宽度高度
1280 * 720
800 * 480
768 * 432
720 * 480
640 * 480
576 * 432
480 * 320
384 * 288
352 * 288
320 * 240
240 * 160
176 * 144
我将预览尺寸设置为768 * 432,如下所示: - parameters.setPreviewSize(768,432);
然后设置一些其他参数,最后是camera.setParameters(参数);和camera.startPreview()。
当我单击捕获按钮时,自动对焦回调会执行: -
Camera.AutoFocusCallback mAutoFocusCallback = new Camera.AutoFocusCallback() {
public void onAutoFocus(boolean success, Camera camera) {
camera.setPreviewCallback(null);
camera.takePicture(shutterCallback, rawCallback, jpegCallback);
}
};
但是然后camera.takePicture不会调用其余的回调,实际拍摄的是图片。
如果我将预览尺寸设置为800 * 480或720 * 480或上面列表中的任何其他尺寸,则相同的代码有效。
截至目前,此问题仅在Nexus 4上报告。相机在许多其他设备上运行良好。
有没有办法可以确定我在特定设备上选择的预览尺寸始终可以在该设备上使用?。
有人可以对此有所了解。
提前多多感谢。 harsh86
答案 0 :(得分:0)
尝试在拍照前停止预览。
答案 1 :(得分:0)
预览尺寸与硬件相关。无法保证从一台设备获得的预览尺寸可以在其他设备上使用。您必须在每台设备上检查支持的预览大小。此外,您永远不能100%信任所有获得的预览尺寸。由于硬件原因,其中一些可能无法正常工作。当我想在三星的设备上设置一些预览尺寸时,我有经验,并非所有预览尺寸都能正常工作。所以有时候,你必须尝试不同的预览尺寸。