android - 如何使用 SeekBar 的 OnSeekBarChangeListener 寻找 MediaPlayer 对象中的特定点?

标签 android

我有一些 Android 代码可以从互联网流式传输音频文件并在 10 秒后播放该流。

我正在使用一个SeekBar 来查看缓冲状态和播放状态。我想从缓冲流的中间开始播放音频。为此,我将 SeekBar 点移到中间,但无法从中间播放音频;它会返回并从头开始。我怎样才能得到寻找的位置,我怎样才能从那个特定的位置播放音频?

这是我的 SeekBar 代码。如何让此代码正确使用 OnSeekBarChangeListener?

seekbar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {

    @Override
    public void onProgressChanged(SeekBar arg0, int arg1, boolean arg2) {
        // TODO Auto-generated method stub
        if (arg2 && mediaPlayer.isPlaying()) {
            //myProgress = oprogress;
            arg1=mediaPlayer.getCurrentPosition();
            mediaPlayer.seekTo(arg1);
        }
    }

    @Override
    public void onStartTrackingTouch(SeekBar seekBar) {
        // TODO Auto-generated method stub
    }

    @Override
    public void onStopTrackingTouch(SeekBar seekBar) {
        // TODO Auto-generated method stub
    }

});

最佳答案

arg1=mediaPlayer.getCurrentPosition();
mediaPlayer.seekTo(arg1);

你强制玩家寻找当前位置,而不是搜索栏返回的位置

删除行:arg1=mediaPlayer.getCurrentPosition(); 它应该可以工作。当然在 MediaPlayer.prepare() 设置 SeekBar.setMax(MediaPlayer.getDuration()) 之后,搜索将是准确的。

关于android - 如何使用 SeekBar 的 OnSeekBarChangeListener 寻找 MediaPlayer 对象中的特定点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3930942/

相关文章:

android - 使用 Listener for SeekBar 在使用 MediaPlayer 播放时使用暂停/播放更改进度

android - 无法在gitlab中建立提交(gradle)

java - 继承成本 Java (Android)

android - 在android/sqlite数据库中增加一条记录的值

java - 如何将混合应用程序的当前 View 转换为位图

android - PrintedPDFDocument 生成的 PDF 包含具有某种网格布局的灰色框

android - 在android中的 Activity 之间传递字符串

android - 增加语音识别android中RESULTS_RECOGNITION的数量

Android Retrofit 编码 URL

android - Mapbox IllegalStateException : Calling getSourceAs when a newer style is loading/has loaded