Как получить предварительный просмотр камеры на поверхности в портретном режиме? - PullRequest
1 голос
/ 12 июля 2011

Я использую следующий пользовательский SurfaceView для некоторых задач AR. Я установил android:screenOrientation="portrait" для своей активности в AndroidManifest, но изображение поворачивается на 90 градусов со странным соотношением сторон. Я использую Samsung 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 голосов
/ 12 июля 2011

Приложение камеры на многих устройствах имеет дефект, из-за которого оно будет корректно отображаться только в ландшафтном режиме. При блокировке дисплея в ландшафтном режиме это исправляется, но возникают другие проблемы (например, вынуждает вас управлять макетом)

Обсуждение Stackflow 1

Обсуждение Stackflow 2

Etc ...

Некоторые устройства + версии SDK работают в портретном режиме согласноДокументы и образцы по сети, некоторые не я просто пришел, чтобы ожидать, что они не будут и реализовали маршрут только ландшафт, немного больно, но это работает.

...