使用AudioTrack返回要播放的曲目的长度(以秒为单位)

时间:2011-01-17 15:53:28

标签: java android audio audio-streaming

我试图诋毁大多数媒体播放器所拥有的,一种显示音轨总时间以及当前时间(每秒增加)的方式。我很确定我必须使用线程,但我不确定如何。我将音频曲目保存在SD卡上,当它被播放时,将所有数据放入一个短阵列中。

理想情况下,我也希望能够使用progressBar显示进度,我认为从TextViews显示到进度条不会是一个巨大的进步。我已经浏览了互联网和所有的例子(模糊不清)我发现使用了MediaPlayer,但是因为我使用的是audioTrack,所以我觉得它更难。在我的应用程序中我无法使用MediaPlayer来执行我想要对音频执行的操作。

有人可以帮助我或指出我正确的方向吗?

2 个答案:

答案 0 :(得分:2)

看到没有人对我的答案我使用粗略的方法来找到音轨的秒数时间。知道我自己用我给出的设置录制了轨道我知道比特率,也可以得到文件大小。

因此,创建一个File对象,然后将该对象设置为存储中的文件以获得以秒为单位的时间:

float time = (float)file.length()/22050/2;

其中22050是采样率,我认为,录音和2我认为是因为它以立体声录制。

无论如何,希望这可以帮助将来的任何人,如果我错了,请纠正我。

答案 1 :(得分:0)

float time =(float)file.length()/ playbacksamplerate / 2;

2用于缩短字节 采样率应该是您为音频轨道对象设置的播放量