ビデオストリームを表示するためにVideoViewを使用しています。 MediaControllerをビュー自体にアタッチする必要があるため、ビデオビューによる黒い画面のちらつきを防ぐ必要があるためです。私はNexus 7で下のコードをテストしましたが、魅力的でした。しかし、今では私のSGS2でそれをテストし、何らかの理由でOnVideoSizeChangedが呼び出されることはありません。OnVideoSizeChangedが呼び出されません
@Override
public void onPrepared(MediaPlayer mp) {
// TODO Auto-generated method stub
Log.i("ONPREP", "called");
mp.setOnVideoSizeChangedListener(new OnVideoSizeChangedListener() {
@Override
public void onVideoSizeChanged(MediaPlayer mp, int width, int height) {
videoview.setMediaController(mc);
mc.setAnchorView(videoview);
videoview.setBackgroundColor(Color.TRANSPARENT);
Log.i("ONSIZECHANGE", "called");
}
});
}
それが必要のような動画が再生されて、私はOnVideoSizeChangedListenerを削除し、ちょうどonPrepared方法でコードを置くことによってこれをテストしたが、これは画面のちらつきの問題を戻すとのMediaController付着していないを残しています。この動作は、LogCat、ONPREPタグのログ情報でも表示されますが、ONSIZERANGEは表示されません。私のN7の両方で、明白に背景色が変更される原因になります。
これは設定して、ビデオを開始したコードは次のとおりです。
videoview.setOnPreparedListener(MainActivity.this);
mc = new MediaController(MainActivity.this);
mc.setMediaPlayer(videoview);
videoview.setVideoURI(videourI);
videoview.start();
だから、1つのデバイス上ではなく、別の上と呼ばれる理由?
編集: SGS2と同じ問題をノート2でテストしました。
OnPreparedListenerを使用するだけでは動作しないのは、setAnchorViewメソッドです。これはビデオビジュアルには関連付けられていません。 OnVideoSizeChangedが呼び出されると、それをアタッチできます。 –