Android - VideoView с MediaController работает неправильно

Мне нужно создать Activity, которое будет воспроизводить видео с URL. Прямо сейчас я использую 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();
        }
    });
}

Итак, в чем проблема? Почему видео не может повториться снова? Я установил курсор для запуска на контроллере, но ничего не происходит. Как я могу справиться с этим? Или что мне делать?

Спасибо за ответы!


person DefaultXYZ    schedule 13.04.2016    source источник


Ответы (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); 
        }
    });
person Kathi    schedule 13.04.2016
comment
Даже это не работает для меня... Я получаю это из интернет-потока с некоторыми заголовками, может быть, это проблема? - person DefaultXYZ; 14.04.2016
comment
Отредактированный ответ попробуйте setOnCompletionListener. Получение из интернет-потока не влияет на функциональность видеопросмотра. - person Kathi; 14.04.2016