Как достичь setVideoScalingMode для ранних версий Android

MediaPlayer.setVideoScalingMode (режим int) хорош для API 16 и выше, позволяя выбирать между VIDEO_SCALING_MODE_SCALE_TO_FIT и VIDEO_SCALING_MODE_SCALE_TO_FIT_WITH_CROPPING .

Есть ли способ достичь той же функциональности для Android до API 16?

Я попытался установить размеры SurfaceView используемые MediaPlayer, но MediaPlayer SurfaceView исходное видео в соответствии с любыми измерениями SurfaceView .

Solutions Collecting From Web of "Как достичь setVideoScalingMode для ранних версий Android"

Поставленная с той же проблемой, получите решение с этой статьей http://blog.lemberg.co.uk/surface-view-video-cropping Но с небольшими изменениями: По умолчанию TextureView уже имеет масштаб, чтобы сделать соотношение сторон экрана в соответствии с графикой, Поэтому вы получаете левую / правую или верхнюю / нижнюю полосы для видео высокой / широкой. И когда вы используете подход из статьи, вы получаете масштаб шкалы TextureView +, вычисленный updateTextureViewSize, поэтому очень крупный индекс. Мое решение этой проблемы заключается в вычислении относительного значения шкалы:

 float div = Math.max(scaleX,scaleY)-Math.min(scaleX, scaleY); matrix.setScale(1+div,1+div,pivotPointX,pivotPointY); 

вместо

  matrix.setScale(scaleX, scaleY, pivotPointX, pivotPointY);