我已经在Android中使用Soundpool加载了声音。
我已使用play
功能播放声音。
我如何知道文件的播放时间以及文件在播放时的当前位置?
答案 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
不支持此功能。您的三个主要选择:
MediaPlayer
进行播放。 MediaPlayer
提供了一种getCurrentPosition()
方法。AudioTrack
-逐字节手动将未压缩的音频发送到流。 AudioTrack
具有一些确定播放位置的基本功能(在大多数设备上通常精确到几十毫秒),此外,您还可以确切知道向播放缓冲区中添加了多少音频。SoundPool
粘贴,但您可以自己安排时间。就是说,花点时间(SystemClock.UptimeMillis()
)或设置CountDownTimer
,并假设play()
一返回就开始播放,从而估计播放位置。这种方法到处都是问题和不准确之处,但好处是不涉及AudioTrack's
复杂性。