2010-09-11 5 views
6

Я пытаюсь разработать приложение, которое использует камеру. Пока это работает хорошо, за исключением того, что я не могу заставить ориентацию быть «портретом». Кажется, он работает хорошо, если я заставляю все действия «пейзажировать», потому что предварительный просмотр камеры, похоже, соответствует ландшафту.Использование камеры в портретной ориентации

Можно ли использовать камеру в портретном режиме?

+0

находится на G1 устройства или неиспользования устройства g1, как G1S было камеры ошибки предварительного просмотра для ориентации –

+0

Привет Фред, я используя Samsung Galaxy S ... – paperclip

ответ

6

Android-устройство v2.2 и выше, содержит и API, чтобы повернуть отображение на портрет. Устройства ниже 2.2 - только ландшафт. Лучше всего определить, является ли устройство 2.2 и поворачивается на 90 градусов. Вернитесь на пейзаж для устройств под 2.2. Хорошей новостью является то, что большинство устройств Android находятся на 2,2 и выше.

Проверьте мой ответ здесь для получения дополнительной информации:

Camera is wrong unless keyboard is open

+0

хорошее знание, я мог видеть много людей, имеющих эту проблему, не найдя решения. –

+0

Возможно, вы захотите добавить настройки в приложение, чтобы пользователи могли создавать ландшафт. Я тестировал, и кажется, что невозможно сделать портрет на некоторых устройствах. До сих пор я знаю, что эти устройства не могут быть настроены на портрет, даже с Android 2.2+: «GT-S6102», «GT-S5360», «GT-S5660», «YP-G1», «YP-G70». Я уверен, что есть намного больше: / –

0

Редактировать: Я был посреди Adobe AIR для разработки Android, когда я ответил на этот вопрос и оглядываясь на него, я понимаю, что этот вопрос не касался Adobe AIR.

Adobe говорит:

На устройствах, которые могут изменить ориентацию экрана, такие как мобильные телефоны, объект Видео прилагается к камере будет показывать только вертикальное видео в альбомной ориентации, аспект. Таким образом, мобильные приложения должны использовать ландшафтную ориентацию при отображении видео и не должны автоматически вращаться.

http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/media/Camera.html

Если вы действительно хотите использовать камеру в портретном режиме, мое предложение, чтобы повернуть видео объект.

Вот некоторые примеры код, который вращает видео объекта (_video) под углом в градусах (источник был снят с другого места на StackOverflow):

 var matrix:Matrix = _video.transform.matrix; 
     var rect:Rectangle = _video.getBounds(this); 
     matrix.translate(- (rect.left + (rect.width/2)), - (rect.top + (rect.height/2))); 
     matrix.rotate((angle/180)*Math.PI); 
     matrix.translate(rect.left + (rect.width/2), rect.top + (rect.height/2)); 
     _video.transform.matrix = matrix; 
3
public void surfaceCreated(SurfaceHolder holder) 
{ 
// The Surface has been created, acquire the camera and tell it where to draw. 
mCamera = Camera.open(); 

Parameters params = mCamera.getParameters(); 

if (this.getResources().getConfiguration().orientation != Configuration.ORIENTATION_LANDSCAPE) 
{ 
params.set("orientation", "portrait"); 
mCamera.setDisplayOrientation(90); 
} 

try 
{ 
mCamera.setPreviewDisplay(holder); 
} 
catch (IOException exception) 
{ 
mCamera.release(); 
mCamera = null; 
} 

} 
Смежные вопросы