2016-04-13 26 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

相关问题