Android中有Play,Pause,Rewind,Fast Forward方法吗?

时间:2011-09-08 21:00:19

标签: java android

我正在开发一个Android应用程序,允许用户对设备说话。然后我想保存它,并将其中的一部分倒回来再次播放,可能快进到音频的另一部分,暂停,播放等等。就像基本的录音机一样。

是否有任何构建的API或方法或代码允许这样做?如果没有,那么我从哪里开始呢?

非常感谢任何帮助。

4 个答案:

答案 0 :(得分:6)

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

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

  • 每100毫秒设置一个定期计时器(即postDelayedscheduleAtFixedRate)。
  • 在计时器的Runnable中,调用seekTo,其值是表示所需播放速率的因子。
    • 因此,如果您想要2倍快进,那么在每100毫秒后,您将寻求curr_pos + 100毫秒。这意味着100 msecs已经过去,但现在你在prev_pos + 200 msecs。
    • 执行4倍意味着每100毫秒后你会寻求curr_pos + 300毫秒。

  • 我刚刚意识到seekTo可能寻找最近的参考或I帧。所以调用seekTo(curr_pos + 100)可能无法到达你想要的精确位置。

我可能需要在我正在处理的视频播放器中实现FF。如果我开始工作,我会在这里更新我的答案。

答案 1 :(得分:3)

答案 2 :(得分:0)

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

然后你可以通过AudioTrack选择性地播放它。

答案 3 :(得分: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));
}