首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Android摄像头预览尺寸

Android摄像头预览尺寸
EN

Stack Overflow用户
提问于 2018-03-28 19:35:22
回答 1查看 128关注 0票数 1

我有这个代码用于创建相机预览来扫描二维码,但不起作用:

代码语言:javascript
运行
复制
try {
            c = ((Class<? extends Controllo>) getIntent().getExtras().get("ctrl")).newInstance();
        } catch (Exception e) {
            Log.w("Error", e.toString());
            throw new RuntimeException(e.getMessage());
        }


        autoFocusHandler = new Handler();
        mCamera = getCameraInstance();

        Display display = getWindowManager().getDefaultDisplay();
        Point size = new Point();
        display.getSize(size);

        FrameLayout preview = (FrameLayout)findViewById(com.x720.qrscanner.R.id.cameraPreview);

        Camera.Parameters parameters = mCamera.getParameters();
        Boolean trovatoParam = false;
        int minValWidth = 0;
        int minValHeight = 0;
        for (Camera.Size previewSize: mCamera.getParameters().getSupportedPreviewSizes())
        {
            Log.e("SIZE", previewSize.width+" - " +previewSize.height);
            Log.e("SCHERMO", size.y+" - "+size.x);
            if(previewSize.width > minValWidth && previewSize.height > minValHeight && previewSize.width <= size.y && previewSize.height <= size.x) {
                parameters.setPreviewSize(previewSize.width, previewSize.height);
                Log.e("-------------SELEZIONO", previewSize.width+"");
                trovatoParam = true;
                minValWidth = previewSize.width;
                minValHeight = previewSize.height;
            }
        }

        if(trovatoParam == true)
            mCamera.setParameters(parameters);


        /* Instance barcode scanner */
        scanner = new ImageScanner();
        scanner.setConfig(0, Config.X_DENSITY, 3);
        scanner.setConfig(0, Config.Y_DENSITY, 3);

        scanner.setConfig(0, Config.ENABLE, 0);
        // only enable QRCODE
        scanner.setConfig(Symbol.QRCODE, Config.ENABLE, 1);

        mPreview = new CameraPreview(this, mCamera, previewCb, autoFocusCB);

        preview.addView(mPreview);

这是为了得到他的相机:

代码语言:javascript
运行
复制
public static Camera getCameraInstance(){
    Camera c = null;
    try {
        c = Camera.open();
    } catch (Exception e){
    }
    return c;
}

我的问题是相机预览没有填满整个屏幕,但我有一个很大的顶部边框。我用的是galaxy s8+。很抱歉我的英语不好

问题图片:

EN

回答 1

Stack Overflow用户

发布于 2018-03-28 20:38:38

1)如果你的容器的宽度和高度作为匹配的父元素,它肯定会填满屏幕。检查framelayout是否在任何其他布局中?

代码语言:javascript
运行
复制
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:id="@+id/container"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
    </FrameLayout>

2)如果您在Frame Layout之外使用Relative layout,请将其更改为线性布局

3)或者尝试使用SurfaceView而不是FrameLayout

请检查并让我知道..祝你好运。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49533467

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档