Вращение фактического видеобуфера в Videoview

В настоящее время я разрабатываю приложение специально для устройств Android GoogleTV, где использование или принудительная ориентация приложения на что-либо, кроме ландшафта, не включено и не будет включено в будущем, насколько я понял, на самом деле приложение просто падает пытаюсь запустить setRequestedOrientation();

Видеопросмотры наследуют позиционные свойства от обычных просмотров, таких как SetX, SetY и, в частности, SetRotation.

Вы можете установить поворот видеопросмотра на 90 градусов, но фактический видеобуфер НЕ будет вращаться. Я пробовал все: от использования старого медиаплеера > surfaceview.getHolder().lockcanvas().rotate(degrees) всеми мыслимыми способами до перезаписи метода onDraw пользовательского видеопросмотра, который расширяет обычный класс, ни один из которых я не мог успешно работать.

В двух словах, как я могу повернуть ФАКТИЧЕСКОЕ видео в видеопросмотре, не меняя ориентацию устройства? если у вас есть рабочий пример повернутого видеопросмотра с повернутым содержимым, пожалуйста, объясните, как вы заставили его работать.

Заранее спасибо.

Я хотел бы, чтобы вы заметили, что мы разрабатываем для Android 3.1, а также, что все до сих пор было закодировано динамически, все изображения и видео создаются с помощью кода, только определенные макеты, которые мы используем для элементов индексации Z, были определены в файл layout.xml.


person user1073560    schedule 30.11.2011    source источник


Ответы (1)


VideoView не поддерживает поворот видео, даже если матрица композиции установлена ​​правильно и используется атрибут поворота.

Что вы можете сделать, так это использовать TextureView и установить его атрибут rotate="90" (например). Затем он будет вращать кадры, но соотношение сторон — это то, с чем вам нужно справиться самостоятельно. Для этого вы можете использовать textTureView.setScaleX((screenHeight * 1.0f)/screenWidth)

Подробнее см. здесь: Вращение Android VideoView

person Cynichniy Bandera    schedule 10.05.2013