如何在纵向模式下在曲面支架上进行相机预览?

时间:2011-07-12 17:05:17

标签: android camera surfaceview

我正在使用以下自定义SurfaceView进行某些AR任务。我在AndroidManifest中为我的活动设置了android:screenOrientation="portrait",但图像以奇怪的宽高比旋转了90度。我正在使用三星Galaxy S ......

有人可以帮忙吗?

public class CustomCameraView extends SurfaceView
{
    Camera camera;
    SurfaceHolder previewHolder;

    SurfaceHolder.Callback surfaceHolderListener = new SurfaceHolder.Callback() {
        public void surfaceCreated(SurfaceHolder holder) {
            try {
                camera = Camera.open();
                camera.setPreviewDisplay(previewHolder);
            } catch (IOException e) {
                e.printStackTrace();
            }       
        }

        public void surfaceChanged(SurfaceHolder surfaceHolder, int format, int w, int h)
        {
            Parameters params = camera.getParameters();
            params.setPreviewSize( 800, 480);
            params.setPictureFormat(PixelFormat.JPEG);
            camera.setParameters(params);
            camera.startPreview();
        }

        public void surfaceDestroyed(SurfaceHolder arg0)
        {
            camera.stopPreview();
            camera.release();
        }
    };

    public CustomCameraView(Context context)
    {
        super(context);

        previewHolder = this.getHolder();
        previewHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
        previewHolder.addCallback(surfaceHolderListener);
    }

    protected void onDraw (Canvas canvas)
    {
        super.onDraw(canvas);
    }

    public void closeCamera()
    {
        if(camera != null)
            camera.release();
    }
}

1 个答案:

答案 0 :(得分:0)

许多设备上的相机应用程序都有一个缺陷,它只能在横向模式下正确显示,将显示屏锁定为横向模式可修复此问题,但还有其它问题(比如强迫您管理布局)

Stackflow Discussion 1

Stackflow Discussion 2

等...

某些设备+ sdk版本按照文档和网络样本纵向工作,有些不是我只是期望他们不会并实现仅景观路线,有点痛苦但它的工作原理