Android SoundPool: soyez averti lors de la fin de joué
Ce son si simple que je n'arrive pas à comprendre pourquoi je ne peux pas trouver la réponse lol
J'ai un travail sonore de la piscine de la classe (grâce à un didacticiel et quelques réglages que j'ai fait), et il fonctionne très bien.
le problème maintenant est que je veux pouvoir changer de musique de fond au hasard. (pas toujours la même musique en boucle, mais à 2 ou 3 et quand on aura fini je joue l'un des 2 autres).
problème est que je ne peux pas trouver un moyen d'être averti que la musique a fini de jouer.
Des idées ?
Jason
OriginalL'auteur Jason Rogers | 2010-12-14
Vous devez vous connecter pour publier un commentaire.
Il ne peut être fait avec SoundPool aussi loin que je peux dire.
Le seul audio "joueur" que je connais qui peut fournir une notification de fin est
MediaPlayer - c'est plus un complexe bête que SoundPool mais permet de définir un OnCompletionListener pour être averti lorsque la lecture est terminée.
pas de problème (j'ai oublié de le faire hier
Que voulez vous dire par ko?
Je soupçonne Jason Rogers voulait simplement 100k (100 KO) mais la touche o sur un clavier à proximité de la k et il peut avoir frappé par accident.
Et maintenant, je comprends, merci
OriginalL'auteur
C'est ce que je fais:
Sur de démarrage je obtenir la longueur de chaque son-cliquez à l'aide d'un lecteur multimédia:
et de stocker le son en plus de la durée de l'ensemble (dans un DTO-type de l'objet).
Merci! Fonctionne comme un charme!
Peut-être que ce serait une bonne idée d'exporter la durée de l'audio par le biais de certains outils hors ligne, comme ffmpeg, et de créer une table de recherche lorsque l'application est lancée. Autant que je sache, pour créer MediaPlayer impliquera inattendu de frais généraux.
OriginalL'auteur
J'ai plus de 100 courts extraits sonores et SoundPool est ma meilleure option. Je veux jouer un clip juste après un autre élément est fini de jouer. Lors de la constatation qu'il n'existe pas onCompletionListener() équivalent j'ai choisi de mettre en œuvre un exécutable. Cela fonctionne pour moi, parce que le premier est entre 1 et 2 secondes et j'ai donc la durée de l'exécutable fixé à 2000. Espérons qu'ils travaillent sur cette classe parce que sa a beaucoup de potentiel!
OriginalL'auteur
MediaPlayer est lourd et lent par rapport à SoundPool, mais SoundPool n'a pas setOnCompletionListener. Pour faire face à ce problème j'ai mis en place un classe personnalisée de SoundPool avec setOnCompletionListener.
utilisation: similaire à MediaPlayer
création:
pause:
stop:
résumé:
isPlaying:
toute demande d'extraction est la bienvenue. J'ai seulement mis ce que j'ai besoin ici.
OriginalL'auteur