Dans mon application, j'ai besoin de jouer du son sur un clic de souris (un roulement de dés pour être plus précis) mais je ne veux pas jouer le même son que le précédent un depuis lancer un dé ne fait jamais le même son.Android: recherche de l'équivalent d'utiliser le commutateur avec variable
Donc, j'ai 4 son différent et je veux prendre, si possible, avec la même probabilité, l'un d'entre eux qui ne soit déjà joue
Pour ce faire, je veux utiliser:
MediaPlayer sound1, sound2, sound3, sound4;
Random rnd;
//Random and MediaPlayer are set up in the onCreate method
public void playSound() {
int a, b, c, d, pos = 0, neg = 0;
if (sound1.isPlaying()) {neg++; a = neg;} else {pos++; a = pos;}
if (sound2.isPlaying()) {neg++; b = neg;} else {pos++; b = pos;}
if (sound3.isPlaying()) {neg++; c = neg;} else {pos++; c = pos;}
if (sound4.isPlaying()) {neg++; d = neg;} else {pos++; d = pos;}
//available MediaPlayer associated to 1, 2, 3 ...
//other MediaPlayer associated to -1, -2, -3 ...
if (pos>0){
switch (rnd.nextInt(pos) + 1) {
case a: sound1.start(); break;
case b: sound2.start(); break;
case c: sound3.start(); break;
case d: sound4.start(); break;
}
}
//pick a MediaPlayer among those associated to a positive number
}
mais Android ne permet pas d'utiliser la variable avec le cas, donc je reçois une erreur « d'expression constante requise »
la question est: comment puis-je faire la même chose en utilisant les choses android permettent d'utiliser?
En tant que débutant, je n'a pas trouvé de réponse, sauf en utilisant un « si » qui, par un géant « si » est la liste de tous les cas possibles
(Je ne suis pas vraiment intéressé, puisque je prévois d'ajouter 2 ou 3 autres sons, le nombre de possibilité atteindra 2^6 ou 2^7, ce qui signifie 64 ou 128)
vous remercie à l'avance
i ajouté « si (candidates.size()> 0) "avant de choisir le lecteur multimédia pour éviter les erreurs, vous avez résolu mon problème – Ericu