IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Composants graphiques Android Discussion :

Lier choix Spinner (OnClick) au Lecteur Audio + Affichage Lyrics.


Sujet :

Composants graphiques Android

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Informatique de Gestion (1ère année)
    Inscrit en
    Août 2018
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Informatique de Gestion (1ère année)
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2018
    Messages : 17
    Par défaut Lier choix Spinner (OnClick) au Lecteur Audio + Affichage Lyrics.
    Bonjour à tous et à toutes !

    Alors voilà, je développe une "App" test via Android Studio qui n'est rien d'autre qu'un lecteur Audio (avec Lyrics + Spinner en haut pour sélectionner la musique)
    et après avoir parcouru bon nombre de Tutos Youtube et de site internet pour trouver la méthode à suivre, je n'ai pas trouver comment (dans MainActivity)
    lier les différents choix de musique (Spinner) au lecteur audio ainsi que l'affichage des Lyrics de la chanson sélectionner.


    Voici une capture d'écran de l'App (MainActivity) :
    Nom : Main_Activity1.jpg
Affichages : 303
Taille : 32,9 Ko

    Et le code du MainActivity :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    package be.umwami.looply;
     
    import android.media.MediaPlayer;
    import android.os.Handler;
    import android.os.Message;
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.view.View;
    import android.widget.Button;
    import android.widget.SeekBar;
    import android.widget.Spinner;
    import android.widget.TextView;
     
     
    public class MainActivity extends AppCompatActivity {
     
        //Spinner
        Spinner spinner;
        int currentItem = 0;
     
     
     
        //Eléments de l'activitée
        Button playBtn;
        SeekBar positionBar;
        SeekBar volumeBar;
        TextView elapsedTimeLabel;
        TextView remainingTimeLabel;
        MediaPlayer mp;
        int totalTime;
     
     
     
     
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            spinner = (Spinner)findViewById(R.id.spinner);
     
     
     
     
     
            //Paramètres Musique
            playBtn = (Button) findViewById(R.id.playBtn);
            elapsedTimeLabel = (TextView) findViewById(R.id.elapsedTimeLabel);
            remainingTimeLabel = (TextView) findViewById(R.id.remainingTimeLabel);
     
            // Media Player
            mp = MediaPlayer.create(this, R.raw.queen_mama);
            mp.setLooping(true);
            mp.seekTo(0);
            mp.setVolume(1f, 1f);
            totalTime = mp.getDuration();
     
            // Position Bar
            positionBar = (SeekBar) findViewById(R.id.positionBar);
            positionBar.setMax(totalTime);
            positionBar.setOnSeekBarChangeListener(
                    new SeekBar.OnSeekBarChangeListener() {
                        @Override
                        public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
                            if (fromUser) {
                                mp.seekTo(progress);
                                positionBar.setProgress(progress);
                            }
                        }
     
                        @Override
                        public void onStartTrackingTouch(SeekBar seekBar) {
     
                        }
     
                        @Override
                        public void onStopTrackingTouch(SeekBar seekBar) {
     
                        }
                    }
            );
     
     
            // Volume Bar
            volumeBar = (SeekBar) findViewById(R.id.volumeBar);
            volumeBar.setOnSeekBarChangeListener(
                    new SeekBar.OnSeekBarChangeListener() {
                        @Override
                        public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
                            float volumeNum = progress / 100f;
                            mp.setVolume(volumeNum, volumeNum);
                        }
     
                        @Override
                        public void onStartTrackingTouch(SeekBar seekBar) {
     
                        }
     
                        @Override
                        public void onStopTrackingTouch(SeekBar seekBar) {
     
                        }
                    }
            );
     
            // Thread (Update positionBar & timeLabel)
            new Thread(new Runnable() {
                @Override
                public void run() {
                    while (mp != null) {
                        try {
                            Message msg = new Message();
                            msg.what = mp.getCurrentPosition();
                            handler.sendMessage(msg);
                            Thread.sleep(1000);
                        } catch (InterruptedException e) {}
                    }
                }
            }).start();
     
        }
     
        private Handler handler = new Handler() {
            @Override
            public void handleMessage(Message msg) {
                int currentPosition = msg.what;
                // Update positionBar.
                positionBar.setProgress(currentPosition);
     
                // Update Labels.
                String elapsedTime = createTimeLabel(currentPosition);
                elapsedTimeLabel.setText(elapsedTime);
     
                String remainingTime = createTimeLabel(totalTime-currentPosition);
                remainingTimeLabel.setText("- " + remainingTime);
            }
        };
     
        public String createTimeLabel(int time) {
            String timeLabel = "";
            int min = time / 1000 / 60;
            int sec = time / 1000 % 60;
     
            timeLabel = min + ":";
            if (sec < 10) timeLabel += "0";
            timeLabel += sec;
     
            return timeLabel;
        }
     
        public void playBtnClick(View view) {
     
            if (!mp.isPlaying()) {
                // Stopping
                mp.start();
                playBtn.setBackgroundResource(R.drawable.stop);
     
            } else {
                // Playing
                mp.pause();
                playBtn.setBackgroundResource(R.drawable.play);
            }
     
        }
    }

    Merci d'avance pour votre aide

    PS : Touts les fichiers audio, lyrics sont dans l'application (Audio dans "raw" et lyrics dans....Je ne sais pas encore où les mettre).
    Et bien sur les musiques afficher sur la photo ne sont pas dans l'App (Droits d'auteur), ce ne sont que des exemples.

  2. #2
    Membre chevronné Avatar de Drowan
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2014
    Messages
    460
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juin 2014
    Messages : 460
    Par défaut


    J'ai regardé rapidement et je n'ai pas vu de code relatif à ton spinner a part son affectation.

    Il faut que tu lui définisse un ArrayAdapter qui va contenir les différent choix possible. Puis que tu implémente un Listener pour réagir à la sélection d'un chanson.
    Comme indiqué dans le guide developper Andoid (en)

  3. #3
    Membre averti
    Homme Profil pro
    Informatique de Gestion (1ère année)
    Inscrit en
    Août 2018
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Informatique de Gestion (1ère année)
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2018
    Messages : 17
    Par défaut
    Bonjour Drowan, merci pour ta réponse

    Je vais y jeté un coup d'oeil, je me demandais aussi, afficher les paroles d'une chanson (TextView) je sais le faire,
    mais comment faire en sorte qu'elles s'affiche en fonction de la chanson choisi dans le Spinner.

    Petit rappel du fonctionnement de l'App :
    Sélection de la chanson via la liste dans le Spinner, affichage des Lyrics en fonction de la chanson et chargement de la musique dans le MediaPlayer.

    Merci pour ta réponse

  4. #4
    Membre chevronné Avatar de Drowan
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2014
    Messages
    460
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juin 2014
    Messages : 460
    Par défaut
    Tu fais cela en réagissant au choix de l'utilisateur


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    TextView paroles;
    Spinner choix;
    
    (...)
    
    choix.setOnItemSelectedListener( new OnItemSelectedListener() {
        @override
        onItemSelected(AdapterView<?> parent, View view, int position, long id) {
            // ici tu utilise l'entier position pour savoir quelle chanson a été choisi
            // Et tu modifie le TextView paroles pour afficher celles correspondante au choix
        }
        });

Discussions similaires

  1. [Google Maps] Affichage d'un lecteur audio dans infoWindow (SoundManager2)
    Par MatthieuQ dans le forum APIs Google
    Réponses: 2
    Dernier message: 30/05/2012, 20h43
  2. Réponses: 1
    Dernier message: 01/02/2008, 09h06
  3. [Lecteur-Audio] par ou commencer ?
    Par DarkWark dans le forum Général Conception Web
    Réponses: 5
    Dernier message: 21/03/2006, 11h40
  4. Choix de clé USB/Lecteur MP3
    Par faressam dans le forum Périphériques
    Réponses: 8
    Dernier message: 17/02/2006, 17h26
  5. fichiers audio : affichage de Propriétés/Résumé
    Par trepidelhia dans le forum Windows XP
    Réponses: 2
    Dernier message: 05/12/2005, 13h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo