2017-07-22 1 views
0

Le code ci-dessous que j'ai créé fonctionne bien lorsque je tape le nom de l'animal et il joue le son de l'animal mais comment simplifier pour 200 fichiers son. comme obtenir la chaîne à partir d'edittext et la recherche du fichier à partir du dossier brut et jouer. Si le texte entré est "chien", il devrait jouer "dog.mp3"Comment trouver et lire le fichier audio en fonction du texte saisi dans Edittext

editText.addTextChangedListener(new TextWatcher() { 
       public void afterTextChanged(Editable s) { 
        { 
         String name  = editText.getText().toString(); 
         if(name.contentEquals("cow")){ 

          mp = MediaPlayer.create(Selection1Page1.this, R.raw.cow); 
          mp.start(); 
         } 
         if(name.contentEquals("bat")){ 

          mp = MediaPlayer.create(Selection1Page1.this, R.raw.bat); 
          mp.start(); 
         } 
         if(name.contentEquals("cat")){ 

          mp = MediaPlayer.create(Selection1Page1.this, R.raw.cat); 
          mp.start(); 
         } 
        } 

       } 
+0

@PPartisan Merci pour la réponse que je suis nouveau android je peux » t l'obtenir pleinement. Puis-je avoir une autre logique de base pour cela afin que je puisse apprendre et appliquer. –

Répondre

0

Appliquer la solution donnée here. Ajoutez une méthode utilitaire quelque part:

public static int getResourceIdentifierForRawFile(Context context, String fileName) { 
    final String packageName = context.getPackageName(); 
    final Resources resources = context.getResources(); 
    return resources.getIdentifier(fileName, "raw", packageName); 
} 

et l'utiliser pour convertir le nom d'un fichier dans un identifiant:

final String fileName = editText.getText().toString(); 
final int fileResId = getResourceIdentifierForRawFile(this, fileName); 
//"this" assumes you are inside a class that inherits from Context, i.e. an Activity 
MediaPlayer.create(this, fileResId).start(); 
+0

Meilleure réponse @PPartisan, Ce code fait exactement ce dont j'ai besoin, La seule chose est que nous devons gérer l'exception si le fileResId = 0. –