MediaPlayer, ProgressBar

前端 未结 3 640
心在旅途
心在旅途 2020-12-03 08:18

Is this the correct way to update a ProgressBar when playing Media? I figured there would be a callback in MediaPlayer, but I couldn\'t find it.

mediaPla         


        
3条回答
  •  醉酒成梦
    2020-12-03 09:02

    Personally, I start off a Thread that checks getCurrentPosition() every 200ms or so until the onCompletion() event gets fired off:

    private class MediaObserver implements Runnable {
      private AtomicBoolean stop = new AtomicBoolean(false);
    
      public void stop() {
        stop.set(true);
      }
    
      @Override
      public void run() {
        while (!stop.get()) {
          progress.setProgress(mediaPlayer.getCurrentPosition());
          Thread.sleep(200);
        }
      }
    }
    
    private MediaObserver observer = null;
    
    public void runMedia() {
      mediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener{
        @Override
        public void onCompletion(MediaPlayer mPlayer) {
          observer.stop();
          progress.setProgress(mPlayer.getCurrentPosition());
        }
      });
      observer = new MediaObserver();
      mediaPlayer.start();
      new Thread(observer).start();
    }
    

提交回复
热议问题