У меня возникла проблема с попыткой просмотра камеры в портретном режиме. Я читал различные статьи об этом, и я решил, что он имеет следующий код:
Display display = ((CaptureActivity)context).getWindowManager().getDefaultDisplay(); int width = display.getWidth(); int height = display.getHeight(); if (Integer.parseInt(Build.VERSION.SDK) >= 8) { setDisplayOrientation(camera, 90); }else{ Camera.Parameters parameters = camera.getParameters(); parameters.set("orientation", "portrait"); camera.setParameters(parameters); }
Где setDisplayOrientation () определяется как:
protected void setDisplayOrientation(Camera camera, int angle) { Method downPolymorphic; try { downPolymorphic = camera.getClass().getMethod( "setDisplayOrientation", new Class[] { int.class }); if (downPolymorphic != null) downPolymorphic.invoke(camera, new Object[] { angle }); } catch (Exception e1) { } }
Теперь я пробовал этот код на вкладке Galaxy Tab, и это не удалось. Я решил это (попытка и подход к ошибкам), используя следующий код:
if (height == 1024 && width == 600) { Camera.Parameters parameters = camera.getParameters(); parameters.set("orientation", "portrait"); parameters.setRotation(90); camera.setParameters(parameters); }
Теперь мои два вопроса:
1) Почему существует такая проблема, в то время как вкладка Galaxy имеет версию 2.2 и
2) Есть ли лучшее решение этой проблемы?
Большое спасибо за ваше время!
Для установки ориентации дисплея проверьте официальные документы , а не только жесткий код на 90 градусов.