我在三星Galaxy Tab上测试我的Android应用程序。当我在平板电脑上打开相机应用程序时,我发现您可以为相机设置的可能分辨率为:
但是,当我在Android应用中打开相机实例并获取支持的预览尺寸时,我会得到以下分辨率:
为什么支持的决议存在这样的差异?我希望我的自定义相机活动能够使用全屏相机,我不能使用小于屏幕尺寸的分辨率(我的应用程序说的是800 x 1344)。
// fetch screen size
getWindowManager().getDefaultDisplay().getMetrics(metrics);
int width = metrics.widthPixels;
int height = metrics.heightPixels+navBarHeight;
Log.d(TAG, "screen width and height: " + width + " " + height);
// get supported preview sizes
Camera.CameraInfo cameraInfo = new Camera.CameraInfo();
cameraCount = Camera.getNumberOfCameras();
for(int camIdx = 0; camIdx < cameraCount; camIdx++){
Camera.getCameraInfo( camIdx, cameraInfo );
if(cameraInfo.facing == Camera.CameraInfo.CAMERA_FACING_BACK){
try {
c = Camera.open(); // attempt to get a Camera instance
for(int i =0; i< c.getParameters().getSupportedPreviewSizes().size(); i++){
Size size = c.getParameters().getSupportedPreviewSizes().get(i);
Log.d(TAG, "supported preview size: " + size.width + " " + size.height);
}
} catch (Exception e) {
// Camera is not available (in use or does not exist)
e.printStackTrace();
}
} else if(cameraCount == 1 && cameraInfo.facing == Camera.CameraInfo.CAMERA_FACING_FRONT) {
// device only has a front facing camera
try {
c = Camera.open(camIdx); // attempt to get a Camera instance
} catch (Exception e) {
// Camera is not available (in use or does not exist)
e.printStackTrace();
}
}
}
答案 0 :(得分:1)
为什么支持的决议存在这样的差异?
图片分辨率和预览分辨率不是一回事。前者用于拍照。后者用于预览框架。
我希望自定义相机活动能够使用全屏相机,而且我不能使用小于屏幕尺寸的分辨率(我的应用程序说的是800 x 1344)。
是的,你可以。 Android会很乐意拉伸或缩小预览框,以匹配您用于预览的TextureView
或SurfaceView
的尺寸。事实上,这种拉伸或缩小几乎是不可避免的,因为相机不太可能支持某种任意预览分辨率,恰好匹配您为预览View
尺寸选择的任何内容。