2011-04-27 2 views
0

Hallo, J'utilise AudioTrackfaçon de reconnaître AudioTrack arrêté

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(); 

est-il un moyen de reconnaître si audiotrack ont ​​arrêté?

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

ne fonctionne pas ....

salutations

+0

Etes-vous sûr que la piste est en PLAYSTATE_PLAYING lorsque vous atteignez la boucle while? – Torben

Répondre

-1

Votre appel play() devrait probablement être dans un thread d'arrière-plan. Ensuite, votre getPlayState() pourrait être appelée. Ceci suppose que play() est un appel bloquant, auquel il ressemble.

+0

Ce n'est pas un appel bloquant. – Torben

0

Puisque vous jouez une piste statique, utilisez getPlaybackHeadPosition() et comparez la valeur retournée avec le nombre total d'échantillons (note, échantillons et non octets - bien que leurs nombres puissent correspondre) de votre audio.

Questions connexes