Jouer un son à partir res/raw
Je m en faire une application qui est censée jouer un peu de sons avec le lecteur multimédia.
C'est le code que j'utilise :
String[] name = {"sonar_slow","sonar_medium","sonar_fast"};
String link = "/res/raw/" + name[state-1] + ".mp3";
try {
player.setDataSource(link);
player.prepare();
player.start();
} catch(Exception e) {
e.printStackTrace();
}
J'ai aussi essayé ceci :
if(state==1){
player.create(this, R.raw.sonar_slow);
}else if(state==2){
player.create(this, R.raw.sonar_medium);
}else if(state==3){
player.create(this, R.raw.sonar_fast);
}
player.start();
Mais aucun des ci-dessus est le travail. Mon application est de ne pas tomber, mais le son n'est pas jouer.
Des idées ?
OriginalL'auteur mremremre1 | 2013-08-15
Vous devez vous connecter pour publier un commentaire.
Il y a deux problèmes.
Problème 1
Vous ne pouvez pas référencer des ressources à l'intérieur de vos projets /res/raw répertoire dans ce mode. Le fichier "/res/raw/sonar_slow.mp3" dans votre répertoire de projet n'est pas enregistré dans "/res/raw/sonar_slow.mp3 dans votre apk. Au lieu de suivantes:
Vous devez utiliser
Problème 2
Le suivant est incorrect: il appelle une méthode statique qui ne permet pas de modifier le
player
.Vous devrait plutôt appeler
Solution complète
Ci-dessous est une réutilisables AudioPlayer classe qui encapsule MediaPlayer. C'est légèrement modifié à partir de "Programmation Android: Le Big Nerd Ranch Guide". Il fait en sorte de n'oubliez pas de nettoyer les ressources
Modifié afin de corriger le problème avec la façon dont vous utilisez R. raw.sonar_slow dans votre exemple, jusqu'en haut
ce fixe . merci.
Edit: correction d'une fuite de ressource dans ma AudioPlayer exemple, dans le cas où vous avez copié.
super!!! cette classe a très bien fonctionné pour moi, merci!
OriginalL'auteur Brian Attwell
Comment lire un fichier avec MediaPlayer:
C'est un exemple simple de comment jouer un son avec l'Android MediaPlayer.
Vous avez deux boutons chapeau jouent chacun un son différent. La sélection du son et de jeu, il est fait dans le manageSound() la méthode. Les sons "bonjour", "au revoir" et "ce qui" sont dans le res/raw répertoire:
Prises à partir d'ici: http://www.badprog.com/android-mediaplayer-example-of-playing-sounds
En outre, je vous recommande fortement de l'aide SoundPool au lieu de MediaPlayer, pour une meilleure Performance et la convivialité.
Veuillez également vérifier si votre son est coupé - je sais que cela semble stupide, mais il arrive aux meilleurs d'entre nous 😉
Non, vous n'avez pas besoin d'aucune autorisation pour autant que je sache, sinon votre application crash. Veuillez prendre en considération SoundPool et vérifiez si votre son n'est pas coupé 😀
Merci de crédit de l'auteur lorsque vous utiliser un autre code.
lol pouvez-vous l'imagerie si le problème était muet 😀
fait. le lien est ci-dessous
OriginalL'auteur Philipp Jahoda
Vous devez faire comme ceci :
Ce n'est pas vraiment une solution, plus un patch de cacher le problème.
Son ni corrigé, ni un patch, c'est de cette façon que le lecteur multimédia fonctionne. Il ya quelque chose appelé diagramme d'état pour le mediaplayer de l'état de flux. Veuillez vous référer à ce lien : developer.android.com/reference/android/media/...
OriginalL'auteur arshu
Assurez-vous que votre ne jouer que si le fichier a fini de préparer.
Je suis assez sûr prepare() est bloquant.
OriginalL'auteur Broak