J'ai le code suivant:
AssetFileDescriptor afd = getAssets().openFd("AudioFile.mp3");
player = new MediaPlayer();
player.setDataSource(afd.getFileDescriptor());
player.prepare();
player.start();
Le problème est que, lorsque j'exécute ce code, il commence à lire tous les fichiers audio dans le répertoire des actifs, dans l'ordre alphabétique au lieu de simplement lire le fichier audio que j'ai demandé. Qu'est-ce que je fais mal? Existe-t-il un meilleur moyen de lire des fichiers audio à partir du répertoire des ressources?
Question complémentaire: Y a-t-il une différence entre conserver les fichiers audio dans le répertoire assets et les conserver dans le répertoire res / raw? Outre le fait qu'ils n'obtiennent pas d'identifiants s'ils sont dans le répertoire des actifs. Si je déplace les fichiers audio vers le dossier res / raw, j'ai un problème avec la réutilisation de MediaPlayer
s car il n'y a pas de paramètre id pour setDataSource()
. Je ne trouve pas de bons conseils pour gérer ce genre de problème.
la source
Cette fonction fonctionnera correctement :)
la source
MediaPlayer m
doit êtrestatic
ou avoir une autre référence . Si vous avezm
dans une fonction sans aucune référence,GC
va "collecter"Voici ma version statique:
la source
Correction de la fonction ci-dessus pour la lecture et la pause
la source
démarrer le son
méthode
la source
cela fonctionne pour moi:
Dans l'activité principale, lors de la création:
comment utiliser dans le code (en cliquant sur le bouton):
la source