Мне нужно иметь возможность поворачивать видео на экране, поэтому я создал пользовательский TextureView, который обеспечивает уровень удобства над MediaPlayer, похожий на то, как выполняется текущая реализация VideoView. В этом сообщении в блоге Android говорится о TextureView:
Поскольку содержимое SurfaceViews не живет в окне приложений, оно не может быть эффективно преобразовано (перемещено, масштабировано, повернуто). Это затрудняет использование SurfaceView внутри ListView или ScrollView. SurfaceView также не может нормально взаимодействовать с некоторыми функциями инструментария пользовательского интерфейса, например, затухающими краями или View.setAlpha().
Чтобы решить эти проблемы, Android 4.0 представляет новый виджет TextureView, который опирается на аппаратный ускоренный 2D-рендеринг и SurfaceTexture. TextureView предлагает те же возможности, что и SurfaceView, но, в отличие от SurfaceView, ведет себя как обычный вид. Например, вы можете использовать TextureView для отображения сцены OpenGL или видеопотока. Сам TextureView может быть анимированным, прокрученным и т.д.
Однако, похоже, что TextureView пытается воспроизвести видео. На целевом устройстве, на котором я тестирую его, есть двухъядерный процессор Rockchip RK3066 с тактовой частотой 1,2 ГГц, четырехъядерный графический процессор Mali-400 (ARM) и 1 ГБ оперативной памяти. Тот же код с помощью VideoViews на этом устройстве отлично работает, но TextureViews либо "заикаются" во время воспроизведения, либо вообще не отображаются (черный ящик с белыми квадратами в левом верхнем углу), в зависимости от конкретного устройства. TextureViews отлично работают на эмуляторе с помощью устройства x86, поставляемого Intel.
Ожидается ли эта производительность, или я должен искать в другом месте, чтобы найти проблему? Благодаря