четверг, 20 октября 2011 г.

Грабли с камерой?

Наткнувшись на пример кода для работы с камерой пришлось немного попотеть. Вот кусочек кода:

        Size previewSize = camera.getParameters().getPreviewSize();
        float aspect = (float) previewSize.width / previewSize.height;

        int previewSurfaceWidth = preview.getWidth();
        int previewSurfaceHeight = preview.getHeight();

        LayoutParams lp = preview.getLayoutParams();
        if (this.getResources().getConfiguration().orientation != Configuration.ORIENTATION_LANDSCAPE)
        {
            // портретный вид
            camera.setDisplayOrientation(90);
            lp.height = previewSurfaceHeight;
            lp.width = (int) (previewSurfaceHeight / aspect);
            ;
        }
        else
        {
            camera.setDisplayOrientation(0);
            lp.width = previewSurfaceWidth;
            lp.height = (int) (previewSurfaceWidth / aspect);
        }

        preview.setLayoutParams(lp);
        camera.startPreview();
    }

Задача этого куска - подогнать соотношение сторон окна (экрана телефона) и соотношения сторон кадра с камеры. Ну и повернуть изображение соответственно ориентации телефона. Как выяснилось, причина была в использовании RelativeLayout. На Frame все заработало. Почему? Может кто подскажет?

Комментариев нет:

Отправить комментарий