【发布时间】:2023-04-01 21:20:01
【问题描述】:
在我的应用中,我需要将相机预览尺寸设置为 640x480。 我在不同的设备和不同的android版本上尝试了我的代码(例如三星galaxy S2上的2.3.6,华硕tf101g上的4.0.3,galaxy nexus上的4.3),最后在带有android kitkat(4.4)的新Nexus 5上.
我的代码在所有设备上都能完美运行,但在 Nexus 5 上却无法运行。为什么? 事实上经过这一步:
int PREVIEW_WIDTH = 640;
int PREVIEW_HEIGHT = 480;
if(isSupportedSize(PREVIEW_WIDTH,PREVIEW_HEIGHT,mCamera)){
//isSupportedSize controls that width and height are supported by mCamera
mCamera.getParameters().setPreviewSize(PREVIEW_WIDTH,PREVIEW_HEIGHT);
Log.d("debug myapp", "Preview sizes: " + mCamera.getParameters().getPreviewSize().width
+ ", "
+ mCamera.getParameters().getPreviewSize().height);
}
或者这个步骤:
int PREVIEW_WIDTH = 640;
int PREVIEW_HEIGHT = 480;
Camera.Parameters param= mCamera.getParameters();
if(isSupportedSize(PREVIEW_WIDTH,PREVIEW_HEIGHT,param)){
//isSupportedSize controls that width and height are supported by mCamera
param.setPreviewSize(PREVIEW_WIDTH,PREVIEW_HEIGHT);
mCamera.setParameters(param);
Log.d("debug myapp", "Preview sizes: " + mCamera.getParameters().getPreviewSize().width
+ ", "
+ mCamera.getParameters().getPreviewSize().height);
}
仅在 Nexus5 上,日志为 1920、1080。 为什么?有人有同样的问题吗?
isSupportedSize():
private boolean isSupportedSize(int width, int height, Camera cam){
Camera.Parameters param = cam.getParameters();
List<Size> suppSizes = param.getSupportedPreviewSizes();
for (Size s: suppSizes){
if (s.width == width && s.height == height){
Log.d("debug", "sizes supported!");
return true;
}
}
return false;
}
完美运行。
【问题讨论】:
-
据我所知,Nexus 5 确实支持 640x480 预览尺寸,但您的 isSupportedSize() 可能是错误的。无论如何,第一个 sn-p 是错误的,因为它没有调用 camera.setParameters()。
-
mCamera.getParameters().setPreviewSize(640, 480) 适用于其他设备
标签: parameters camera size preview android-4.4-kitkat