2011-06-07 24 views
5

Sto utilizzando la demo di Android MediaPlayer per i video. Ho video in streaming 640x480. Voglio semplicemente che il video sia il più grande possibile (indipendentemente dall'orientamento del dispositivo) mantenendo le proporzioni. Non riesco a farlo per questo. Si estende semplicemente su tutto lo schermo. My SurfaceView nel layout non mantiene le proporzioni in "fill_parent" o "wrap_content". Quando controllo (e modificare la dimensione di superficie nel codice, sembra ignorare le modifiche E ciò che è strano è che è stato detto in questo codice che la mia dimensione del video è:. 176 x 144.Video streaming Android - Necessario rapporto di aspetto

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(); 
    } 
} 

Questo è dove provo e modificare le dimensioni:?

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

Pensieri

risposta

0

tenta di utilizzare setLayoutParams() in OnPrepared()

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