Android:更改屏幕上的相机预览大小

Posted

技术标签:

【中文标题】Android:更改屏幕上的相机预览大小【英文标题】:Android: Changing the camera preview size on screen 【发布时间】:2011-10-24 07:19:35 【问题描述】:

目前,相机预览被拉伸以适应整个屏幕 (854x480)。我希望它改为显示 (427x240)。

这里是相机实现的相关代码:

Camera.Parameters params = camera.getParameters();
params.setPreviewSize(427, 240); 
mCamera.setParameters(params);
public class CameraTest extends Activity     
    private Preview mPreview;
    private DrawOnTop mDrawOnTop;

    @Override
    protected void onCreate(Bundle savedInstanceState) 
        super.onCreate(savedInstanceState);

        // Hide the window title.
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
        requestWindowFeature(Window.FEATURE_NO_TITLE);

        // Create our Preview view and set it as the content of our activity.
        // Create our DrawOnTop view.
        mDrawOnTop = new DrawOnTop(this);
        mPreview = new Preview(this, mDrawOnTop);
        setContentView(mPreview);
        addContentView(mDrawOnTop, new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
    

【问题讨论】:

【参考方案1】:

在developer.android.com看到这个:

如果你想为你的相机预览设置一个特定的大小,设置这个 在上面的 cmets 中提到的 surfaceChanged() 方法中。什么时候 设置预览大小,您必须使用来自的值 getSupportedPreviewSizes()。不要在 setPreviewSize() 方法。

并写下这个以获得最小的:

        List<Size> list = mCamera.getParameters().getSupportedPictureSizes();
    Size size = list.get(0);
    int height = size.height;
    int minHeight=9999999;
    for(int i = 0; i<=list.size(); i++)
        if(list.get(i).height<minHeight)
            minHeight = list.get(i).height;
        
    

希望它有效!

【讨论】:

【参考方案2】:

mCamera.setParameters(params); 只设置参数。它将被传递给相机硬件。

要设置预览窗口大小,您必须修改相机布局文件。

【讨论】:

以上是关于Android:更改屏幕上的相机预览大小的主要内容,如果未能解决你的问题,请参考以下文章

4:3 平板电脑上的 Android 相机预览纵横比

Android 相机预览在预览中拉伸,而不是在拍照后

android 相机 怎么改变相机预览界面大小

如何在android中设置相机预览的大小

如何在Android中修复相机预览(surfaceview)的正确纵横比?

Android:在方向更改时保留相机预览,而其他视图可以旋转