2016-04-13 8 views
0

Мне нужно создать Activity, в котором будет воспроизводиться видео из URL. Прямо сейчас, я использую VideoView и MediaController, и когда это действие создает, после буферизации видео оно должно воспроизводиться. Он работает, но воспроизводится только один раз, после чего медиаконтроллер работает, но не воспроизводит видео.Android - VideoView с MediaController работает неправильно

Вот кусок кода:

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

    } 
}); 

ИЛИ

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

Отредактированный ответ try 'setOnCompletionListener'. Получение из интернет-потока не влияет на функциональность видеообзора. – Kathi

+0

Да, это заголовки, вот почему он блокирует! Большое спасибо!!! :) – DefaultXYZ