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