我在我的应用程序中遇到了这个奇怪的问题,当我将 parameters.setPreviewSize(width,height) 设置为从支持的预览尺寸 (Camera.Parameters.getSupportedPreviewSizes()) 获得的特定值时,相机没有捕捉到图片。当我尝试使用其他一些尺寸(从支持的预览尺寸获得)时,相机会拍照。
首先,我打开相机并在 surfaceChanged 方法中设置相机参数。我的目标是根据设备屏幕的宽度和高度设置相机的预览大小。我正在寻找支持的最大尺寸,其宽度小于或等于屏幕设备的宽度。
在 Nexus 4 上,我得到的值为 768 * 432。这是我循环通过 getSupportedPreviewSizes(); 时所有尺寸的列表;
宽高1280*720800
*
480768*432720
* 480640
*
480576*432480*320384*288352
*
288320
*240240
*
160176
*144
我将预览大小设置为 768 * 432,如下所示:- parameters.setPreviewSize(768, 432);
然后设置一些其他参数,最后是 camera.setParameters(parameters); 和 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 上报告。该相机在许多其他设备上运行良好。
有没有办法可以确保我在特定设备上选择的预览大小将始终在该设备上工作?
有人可以对此有所了解。
提前非常感谢。苛刻的86