2017-10-05 3 views
0

Ich habe eine Anwendung, die einige Audiodateien herunterlädt und dann spielt sie (mit dem MediaplayerCant Datei von der Downloadmanager heruntergeladen finden

ich laden Sie die Dateien mit dem Downloadmanager wie folgt aus:.

DownloadManager downloadmanager = downloadManager = (DownloadManager) getApplication().getSystemService(Context.DOWNLOAD_SERVICE); 

    long id = downloadManager.enqueue(new DownloadManager.Request(uri) 
      .setAllowedNetworkTypes(DownloadManager.Request.NETWORK_WIFI | 
            DownloadManager.Request.NETWORK_MOBILE) 
      .setAllowedOverRoaming(false) 
      .setTitle(e.getValue().getName()) 
      .setDescription(getString(R.string.DOWNLOAD_MANAGER_TITLE)) 
      .setDestinationInExternalFilesDir(getApplication(),Environment.DIRECTORY_DOWNLOADS,fileName)); 

Jetzt, ich kann überprüfen, ob die Dateien heruntergeladen und sind spielbar Aber ich brauche sie in einem File zu öffnen und dann die Datei auf den Mediaplayer übergeben

ich das wie folgt aus:..

Uri fileUri = dlMgr.getUriForDownloadedFile(id); 

     File mAudioFile =new File(fileUri.getPath()); 

     if(mAudioFile.exists(){ 
    mediaPlayer.setDataSource(mAudioFile.getAbsolutePath()); 
    }else 
{ 
//the file does not exist <-- this is where i end 
} 

Ich speichere das Download-IDs in SharedPreferences mit einer uid und die Downloadmanager verwenden, um Dateien entfernen d.h downloadmanager.remove(id) Dies funktioniert gut und die richtige Datei entfernt wird.

Was mache ich falsch?

Dank

Antwort

1

Statt Dateipfad von Uri retuned von getUriForDownloadedFile zu bekommen, verwenden Sie einfach Uri als Datenquelle für MediaPlayer:

if(fileUri!=null){ 
    mediaPlayer.setDataSource(fileUri); 
}else{ 
    // fileUri is null 
} 
Verwandte Themen