android - Android刷新音频播放器中的搜索栏进度和播放持续时间,导致音频播放滞后

标签 android audio

我正在制作音频播放器应用程序,我希望能够刷新显示当前播放位置的搜索栏和显示时间的文本 View 。我能够做到,但是有问题。搜寻栏和文本 View 更新时,音频每隔一秒钟就会出现一点延迟。就像 View 更新时每秒暂停一小段时间一样。

这是我的更新程序类

import android.os.Handler;
import android.os.Looper;
import java.util.concurrent.TimeUnit;
class refreshSeekBar extends Thread{

private Handler mainHandler = new Handler(Looper.getMainLooper());

@Override
public void run() {
    startRefreshingSeekBar();
}

private void startRefreshingSeekBar(){
    Global.scheduledFuture = Global.scheduledExecutorService.scheduleWithFixedDelay(new Runnable() {
        @Override
        public void run() {
            long S = Global.mediaPlayer.getCurrentPosition();
            S = S/1000;
            long M = S/60;
            S = S%60;
            String SS = ""+S;
            String MM = ""+M;
            if((S/10)<1){
                SS = "0"+SS;
            }
            if((M/10)<1){
                MM = "0"+MM;
            }
            final String MMM = MM;
            final String SSS = SS;
            mainHandler.post(new Runnable() {
                @Override
                public void run() {
                    Global.seekBar.setProgress(Global.mediaPlayer.getCurrentPosition());
                    Global.textCurrentDuration.setText(MMM+":"+SSS);
                }
            });
        }
    },0,1000, TimeUnit.MILLISECONDS);
}

}

最佳答案

我能够解决问题。我没有在搜索栏的OnSeekBarChangeListener中使用 bool(boolean) fromUser来防止以编程方式设置进度时调用它。每当进度更新时,它都会寻找mediaPlayer,因此会出现滞后。

关于android - Android刷新音频播放器中的搜索栏进度和播放持续时间,导致音频播放滞后,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39820134/

相关文章:

c# - 将音频文件上传到服务器C#

java - 如何使用Java播放MP3文件?

android - 如何在android中删除接收短信通知

android - AIDL "oneway"远程调用的顺序保证是什么?

Android Honeycomb 3.2 通过 USB 检测 MTP 连接

android - 在 Bottom Sheet 中向下滚动

Java:如何实现队列系统来播放音频片段?

javascript - 通过 Ionic 检测耳机

android - 自定义 PIN Android 的应用程序生命周期

python - 当使用PyAudio以44100采样率播放44100个采样时,为什么编程不会花费1秒钟的时间?