2011-04-27 52 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()並將返回的值與您的音頻的樣本總數(注意,樣本,而不是字節 - 儘管它們的數量可能匹配)進行比較。