Android的Camera类中的getSupportedPreviewSizes()方法只返回横向(landscape)的预览尺寸,而不包括纵向(portrait)的预览尺寸。要解决这个问题,可以通过以下代码获取支持的所有预览尺寸,包括横向和纵向的尺寸:
Camera camera = Camera.open();
Camera.Parameters parameters = camera.getParameters();
List supportedSizes = parameters.getSupportedPreviewSizes();
// 添加纵向尺寸
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH_MR1) {
List supportedSizesPortrait = parameters.getSupportedPreviewSizes();
supportedSizes.addAll(supportedSizesPortrait);
}
camera.release();
这段代码利用了Camera类中的getParameters()和getSupportedPreviewSizes()方法获取所有预览尺寸,然后通过添加纵向尺寸的方式解决了问题。需要注意的是,在Android 4.0及以上版本的设备上,纵向尺寸需要通过新的getSupportedPreviewSizes()方法获取。最后,不要忘记在使用完相机之后释放资源。