gpt4 book ai didi

android - Mediaplayer 进度更新到 seekbar 不顺畅?

转载 作者:IT老高 更新时间:2023-10-28 23:40:39 26 4
gpt4 key购买 nike

我正在开发一个带有录音机和播放器的应用程序。我正在使用 mediaplayer 播放录制的 .wav 文件,同时我想更新到搜索栏。一切正常但我的问题是媒体播放器对搜索栏的进度更新并不顺利,如果我们正在播放一个小文件,搜索栏的拇指会在几秒钟内或之间跳跃。

任何人都可以帮助我解决问题,以使其在搜索栏中顺利搜索进度。我的代码如下所示。我被卡在这里了。

    mediaPlayerIntiate();
mediaPlayerSetSource();
mMediaPlayer.start();
task = new TimerTask() {
@Override
public void run() {
Graphbar.post(new Runnable() {
@Override
public void run() {

if (mMediaPlayer != null) {

if (playButtonState == MediaMode.PLAY) {
if (mMediaPlayer.isPlaying()) {
Graphbar.setProgress(mMediaPlayer
.getCurrentPosition());
mediaPlayerUpdateTimer(mMediaPlayer
.getCurrentPosition());
enableRewindandForward();
}
}

}

}
});
}
};
timer = new Timer();
timer.schedule(task, 0, 8);

最佳答案

mMediaPlayer.getCurrentPosition() 返回当前时间(以毫秒为单位),您将其更新为最大容量为 100 的 Seekbar。用文件长度和 100 制作一个公式。试试这个函数

    MediaPlayer mMediaPlayer = new MediaPlayer();
final SeekBar mSeelBar = new SeekBar(this);
final int duration = mMediaPlayer.getDuration();
final int amoungToupdate = duration / 100;
Timer mTimer = new Timer();
mTimer.schedule(new TimerTask() {

@Override
public void run() {
runOnUiThread(new Runnable() {

@Override
public void run() {
if (!(amoungToupdate * mSeelBar.getProgress() >= duration)) {
int p = mSeelBar.getProgress();
p += 1;
mSeelBar.setProgress(p);
}
}
});
};
}, amoungToupdate);

并且这个过程应该在媒体播放器开始播放时被调用。里面

    mediaPlayer.setOnPreparedListener(new OnPreparedListener(){

@Override
public void onPrepared(MediaPlayer mp) {
**// call here**
}
});

更新

在几秒钟内更新 125 次不是你应该做的。请增加更新 SeekBar 的间隔。我在阅读 NullPointer 的评论后添加了这个

关于android - Mediaplayer 进度更新到 seekbar 不顺畅?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17742477/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com