我有以下问题:我有一个应用程序,我正在使用Android设备的相机。
我已经构建了自己的相机。BIG problem
是预览开始时所有图像看起来都已调整大小。每个对象看起来都更长,更大......
在surfaceChanged()
方法中我做到了这一点:
List<Size> previews = p.getSupportedPreviewSizes();
我循环了list
previews
,但我找不到更好的预览尺寸。
list
previews
的大小等于7,但这些项目中的一个使我的图片看起来更好!!
以下是我的方法的样子:
public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) {
Log.e(TAG, "surfaceChanged");
if (mPreviewRunning) {
mCamera.stopPreview();
}
Camera.Parameters p = mCamera.getParameters();
List<Size> sizes = p.getSupportedPictureSizes();
List<Size> previews = p.getSupportedPreviewSizes();
Size preview = previews.get(3);
// the size of preview is 7 and looped each item....
p.setPreviewSize(preview.width,preview.height);
int f=p.getJpegQuality();
Size size = sizes.get(3);
p.setJpegQuality(f);
p.setPictureSize(size.width,size.height);
mCamera.setParameters(p);
try {
mCamera.setPreviewDisplay(holder);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
mCamera.startPreview();
mPreviewRunning = true;
}
有人有任何想法吗?
答案 0 :(得分:1)
查看默认相机应用中的PreviewFrameLayout课程。它用于显示SurfaceView
使用它必须具有的宽高比。
答案 1 :(得分:0)
您需要保持宽高比。
如果您的设备支持,请尝试将预览尺寸设置为640x480。这将保持4:3的纵横比。
如果您的开发人员不支持640x480,请尝试将其设置为不同的分辨率,以保持4:3的宽高比。
您可以像这样在相机上设置预览尺寸 -
mCameraDevPara.setPreviewSize(PREVIEW_WIDTH, PREVIEW_HEIGHT);
mCameraDev.setParameters(mCameraDevPara);
只有在设置预览尺寸后,您才能调用API mCameraDev.setPreviewDisplay(mSurfaceHolder);
和mCameraDev.startPreview();