Utiliser un tampon avec Android AudioTrack
J'essaie de comprendre comment je pourrais utiliser un tampon avec AudioTrack effectivement de diffuser de la musique. Je sais que vous pouvez faire la queue audio à l'aide de la écrire méthode, mais une fois que l'audio est mis en file d'attente comment vous dire combien vs combien a été utilisé/joué? Désolé si c'est un rudimentaire question. Je comprends le concept d'un tampon, je ne suis pas sûr de la façon d'écrire, et surtout à l'aide de AudioTrack.
source d'informationauteur William Seemann | 2013-12-11
Vous devez vous connecter pour publier un commentaire.
AudioTrack.write() renvoie "nombre d'octets écrits" comme un int, et que vous spécifiez le nombre d'octets dans la mémoire tampon lors de la construction de la AudioTrack.
Donc, pour faire un suivi de beaucoup d'espace de mémoire tampon reste, vous pouvez garder une variable accumulateur de sorte que vous savez combien d'octets ont été écrits au total, et de définir cette variable à zéro chaque fois que vous appelez AudioTrack.flush(). Toutefois, liées à la documentation états "c'est typique de l'utilisation de morceaux de 1/2 de la taille totale de permis de double-buffering", de sorte qu'il peut être assez simple pour simplement vous rappeler si vous avez écrit de zéro, une ou deux fois depuis l'appel de rincer.
De dire quelle partie de la mémoire tampon a été joué, l'utilisation AudioTrack.getPlaybackHeadPosition() qui retourne le nombre de cadres qui ont été jouées de le tampon courant (remise à zéro à l'arrêt, de la chasse ou de rechargement) comme entier signé de 32 bits mais pour être interprété comme une entier 32 bits non signé. Tout cela signifie, c'est que vous pouvez l'affecter à un int comme suit.
Vous pouvez penser à des images comme équivalentes à des échantillons. c'est à dire, Vous pouvez travailler à partir de la AudioFormat utilisé pour construire le AudioTrack combien de bits (et donc octets) sont utilisés par échantillon.
Enfin, au cas où quelqu'un a été vous demandez-vous, vous ne serez jamais en mesure de dire combien le fichier source ou le flux est laissé à jouer par le biais de cet objet (une raison d'être, il est conçu pour fonctionner avec les permanents 24/7 ruisseaux, avec pas de fin), donc si vous vouliez faire un calcul comme on le voit sur une vidéo, jouer à des sites web, qui interrompre le flux de données jusqu'à ce que suffisamment id tampon pour voir la vidéo en entier à votre vitesse de téléchargement, vous aurez à passer que l'information d'une autre façon.
*Ce code permettra de lire des fichiers audio avec tampon*