Изменить URI медиаплеера

У меня есть следующий рабочий код:

@Override
        protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        this.setContentView(R.layout.player);

        videoView = (VideoView)this.findViewById(R.id.videoView);
        playVideo();

        // video finish listener
        videoView.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {

                @Override
                public void onCompletion(MediaPlayer mp) {
                        mp.start();
                }
        });
    }

    public void playVideo() {
                MediaController mc = new MediaController(this);
                videoView.setMediaController(mc);
                videoView.setVideoURI(Uri.parse("http://sayedhashimi.com/downloads/android/movie.mp4"));
                videoView.requestFocus(); 
        }

Я просто хочу изменить источник данных MediaPlayer, когда видео закончится (setOnCompletionListener).


person Rui Gonçalves    schedule 08.12.2009    source источник


Ответы (1)


Я работаю над этим же вопросом. Вот что я придумал:

   public void onCompletion(MediaPlayer mp) {
       mp.reset();
       mp.setDataSource(this, newUri);
       mp.start();
   }
person Alan Moore    schedule 30.08.2011
comment
это приведет к: «начать вызов в состоянии 2» - person Stefan Alexandru; 23.04.2013
comment
На самом деле я никогда этого не видел, вы получаете это сообщение в своем журнале? - person Alan Moore; 23.04.2013
comment
да. вызов .prepare() перед вызовом .start() помогает. Но иногда у меня все еще возникают случайные ошибки, такие как (1, что-то) или (-38, что-то). странно то, что иногда это работает, а иногда нет. Подробнее о странных ошибках здесь: stackoverflow.com/questions/15839082/ - person Stefan Alexandru; 24.04.2013