SVP ! Spinner onItemSelected ==> MediaPlayer
Résolu/Fermé
Umwami
Messages postés
140
Date d'inscription
mercredi 29 août 2018
Statut
Membre
Dernière intervention
6 septembre 2018
-
Modifié le 1 sept. 2018 à 15:58
BunoCS Messages postés 15506 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 10 mars 2025 - 6 sept. 2018 à 16:19
BunoCS Messages postés 15506 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 10 mars 2025 - 6 sept. 2018 à 16:19
A voir également:
- SVP ! Spinner onItemSelected ==> MediaPlayer
- Content spinner - Télécharger - Traitement de texte
- Comment spinner un texte - Télécharger - Outils professionnels
- Mediaplayer classic - Télécharger - Lecture
- Windows mediaplayer - Télécharger - Lecture
- Adobe mediaplayer - Télécharger - Lecture
6 réponses
BunoCS
Messages postés
15506
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
10 mars 2025
3 914
3 sept. 2018 à 11:46
3 sept. 2018 à 11:46
Re,
Avant de pouvoir (continuer à) t'aider, nous avons besoin de savoir :
- que veux-tu mettre dans ton Spinner
- que veux-tu mettre dans ton String-Array
- où sont stockés tes fichiers mp3
- où sont stockés tes fichiers lyrics
Avant de pouvoir (continuer à) t'aider, nous avons besoin de savoir :
- que veux-tu mettre dans ton Spinner
- que veux-tu mettre dans ton String-Array
- où sont stockés tes fichiers mp3
- où sont stockés tes fichiers lyrics
BunoCS
Messages postés
15506
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
10 mars 2025
3 914
3 sept. 2018 à 13:31
3 sept. 2018 à 13:31
Maintenant que nous savons cela, quelques questions :
Comment sont liées tes données ?
Que doit-il se passer lorsque tu sélectionne un pays dans ton Spinner ?
Comment sont liées tes données ?
Que doit-il se passer lorsque tu sélectionne un pays dans ton Spinner ?
Umwami
Messages postés
140
Date d'inscription
mercredi 29 août 2018
Statut
Membre
Dernière intervention
6 septembre 2018
133
Modifié le 3 sept. 2018 à 13:46
Modifié le 3 sept. 2018 à 13:46
En fait ca fonctionne un peut comme un simple lecteur de musique avec sa playlist et le milieu de l'écran pour les Lyrics.
Voici un "schéma" :
Pour faire simple, les Lyrics (ScrollView) et le MediaPlayer dépendent du "Choix Spinner".
Voici un "schéma" :

Pour faire simple, les Lyrics (ScrollView) et le MediaPlayer dépendent du "Choix Spinner".
BunoCS
Messages postés
15506
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
10 mars 2025
3 914
3 sept. 2018 à 14:07
3 sept. 2018 à 14:07
Donc c'est une musique par pays ?
Umwami
Messages postés
140
Date d'inscription
mercredi 29 août 2018
Statut
Membre
Dernière intervention
6 septembre 2018
133
3 sept. 2018 à 14:13
3 sept. 2018 à 14:13
Exactement !
Une musique, Un Lyrics ===> Un pays
Une musique, Un Lyrics ===> Un pays
BunoCS
Messages postés
15506
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
10 mars 2025
3 914
3 sept. 2018 à 14:34
3 sept. 2018 à 14:34
Donc lorsque tu sélectionnes un pays dans le spinner, tu veux jouer une musique et une lyric associée. Right ? Comment fais-tu le lien entre ces 3 éléments ?
Umwami
Messages postés
140
Date d'inscription
mercredi 29 août 2018
Statut
Membre
Dernière intervention
6 septembre 2018
133
3 sept. 2018 à 15:07
3 sept. 2018 à 15:07
Voilà et c'est là que je coince, j'ai pleinement conscience que c'est à cette partie du code que cela ce passe :
Avec OnItemSelected et en ayant initialiser "l'Adaptater" mais ca fait 1 mois et quelques que j'ai commencer le langage Java via tutos et autres du coup je ne sais vraiment pas.
Dans ma tête c'est tout fait en "C++" (j'improvise haha) :
Et encore... Ça n'as pas l'air très juste ="d
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); spinner_pays = (Spinner)findViewById(R.id.spinner_pays); spinner_pays.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { @Override public void onItemSelected(AdapterView<?> adapterView, View view, int position, long id) { !!!!!!!!!!!!!!!!! ICI ICI ICI ICI ICI ICI !!!!!!!!!!!!!!!!! } @Override public void onNothingSelected(AdapterView<?> adapterView) { } });
Avec OnItemSelected et en ayant initialiser "l'Adaptater" mais ca fait 1 mois et quelques que j'ai commencer le langage Java via tutos et autres du coup je ne sais vraiment pas.
Dans ma tête c'est tout fait en "C++" (j'improvise haha) :
if (Choix == 0) { - afficher les Lyrics de "txt_afghanistant.txt" dans la ScrollView; - charger la musique "Afghanistan.mp3" dans le MediaPlayer; - préparer le MediaPlayer à être lancer; } else if (Choix ==1) { - afficher les Lyrics de "txt_afrique_du_sud.txt" dans la ScrollView; - réinitialiser MediaPlayer (sinon le lecteur va bugger je pense); - charger la musique "afrique_du_sud.mp3" dans le MediaPlayer; - préparer le MediaPlayer à être lancer; } else if (Choix ==2) { - .... etc
Et encore... Ça n'as pas l'air très juste ="d
BunoCS
Messages postés
15506
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
10 mars 2025
3 914
3 sept. 2018 à 16:17
3 sept. 2018 à 16:17
Je t'ai déjà passé un pseudo algo mais tu ne me dis pas ce qui ne va pas, ce qui bloque, etc. Je t'ai également dit que ta cascade de
Voici encore un exemple:
ifest inutile si tu initialises correctement tes données.
Voici encore un exemple:
public class MainActivity extends AppCompatActivity { // déclaration des 3 sources de données. // Attention ! Elles doivent être remplies dans le même ordre String[] mCountries; // liste des pays Int[] mMusicResources = {R.raw.musicFr, R.raw.musicEn}; //liste des fichiers musicaux, à compléter Int[] mLyricsResources = {R.raw.lyricsFr, R.raw.lyricsEn}; //liste des lyrics, à compléter @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // récupération de la liste des pays mCountries = getResources().getStringArray(R.array.countries); // déclaration du spinner spinner_pays = (Spinner)findViewById(R.id.spinner_pays); spinner_pays.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { @Override public void onItemSelected(AdapterView<?> adapterView, View view, int position, long id) { // ici, position correspond à l'index sélectionné. Si tout est bien rangé, tu sais que: // mCountries[position] est le pays sélectionné // mMusicResources[position] est l'ID du fichier musical à jouer // mLyricsResources[position] est l'ID du fichier de lyrics à afficher // lecture du fichier musical MediaPlayer player = MediaPlayer.create(this, mMusicResources[position]); player.start(); // affichage des lyrics (à adapter suivant ton besoin) displayLyrics(mLyricsResources); } @Override public void onNothingSelected(AdapterView<?> adapterView) { } }); } void displayLyrics(int resID) { InputStream inputStream = getResources().openRawResource(resID); BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream)); String line; StringBuilder text = new StringBuilder(); try { while (( line = buffreader.readLine()) != null) { text.append(line); text.append('\n'); } } catch (IOException e) { // TODO } textView.setText(text.toString()); } }
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Umwami
Messages postés
140
Date d'inscription
mercredi 29 août 2018
Statut
Membre
Dernière intervention
6 septembre 2018
133
Modifié le 4 sept. 2018 à 16:42
Modifié le 4 sept. 2018 à 16:42
Bonjour BrunoCS ! Vous passez une bonne journée j'espère ? ="D
I'm ready ! LET'S GO !!!
Bon ! A savoir, mon dossier raw est comme ceci de base :
Alors, pour suivre le raisonnement de la déclaration des 3 ressources, j'ai ranger le dossier raw comme ceci :
Mais cela reste en rouge, ce qui n'est pas logique :
De plus j'ai ces éléments en rouge :

Ici j'ai essayer de suivre vos instructions pour le "onItemSelected :

Please, dites-moi que je suis sur la bonne voix ?
I'm ready ! LET'S GO !!!

Bon ! A savoir, mon dossier raw est comme ceci de base :

Alors, pour suivre le raisonnement de la déclaration des 3 ressources, j'ai ranger le dossier raw comme ceci :

Mais cela reste en rouge, ce qui n'est pas logique :

De plus j'ai ces éléments en rouge :

Ici j'ai essayer de suivre vos instructions pour le "onItemSelected :

Please, dites-moi que je suis sur la bonne voix ?
BunoCS
Messages postés
15506
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
10 mars 2025
3 914
4 sept. 2018 à 17:04
4 sept. 2018 à 17:04
Alors,
1. tu ne peux pas hiérarchiser tes données dans le dossier raw. C'est "en vrac"
2. pour les erreurs, il faut regarder les message que tu obtiens. Mais, a priori:
3. un peu de réflexion, que diable !
1. tu ne peux pas hiérarchiser tes données dans le dossier raw. C'est "en vrac"
2. pour les erreurs, il faut regarder les message que tu obtiens. Mais, a priori:
- pour le 1er, il ne faut pas passer
this
(car tu es dans une callback) maisMainActivity.this
. - pour le 2e, tu passes un tableau en paramètre alors qu'il attend un
int
. Attention aussi à ne pas déclarer une méthode à l'intérieur d'une autre méthode - pour le 3e, c'est normal :
buffreader
n'existe pas. C'est plutôtreader
qu'il faut mettre
3. un peu de réflexion, que diable !
positionest un
int!! Tu ne peux pas utiliser de méthode dessus ! Je t'ai montré comment récupérer les données stockés dans raw
Umwami
Messages postés
140
Date d'inscription
mercredi 29 août 2018
Statut
Membre
Dernière intervention
6 septembre 2018
133
4 sept. 2018 à 18:09
4 sept. 2018 à 18:09
1. dossier "raw" remis en place. OK
2.
2. 1/ si je ne me trompe pas, récupérer des données c'est bien
....2/ ici j'ai mit le
....3/ par contre je n'ai aucune idée de pourquoi le

Et enfin, vous dites << pour le 2e, tu passes un tableau en paramètre alors qu'il attend un int >> c'est à dire ?
A quel niveau ?
2.
buffreaderremplacer par
reader. OK
2. 1/ si je ne me trompe pas, récupérer des données c'est bien
getResources().
....2/ ici j'ai mit le
MainActivity.thismais toujours en rouge
....3/ par contre je n'ai aucune idée de pourquoi le
displayLyricsest en rouge, est-ce parce qu'il est dans
onItemSelected?

Et enfin, vous dites << pour le 2e, tu passes un tableau en paramètre alors qu'il attend un int >> c'est à dire ?
A quel niveau ?
BunoCS
Messages postés
15506
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
10 mars 2025
3 914
5 sept. 2018 à 11:03
5 sept. 2018 à 11:03
J'aimerais que tu lises les messages d'erreur avant de poster s'il te plait...
Tu as mis
Je m'arrête là pour l'instant. Reviens nous voir quand tu auras traiter ces petites erreurs
Tu as mis
MainActivity.this, ok, mais tu as fait sauter la virgule entre les 2 paramètres !
Je m'arrête là pour l'instant. Reviens nous voir quand tu auras traiter ces petites erreurs
Umwami
Messages postés
140
Date d'inscription
mercredi 29 août 2018
Statut
Membre
Dernière intervention
6 septembre 2018
133
5 sept. 2018 à 13:37
5 sept. 2018 à 13:37
Oui mais vous ne me dites même pas si les autres changements que j'ai effectuer son bon, alors oui, j'ai remis la virgule après le
Bref, j'en ai marre de cette Application de toute façon, je l'ai faite juste pour m’entraîner et pour mieux comprendre le codage d'une App java. Je m’arrête là. J'en apprendrais surement plus durant ma formation.
Encore merci du temps que vous m'avez consacrer pour résoudre ce problème BrunoCS.

MainActivity.this,mais cette ligne reste rouge, une fois de plus.
Bref, j'en ai marre de cette Application de toute façon, je l'ai faite juste pour m’entraîner et pour mieux comprendre le codage d'une App java. Je m’arrête là. J'en apprendrais surement plus durant ma formation.
Encore merci du temps que vous m'avez consacrer pour résoudre ce problème BrunoCS.

BunoCS
Messages postés
15506
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
10 mars 2025
3 914
6 sept. 2018 à 16:19
6 sept. 2018 à 16:19
Oui mais vous ne me dites même pas si les autres changements que j'ai effectuer son bon, alorsSi l'IDE le souligne en rouge, ce n'est jamais bon... De plus, il faut apprendre également à lire les messages d'erreur retournés par le compilateur ;)
3 sept. 2018 à 13:24
Re BrunoCS !
1. seulement des noms de Pays
2. les noms de ces Pays
3. les mp3 sont dans l'App (raw)
4. je ne sais pas où l'on stock des fichiers texte
3 sept. 2018 à 13:29
2. les noms de ces Pays
-> ok, donc ça, je crois que c'est bon
3. les mp3 sont dans l'App (raw)
-> ok
4. je ne sais pas où l'on stock des fichiers texte
-> dans le répertoire raw aussi, si tu veux.