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