SoundPool-声音文件中的什么位置

时间:2018-10-13 20:31:40

标签: android soundpool

我已经在Android中使用Soundpool加载了声音。

我已使用play功能播放声音。

我如何知道文件的播放时间以及文件在播放时的当前位置?

1 个答案:

答案 0 :(得分:1)

声音文件持续时间

MediaPlayer可能是您最好的选择,在这里:

MediaPlayer player = MediaPlayer.create(ctxt, R.raw.mysound);
int duration = player.getDuration();
player.release();    //(If not using this player later on)

当前播放位置

SoundPool不支持此功能。您的三个主要选择:

  1. 使用MediaPlayer进行播放。 MediaPlayer提供了一种getCurrentPosition()方法。
  2. 使用AudioTrack -逐字节手动将未压缩的音频发送到流。 AudioTrack具有一些确定播放位置的基本功能(在大多数设备上通常精确到几十毫秒),此外,您还可以确切知道向播放缓冲区中添加了多少音频。
  3. SoundPool粘贴,但您可以自己安排时间。就是说,花点时间(SystemClock.UptimeMillis())或设置CountDownTimer,并假设play()一返回就开始播放,从而估计播放位置。这种方法到处都是问题和不准确之处,但好处是不涉及AudioTrack's复杂性。