Mediacontrol seekbar问题android

时间:2011-11-24 06:47:29

标签: android android-videoview mediacontroller

在我的Android应用程序中,我遇到MediaController的{​​{1}}搜索栏问题。 我想知道如果用户寻求的位置大于缓冲位置,我需要显示一个对话框,然后在搜索完成后关闭对话。
如果我能解决这个问题,请告诉我。

2 个答案:

答案 0 :(得分:1)

mSeekBar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {

   @Override
   public void onStopTrackingTouch(SeekBar arg0) {
         // you can check for the current buffer state and where the use seek using mSeekBar.getProgress() and then open up a dialog.

        if(condition to match buffering and seek position)
               openDialog();
   }

   @Override
   public void onStartTrackingTouch(SeekBar arg0) {

   }

   @Override
   public void onProgressChanged(SeekBar arg0, int progress, boolean arg2) {

   }
  });

...

public void openDialog()
{
  ...
  // check for buffer level to match your seek position
  // when it meets the codition,cancel the dialog.
  ...
}

答案 1 :(得分:0)

结合这种方式。

选项1:只需使用媒体播放器中的OnInfoListener即可。 这将在缓冲开始和停止时向您发送信息。

mPlayer.setOnInfoListener(OnInfo);

然后创建您的侦听器代码。

// info from player sent.
OnInfoListener OnInfo = 
    new OnInfoListener() {
        public boolean onInfo(MediaPlayer mp, int what, int extra) {
            Log.d(TAG,"media info what:"+what+" extra:"+extra);

            // check about buffering status.
            if(what==MediaPlayer.MEDIA_INFO_BUFFERING_START) {
                // note: we are assuming _progressDialog was created already
                _progressDialog.setMessage("Buffering...");
                _progressDialog.show();
            } else if(what==MediaPlayer.MEDIA_INFO_BUFFERING_END) {
                if(_progressDialog.isShowing())
                    _progressDialog.dismiss();
            }
            return false;
        }
    };

选项2:使用OnBufferingUpdateListener来跟踪缓冲的数量。

mPlayer.setOnBufferingListener(OnBufferingUpdate);

然后创建实际的监听代码。

// buffering update
OnBufferingUpdateListener OnBufferingUpdate =
    new OnBufferingUpdateListener() {
        @Override
        public void onBufferingUpdate(MediaPlayer mp, int percent) {
                    Log.d(TAG,"BUFFERING: "+ String.valueOf(percent));
                    // store the percent value and check it in onStopTrackingTouch() 
                    // which is in your setOnSeekBarChangeListener
        }
    };