Je viens de Taiwan et mon anglais est assez basique, merci de votre indulgence.
J'ai construit une application iPad et l'ai publiée sur App Store, qui est une sorte de tableau de communication (AAC pour les personnes qui ont des difficultés à parler). Il y a plusieurs boutons sur la vue principale et lorsque l'utilisateur en touche un, l'application joue un son mp3 correspondant à ce bouton. J'ai mis tous les fichiers mp3 dans un dossier et je détermine lequel jouer dynamiquement au moment de l'exécution.
Récemment, j'ai travaillé à la construction de la version Android de cette application, mais j'ai rencontré un problème : lorsque je touche un bouton dans la vue, le MediaPlayer ne lit pas seulement le fichier correspondant mais continue à lire tous les autres fichiers mp3 du dossier en continu. Cela ne se produit pas lors du développement de la version iPad. Quelqu'un peut-il m'aider à résoudre ce problème et à faire en sorte que le MediaPlayer fonctionne correctement ?
PS. J'ai mis tous les fichiers MP3 dans des sous-dossiers et je les ai mis dans le dossier "assets". C'est parce que pour certaines raisons, tous les fichiers mp3 utilisent un nom de fichier numérique (ex. 0123223.mp3), et le MP3 à lire dépend du bouton que l'utilisateur a touché, donc je ne peux pas utiliser R.raw.0123223 non seulement parce que la classe R ne peut pas avoir un membre nommé en numérique, mais aussi parce que le fichier mp3 cible ne peut être déterminé qu'au moment de l'exécution et non de la compilation, donc je ne peux pas utiliser le dossier res/raw.
Mon code est le suivant :
private void PlayMP3(String mp3File) throws IOException {
AssetFileDescriptor afd = this.getAssets().openFd(mp3File);
MediaPlayer player = new MediaPlayer();
player.setOnCompletionListener(new OnCompletionListener(){
public void onCompletion(MediaPlayer mp) {
System.out.println(mp.getAudioSessionId() + " finished.");
}
});
player.setDataSource(afd.getFileDescriptor());
player.setLooping(false);
player.prepare();
player.start();
}
le paramètre "mp3file" de PlayMP3 est une chaîne concaténée de chemins de fichiers mp3, selon le bouton que l'utilisateur a touché.
Merci beaucoup !