2016-10-25 8 views
0

J'ai téléchargé le fichier mp3 à partir d'une URL et l'enregistrer dans un Environment.DIRECTORY_DOWNLOADS par le code suivant:Comment puis-je lire le fichier mp3 de Environment.DIRECTORY_DOWNLOADS

request.setDestinationInExternalFilesDir(MainActivity.this, Environment.DIRECTORY_DOWNLOADS,"d1.mp3"); 

J'ai vérifié le fichier téléchargé peut correctement. Maintenant, je veux jouer ce fichier d1.mp3, mais quand j'appuie sur le bouton de lecture, il ne commence pas à jouer de la musique! il semble que j'ai un problème quand j'utilise "setDataSource". J'apprécierai si vous vérifiez mon code et laissez-moi où j'ai fait une erreur.

private void initMediaPlayer() 
{ 
    String PATH_TO_FILE = Environment.DIRECTORY_DOWNLOADS + "/d1.mp3"; 
    mp = new MediaPlayer(); 

    try { 
     mp.setDataSource(PATH_TO_FILE); 
     mp.prepare(); 
     Toast.makeText(this, PATH_TO_FILE, Toast.LENGTH_LONG).show(); 
     stateMediaPlayer = stateMP_NotStarter; 
     textState.setText("- IDLE -"); 
    } catch (IllegalArgumentException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
     Toast.makeText(this, e.toString(), Toast.LENGTH_LONG).show(); 
     stateMediaPlayer = stateMP_Error; 
     textState.setText("- ERROR!!! -"); 
    } catch (IllegalStateException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
     Toast.makeText(this, e.toString(), Toast.LENGTH_LONG).show(); 
     stateMediaPlayer = stateMP_Error; 
     textState.setText("- ERROR!!! -"); 
    } catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
     Toast.makeText(this, e.toString(), Toast.LENGTH_LONG).show(); 
     stateMediaPlayer = stateMP_Error; 
     textState.setText("- ERROR!!! -"); 
    } 

} 

public void play(View view) { 
    initMediaPlayer(); 
    mp.start();   
} 
+0

quelles sont les valeurs de 'PATH_TO_FILE' que vous obtenez? –

Répondre

0

Vous devez utiliser getExternalFilesDir(Environment.DIRECTORY_DOWNLOADS) (pour les téléchargements d'applications) ou Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS) pour le chemin complet vers le fichier téléchargé.

+0

Cher Andriy, Merci pour votre réponse. Malheureusement, le problème existe toujours. Comme vous l'avez dit pour le téléchargement, j'ai changé le code: request.setDestinationInExternalFilesDir (MainActivity.this, Environment.getExternalStoragePublicDirectory (Environment.DIRECTORY_DOWNLOADS) .getPath(), "d1.mp3"); et pour créer un lecteur multimédia, j'ai utilisé le code suivant: mp = new MediaPlayer(); Chaîne PATH_TO_FILE = Environment.getExternalStoragePublicDirectory (Environment.DIRECTORY_DOWNLOADS) .getPath() + "/d1.mp3"; mp = MediaPlayer.create (MainActivity.this, Uri.parse (PATH_TO_FILE)); – Hamid

+0

Vous devez modifier ceci: 'String PATH_TO_FILE = Environment.DIRECTORY_DOWNLOADS +" /d1.mp3 ";' line à 'Chaîne PATH_TO_FILE = getExternalFilesDir (Environment.DIRECTORY_DOWNLOADS) +" /d1.mp3 ";' pas à télécharger. –

+0

le fichier est stocké dans le stockage de l'appareil et le chemin suivant: Android/data/"nom du paquet" /files/storage/emulated/0/Download/d1.mp3 il semble que l'adresse du fichier mp3 dans MediaPlayer.create est toujours ne peut pas trouver ce fichier. – Hamid