SVP ! Spinner onItemSelected ==> MediaPlayer
Résolu
Umwami
Messages postés
140
Date d'inscription
Statut
Membre
Dernière intervention
-
BunoCS Messages postés 15952 Date d'inscription Statut Modérateur Dernière intervention -
BunoCS Messages postés 15952 Date d'inscription Statut Modérateur Dernière intervention -
A voir également:
- SVP ! Spinner onItemSelected ==> MediaPlayer
- Comment spinner un texte - Télécharger - Outils professionnels
- Content spinner - Télécharger - Traitement de texte
- Windows mediaplayer - Télécharger - Lecture
- Mediaplayer classic - Télécharger - Lecture
- Vlc mediaplayer - Télécharger - Lecture
6 réponses
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
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 ?
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".
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
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
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 ?
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
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 ?
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.

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
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.