2011-06-07 11 views
5

Estoy usando la demo de Android MediaPlayer para video. Tengo transmisión de video de 640x480. Simplemente quiero que el video sea lo más grande posible (en cualquier orientación de dispositivo) mientras se mantiene la relación de aspecto. No puedo lograr que haga esto. Simplemente se extiende por toda la pantalla. Mi SurfaceView en el diseño no mantiene la relación de aspecto en "fill_parent" o "wrap_content". Cuando compruebo (y cambiar el tamaño de la superficie en el código, que parece ignorar los cambios y lo que es raro es que me han dicho en este código que mi tamaño del vídeo es:. 176 x 144.Android Streaming Video - Necesita relación de aspecto

public void onVideoSizeChanged(MediaPlayer mp, int width, int height) 
{ 
    Log.v(TAG, "onVideoSizeChanged called"); 
    Log.v(TAG, "Surface Width: " + width + " Surface Height: " + height); 
    if (width == 0 || height == 0) { 
     Log.e(TAG, "invalid video width(" + width + ") or height(" + height + ")"); 
     return; 
    } 
    mIsVideoSizeKnown = true; 
    mVideoWidth = width; 
    mVideoHeight = height; 

    mVideoWidth = mp.getVideoWidth(); 
    mVideoHeight = mp.getVideoHeight(); 
    Log.v(TAG, "Surface Width: " + mVideoWidth + " Surface Height: " + mVideoHeight); 
    if (mIsVideoReadyToBePlayed && mIsVideoSizeKnown) { 
     startVideoPlayback(); 
    } 
} 

Aquí es donde trato de cambiar el tamaño:?

private void startVideoPlayback() { 
    Log.v(TAG, "startVideoPlayback"); 
    holder.setFixedSize(mVideoWidth, mVideoHeight); 
    mMediaPlayer.start(); 
} 

Pensamientos

Respuesta

0

tratar de utilizar setLayoutParams()() en OnPrepared

public void onPrepared(MediaPlayer mp) { 
    ... 
    mSurfaceView.setLayoutParams(new LinearLayout.LayoutParams(vWidth, vHeight)); 
    ... 
}; 
Cuestiones relacionadas