Использование камеры в портретной ориентации - PullRequest
6 голосов
/ 11 сентября 2010

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

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

Ответы [ 3 ]

6 голосов
/ 20 июня 2011

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

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

Камера не работает, если клавиатура не открыта

3 голосов
/ 24 августа 2012
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;
}

}
0 голосов
/ 11 апреля 2011

edit: Я был в процессе разработки 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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...