Java 返回要使用AudioTrack播放的曲目的长度(以秒为单位)
我试图实现大多数媒体播放器的功能,一种显示音频曲目总时间以及当前播放时间(每秒增加一次)的方式。我很确定我必须使用线程,但我不确定如何使用。我把音轨保存在sd卡上,播放时将所有数据放入一个短阵列中 理想情况下,我也希望能够使用progressBar显示进度,我不认为从在TextView中显示进度到使用进度条是一个巨大的进步。我在互联网上到处找了找,我发现所有的例子(虽然含糊不清)都使用了MediaPlayer,但由于我使用的是audioTrack,我想这会让它变得更加困难。在我的应用程序中,我无法使用MediaPlayer来处理音频Java 返回要使用AudioTrack播放的曲目的长度(以秒为单位),java,android,audio,audio-streaming,Java,Android,Audio,Audio Streaming,我试图实现大多数媒体播放器的功能,一种显示音频曲目总时间以及当前播放时间(每秒增加一次)的方式。我很确定我必须使用线程,但我不确定如何使用。我把音轨保存在sd卡上,播放时将所有数据放入一个短阵列中 理想情况下,我也希望能够使用progressBar显示进度,我不认为从在TextView中显示进度到使用进度条是一个巨大的进步。我在互联网上到处找了找,我发现所有的例子(虽然含糊不清)都使用了MediaPlayer,但由于我使用的是audioTrack,我想这会让它变得更加困难。在我的应用程序中,我无
有人能帮我解决问题或给我指出正确的方向吗?鉴于没有人能回答我的问题,我使用了一种粗糙的方法来计算音频曲目的时间(以秒为单位)。知道我自己用我提供的设置录制了曲目,我知道比特率,也可以得到文件大小 因此,创建一个文件对象,然后将该对象设置为存储器中的文件,以获取使用时间(以秒为单位):
float time = (float)file.length()/22050/2;
其中22050是录音的采样率,我想是2,因为它是用立体声录音的
无论如何,希望这对将来的任何人都有帮助,如果我有任何错误,请纠正我。浮点时间=(float)file.length()/playbacksamplerate/2
2用于将短字节转换为字节
采样率应该是您为在音频轨迹对象上播放而设置的量