Совместимость версий Android API - PullRequest
8 голосов
/ 21 ноября 2010

Я бы хотел, чтобы мое приложение работало на обеих версиях Android 2.1 и 2.2.В одной области моего приложения есть камера в портретном стиле - процесс создания предварительного просмотра портретной камеры отличается (насколько я знаю) в двух версиях ОС.Вот как:

2.1:

Camera.Parameters parameters = camera.getParameters();
parameters.set("orientation", "portrait");
camera.setParameters(parameters);

2.2:

camera.setDisplayOrientation(90);

метод setDisplayOrientation (int) стал доступен в API уровня 8 (2.2) и, таким образом,, не может использоваться на 2.1;тем не менее, использование метода 2.1 (Camera.Parameters) не поворачивает предварительный просмотр и изображение правильно на 2.2.

Кажется странным, что эта несовместимость существует - есть ли более правильный способ сделать это, который позволит мнеориентироваться на обе платформы?

Ответы [ 3 ]

5 голосов
/ 21 июля 2012

Попробуйте:

Camera.Parameters parameters = camera.getParameters();
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.FROYO) {
    parameters.setRotation(90);
    camera.setParameters(parameters);
} else {
    camera.setDisplayOrientation(90);
}
1 голос
/ 21 января 2011

Попробуйте вызвать Activity.setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT) в обратном вызове onConfigurationChanged ИЛИ обнаружить исходный код из Camera.setDisplayOrientation метод из Android 2.2 (или 2.3) и попробуйте реализовать нечто подобное в вашем приложении.

См. также связанный вопрос на stackoverflow.com

1 голос
/ 21 ноября 2010

Нет общего способа изменить камеру на ориентацию на портретный режим до v2.2.Набор («ориентация», «портрет») работает на некоторых устройствах, а не на других.

Мне это тоже показалось странным.

...