2011-04-27 53 views
0

喂, 我使用AudioTrack方式停止

audioTrack = new AudioTrack(AudioManager.STREAM_MUSIC, 
    sampleRate, AudioFormat.CHANNEL_CONFIGURATION_MONO, 
    AudioFormat.ENCODING_PCM_16BIT, numSamples, 
    AudioTrack.MODE_STATIC); 
audioTrack.write(generatedSnd, 0, numSamples) ; 
audioTrack.play(); 

有没有认识到,如果audioTrack已经停止的方法吗?

while(audioTrack.getPlayState() == AudioTrack.PLAYSTATE_PLAYING){ 
    i++; 
    System.out.println(i); 
} 

不起作用...。

问候

+0

当你到达while循环时,你确定曲目在PLAYSTATE_PLAYING吗? – Torben 2012-08-31 11:03:08

回答

-1

您的通话play()应可能会在后台线程。然后你的getPlayState()可能会被调用。这假设play()是一个阻塞呼叫,看起来像。

+0

这不是一个阻塞呼叫。 – Torben 2012-08-31 11:04:06

0

由于您正在播放静态曲目,请使用getPlaybackHeadPosition()并将返回的值与您的音频的样本总数(注意,样本,而不是字节 - 尽管它们的数量可能匹配)进行比较。