2009-12-08 5 views
4

J'ai le code de travail suivant:Modifier URI MediaPlayer

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

Je veux juste changer la source de données MediaPlayer lorsque les finitions vidéo (setOnCompletionListener).

Répondre

7

Je travaille sur ce même problème. Voici ce que je suis venu avec:

public void onCompletion(MediaPlayer mp) { 
     mp.reset(); 
     mp.setDataSource(this, newUri); 
     mp.start(); 
    } 
+1

cela se traduira par: « start appelé état 2 » –

+0

fait, j'ai jamais vu, vous obtenez ce message dans votre journal? –

+1

oui. appeler .prepare() avant d'appeler .start() aide. Mais parfois j'ai toujours des erreurs aléatoires comme (1, quelque chose) ou (-38, quelque chose). la chose étrange est que parfois cela fonctionne et parfois non. Plus d'informations sur les erreurs étranges ici: http://stackoverflow.com/questions/15839082/android-4-2-with-4-mediaplayers-cant-play-this-video –