Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/205.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android seekbar中显示的音乐缓冲级别_Android_Progress Bar_Media Player_Android Seekbar - Fatal编程技术网

Android seekbar中显示的音乐缓冲级别

Android seekbar中显示的音乐缓冲级别,android,progress-bar,media-player,android-seekbar,Android,Progress Bar,Media Player,Android Seekbar,你好。如您所见,我想在android music player中向用户显示流媒体的缓冲级别。我设想的解决方案是: 我是否应该创建一个seekbar和一个带有透明背景的progressbar,并重叠progressbar来搜索,而progreesbar则显示缓冲音乐级别 但是我不确定这个策略。是否有人可以帮助我找到实现此问题目标的最佳方法。首先应将OnBufferingUpdateListener设置为activity,然后设置onBufferingUpdate,如下所示: public void

你好。如您所见,我想在android music player中向用户显示流媒体的缓冲级别。
我设想的解决方案是:
我是否应该创建一个seekbar和一个带有透明背景的progressbar,并重叠progressbar来搜索,而progreesbar则显示缓冲音乐级别


但是我不确定这个策略。是否有人可以帮助我找到实现此问题目标的最佳方法。

首先应将
OnBufferingUpdateListener
设置为activity,然后设置onBufferingUpdate,如下所示:

public void onBufferingUpdate(MediaPlayer arg0, int percent) {
    /** Method which updates the SeekBar secondary progress by current song loading from URL position*/
    seekBarProgress.setSecondaryProgress(percent);
}

仅仅因为直接设置百分比是行不通的。这是为我工作的代码

mediaPlayer.setOnBufferingUpdateListener(new MediaPlayer.OnBufferingUpdateListener() {
        @Override
        public void onBufferingUpdate(MediaPlayer mediaPlayer, int percent) {
            double per = percent * 1.00;
            per = (per / 100);
            double f = (seekBar.getMax() * 1.00);
            f = f * per;
            if (percent < binder.seekBar.getMax()) {
                seekBar.setSecondaryProgress((int) f);
            }
        }
    });
mediaPlayer.setOnBufferingUpdateListener(新的mediaPlayer.OnBufferingUpdateListener(){
@凌驾
public void onBufferingUpdate(MediaPlayer,整数百分比){
每增加一倍=百分比*1.00;
per=(per/100);
双f=(参见kbar.getMax()*1.00);
f=f*per;
如果(百分比

这些int到double的转换是必要的,因为如果结果是0.12或0.xx,int除以100将得到0。

应该是seekBar.setSecondaryProgress(seekBar.getMax()*percentage/100)使其工作。确保您已经首先将百分比转换为十进制,这样当您将其除以100时,您将得到一个十进制值,而不是0。