2013-02-22 12 views
6

MediaPlayer.setVideoScalingMode (tryb int) jest dobre dla interfejsu API 16 i nowszego, umożliwiając wybór między VIDEO_SCALING_MODE_SCALE_TO_FIT i VIDEO_SCALING_MODE_SCALE_TO_FIT_WITH_CROPPING.Jak osiągnąć setVideoScalingMode dla wczesnych wersji Androida

Czy istnieje sposób na osiągnięcie tej samej funkcjonalności dla Androida przed API 16?

Próbowałem ustawić wymiary SurfaceView używane przez MediaPlayer, ale MediaPlayer przycina oryginalne wideo, aby pasował do dowolnych wymiarów SurfaceView.

Odpowiedz

0

Wobec się z tym samym problemem, dostać rozwiązanie z tym artykułem http://blog.lemberg.co.uk/surface-view-video-cropping Ale z małą zmianą: domyślnie TextureView ma już skalę, aby uczynić proporcje ekranu dopasowanie wideo, więc masz w lewo/prawo lub góra/pasy dolne dla wysokich/szerokich filmów. I kiedy używasz podejścia z artykułu, uzyskujesz Skalę + Skali TextureView obliczoną przez updateTextureViewSize, czyli bardzo duży indeks skali. Moje rozwiązanie tego problemu jest, aby obliczyć względną wartość skali:

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

zamiast

matrix.setScale(scaleX, scaleY, pivotPointX, pivotPointY); 
Powiązane problemy