2011-11-24 42 views
0

在我的Android應用程序中,我遇到了用於VideoviewMediaController搜索欄的問題。
我想知道如果用戶想要的位置大於緩衝位置,我需要顯示一個對話框,然後關閉查找完成的對話。
請讓我知道如果我能解決這個問題。Mediacontrol seekbar問題android

回答

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. 
    ... 
} 
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 
     } 
    };