android 中相机预览的问题
我有以下问题:我有一个应用程序,我正在使用 Android 设备的相机。
我已经构建了自己的相机。大问题
是当预览开始时,所有图像看起来都调整了大小。每个对象看起来更长、更大......
在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;
}
有人知道吗?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
看一下 PreviewFrameLayout 类。它用于使用其必须具有的宽高比来显示 SurfaceView。
Take a look at the PreviewFrameLayout class from the default Camera app. It's used to display
SurfaceView
using the aspect ratio it must have.您需要保持纵横比。
如果您的设备支持,请尝试将预览尺寸设置为 640x480。这将保持 4:3 的纵横比。
如果您的开发设备不支持 640x480,请尝试将其设置为其他分辨率,以保持宽高比为 4:3。
您可以这样设置相机上的预览尺寸 -
只有设置了预览尺寸后,您才能调用 API
mCameraDev.setPreviewDisplay(mSurfaceHolder);
和mCameraDev.startPreview();
You need to maintain your aspect ratio.
Try setting your preview size to 640x480 if your device supports it. This will maintain an aspect ratio of 4:3.
If your dev doesn't support 640x480 try setting it to a different resolution which maintains an aspect ratio of 4:3.
You can set the preview size on the camera like this -
Only after you set the preview size you can call the API
mCameraDev.setPreviewDisplay(mSurfaceHolder);
andmCameraDev.startPreview();