Камера не в порядке, если клавиатура не открыта - PullRequest
5 голосов
/ 31 марта 2011

У меня здесь 2 андроида.

В обоих случаях, когда я включаю свое приложение, камера показывает ужасно неправильно (повернут на 90 градусов вбок и обычно растягивается ...)

В одном из телефонов есть клавиатура, и когда я открываю клавиатуру, приложение работает правильно ... Поскольку клавиатура задает ориентацию, я понял, что проблема заключается в том, что телефоны ожидают всегда одну и ту же ориентацию, но SDK не согласен.

Как мне сообщить камере, какую ориентацию он должен использовать все время?

1 Ответ

20 голосов
/ 31 марта 2011

Если ваше приложение работает на v2.2 или выше, вы можете повернуть камеру в портретную ориентацию, используя camera.setDisplayOrientation (90).

До версии v2.2 камера будет отображаться только в альбомной ориентации, поэтому вы должны установить действие в альбомную ориентацию.

Для поддержки устройств до v2.2 (уровень API)8) и после этого одним из решений является установка ориентации активности в альбомную ориентацию в AndroidManifest.xml.Затем во время выполнения проверьте уровень API и, если froyo или выше, измените ориентацию активности на портретную и поверните экран камеры.

//in activity onCreate method
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.FROYO)
    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

//After opening camera - call via reflection
Method rotateMethod = android.hardware.Camera.class.getMethod("setDisplayOrientation", int.class);
rotateMethod.invoke(mCamera, 90);

Это самое простое решение, и, надеюсь, по мере появления новых устройств v2.1и ниже будет сброшен радар.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...