Android中是否有播放,暂停,快退,快进方法?

问题描述 投票:7回答:4

我正在使用允许用户对设备讲话的Android应用程序。然后,我想保存该内容,然后倒带一部分以再次播放,也许快进到音频的另一部分,暂停它,然后播放,等等。就像基本的录音机一样。

是否有内置的API或方法或代码允许这样做?如果没有,那我从这里去哪里?

任何帮助将不胜感激。

java android
4个回答

6
投票

使用MediaPlayer,您可以在流中寻找不同的位置,但这不同于快进(或快退)播放,在DVR中也称为“特技播放”。

但是,可以使用seekTo这样实现快进:

  • 每100毫秒设置一个周期计时器(即postDelayedscheduleAtFixedRate
  • 在计时器的Runnable中,使用一个表示要播放速率的因子的值调用seekTo。
    • 因此,如果您想快进2倍,则每100毫秒周期之后,您将尝试curr_pos + 100毫秒。这意味着已经过去了100毫秒,但是现在您处于prev_pos + 200毫秒。
    • 执行4倍意味着您希望每curr_pos + 300毫秒后增加100毫秒。

  • 我刚刚意识到seekTo可能会寻找最接近的参考或I帧。因此,调用seekTo(curr_pos + 100)可能无法到达您想要的确切位置。

我可能需要在正在使用的视频播放器中实施FF。如果可以使用,我将在此处更新答案。


0
投票

使用AudioRecorder记录数据。使用PCM格式。

然后您可以通过AudioTrack选择性播放。


0
投票

//测试鳕鱼以下

double duration = mediaPlayer.getCurrentTime().toSeconds();
if (e.getKeyCode()==39)
{

    if (duration < mediaPlayer.getTotalDuration().toSeconds()-5)
        duration = duration + 5;
    else
        duration = mediaPlayer.getTotalDuration().toSeconds();
    //...
    mediaPlayer.setStartTime(Duration.seconds(duration));

}else
if (e.getKeyCode()==37)
{
    if (duration > 5)
        duration = duration - 5;
    else
        duration = 0;
    //...
    mediaPlayer.setStartTime(Duration.seconds(duration));
}                    
© www.soinside.com 2019 - 2024. All rights reserved.