2016-04-13 54 views
0

我需要創建一個Activity,它將播放來自URL的視頻。 現在,我使用VideoView和MediaController,並且當這個活動創建時,在緩衝視頻之後它應該播放。它可以工作,但只播放一次後,媒體控制器工作,但不播放視頻。Android - 帶有MediaController的VideoView無法正常工作

下面是一段代碼:

private ProgressDialog progressDialog; 
private VideoView videoView; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_video); 

    progressDialog = new ProgressDialog(this); 
    progressDialog.setTitle("Some title"); 
    progressDialog.setMessage("Buffering..."); 
    progressDialog.setIndeterminate(false); 
    progressDialog.setCancelable(false); 
    progressDialog.show(); 

    videoView = (VideoView) findViewById(R.id.video_view); 
    Intent intent = getIntent(); 
    String url = intent.getStringExtra("extra_url"); 

    Uri uri = Uri.parse(url); 
    videoView.setVideoURI(uri, HeadersMap); // Here I put my headers - I need to do that. 

    MediaController mediaController = new MediaController(this); 
    mediaController.setAnchorView(videoView); 
    videoView.setMediaController(mediaController); 
    videoView.requestFocus(); 
    videoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() { 
     @Override 
     public void onPrepared(MediaPlayer mp) { 
      progressDialog.dismiss(); 
      videoView.start(); 
     } 
    }); 
} 

那麼,有什麼問題嗎?爲什麼視頻不能再重複一次?我將光標設置爲在控制器上啓動,但沒有任何反應。我如何處理它?或者我該怎麼做?

謝謝你的回答!

回答

1

試試這個,

videoView.setOnPreparedListener(new OnPreparedListener() { 
    @Override 
    public void onPrepared(MediaPlayer mp) { 
     mp.setLooping(true); 
    } 
}); 

你也可以用setOnCompletionListener

videoView.setOnCompletionListener(new MediaPlayer.OnCompletionListener() { 

    @Override 
    public void onCompletion(MediaPlayer mp) { 

     videoView.start(); 

    } 
}); 

OR

videoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() { 
     @Override 
     public void onPrepared(MediaPlayer arg0) { 
      mVideoView.start(); 

     } 
    }); 


    videoView.setOnCompletionListener(new MediaPlayer.OnCompletionListener() { 
     public void onCompletion(MediaPlayer mp) { 
       mp.reset(); 
       videoView.setVideoURI(uri, HeadersMap); 
     } 
    }); 
+0

做到這一點,即使這並沒有爲我工作......我得到它從互聯網流與一些標題,也許這是問題? – DefaultXYZ

+0

編輯答案嘗試'setOnCompletionListener'。從網絡流獲取不影響videoView功能。 – Kathi

+0

是的,它是標題,這就是它阻止的原因!萬分感謝!!! :) – DefaultXYZ

相關問題