android中相机预览的问题

时间:2011-08-25 13:21:02

标签: android camera

我有以下问题:我有一个应用程序,我正在使用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;
        }

有人有任何想法吗?

2 个答案:

答案 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();

相关问题