Android相机预览无法通过surfaceTexture工作

时间:2015-05-19 20:18:18

标签: android opengl-es android-camera external glsurfaceview

我正试图通过openGL在Android上绘制相机预览。通过SurfaceTexture获取预览纹理作为外部EGL图像,然后使用相当简单的着色器绘制它:

    public  List<Camera.Size>  getSupportedResolutions()
    {
        List<Camera.Size> previewSizes = mCamera.getParameters().getSupportedPreviewSizes();
        List<Camera.Size> pictureSizes = mCamera.getParameters().getSupportedPictureSizes();

        pictureSizes.retainAll(previewSizes);

        return pictureSizes;
    }

 private void setResolution(int position)
    {
        List<Camera.Size> res = getSupportedResolutions();

        Camera.Parameters p =  mCamera.getParameters();
        p.setPictureSize(res.get(position).width, res.get(position).height);
        p.setPreviewSize(res.get(position).width, res.get(position).height);

        mCamera.setParameters(p);
    }

在nexus 5上,它适用于所有预览图像,最高可达1280x960。然而,对于最大的2:1920x1080和1600x1200,屏幕只是空白。我通过 camera.getSupportedPreviewSizes 在我的相机中设置预览尺寸,所以我不想设置相机不支持的任何东西。

=IF(ISERROR(INDEX(Array_Range,SMALL(IF(Health_Check_Date<DATE(YEAR(TODAY())-2,MONTH(TODAY()),DAY(TODAY())),ROW(Health_Check_Date)),ROW($1:$1)),1)),"",INDEX(Array_Range,SMALL(IF(Health_Check_Date<=DATE(YEAR(TODAY())-2,MONTH(TODAY()),DAY(TODAY())),ROW(Health_Check_Date)),ROW($1:$1)),1))

任何暗示这些决议可能出错的建议?也许在opengl中有某种大小限制?

1 个答案:

答案 0 :(得分:0)

我想出了问题。如果预览大小大于我的surfaceView的大小,我只是设置了不正确的视口。通过(0,screenW),(0,screenH)将其钳制来解决问题。外部图像没有单独的限制,这完全是我的错误