2017-09-28 1 views
1
String fileName = "android.resource://" + getPackageName() + "/raw/oryx1001"; 
MediaController videoMediaController = new MediaController(this); 
//mVideoView.setVideoPath(Uri.parse()); 
mVideoView.setVideoURI(Uri.parse(fileName)); 

mVideoView.setOnErrorListener(new MediaPlayer.OnErrorListener() { 
    @Override 
    public boolean onError(MediaPlayer mp, int what, int extra) {  
     return true; 
    } 
}); 

videoMediaController.setVisibility(View.GONE); 
videoMediaController.setMediaPlayer(mVideoView); 
mVideoView.setMediaController(videoMediaController); 
mVideoView.requestFocus(); 

mVideoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() { 
    //Close the progress bar and play the video 
     public void onPrepared(MediaPlayer mp) { 
      mVideoView.start(); 
     } 
}); 

mVideoView.setOnCompletionListener(new MediaPlayer.OnCompletionListener() { 
    public void onCompletion(MediaPlayer mp) { 
    //jump(); 
    //System.out.println("dksadalkdakldsadlkadklsad"); 
    mp.reset(); 
    String fileName = "android.resource://" + getPackageName() + "/raw/oryx1001"; 
    MediaController videoMediaController = new MediaController(MainActivity.this); 
    mVideoView.setVideoURI(Uri.parse(fileName)); 
    mVideoView.setOnErrorListener(new MediaPlayer.OnErrorListener() { 

     @Override 
     public boolean onError(MediaPlayer mp, int what, int extra) { 
      return true; 
     } 
    }); 

    videoMediaController.setVisibility(View.GONE); 
    videoMediaController.setMediaPlayer(mVideoView); 
    mVideoView.setMediaController(videoMediaController); 
    mVideoView.requestFocus(); 
    mVideoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() { 
     // Close the progress bar and play the video 
     public void onPrepared(MediaPlayer mp) { 
      mVideoView.start(); 
     } 
    }); 
    } 
}); 

simplement mon code 3gp ne fonctionne pas. il fonctionne sur Android oreo mais pas sur lolipop device ou samsung s6. est-ce une chose api, ou une chose de l'appareil pour les codecs pris en charge? J'ai essayé tout mp4, 3gp rien de travail. E/MediaPlayer: Erreur (-38,0) D/VideoView: Erreur: -38,0 /MediaPlayer: Erreur (1, -38)E/MediaPlayer: Erreur (-38,0)

Répondre

3

Vous devez appeler mediaPlayer.start() dans la méthode onPrepared en utilisant un auditeur. Vous obtenez cette erreur car vous appelez mediaPlayer.start() avant qu'il ait atteint l'état préparé.

Vous avez défini setOnPreparedListener

mVideoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() { 
    // Close the progress bar and play the video 
    public void onPrepared(MediaPlayer mp) { 
     mVideoView.start(); 
    } 
}); 

mais vous commencez mauvais objet mVideoView.start(); vous devez appeler

mVideoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() { 
    // Close the progress bar and play the video 
    public void onPrepared(MediaPlayer mp) { 
     mp.start();//Change is hare .. 
    } 
});