在我的应用程序,我需要在640×480设置相机预览大小。 我想我在不同的设备上(以及三星Galaxy S2,4.0.3华硕TF101G,4.3的Galaxy Nexus例如2.3.6)不同的Android版本的代码,并在最后的新的Nexus 5采用Android奇巧(4.4) 。
我的代码完美的作品中的所有设备,但在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;
}
它完美的作品。