2017-10-05 11 views
0

でダウンロードしたファイルを見つけ、私持っているいくつかのaudiofilesをダウンロードし、MediaPlayerので(それらを果たしているアプリカントはDownloadManager

私はこのようなDownloadManagerを使用してファイルをダウンロードします。

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)); 

、私は、ファイルがダウンロードされていることを確認し、再生可能な しかし、私はFileでそれらを開き、MediaPlayerのにそのファイルを渡す必要ができ

私はこのようなことを実行します。。

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 
} 

ダウンロードIDをSharedPreferencesにuidで保存し、ダウンロードマネージャを使用してファイルを削除します。downloadmanager.remove(id)これは正常に動作し、正しいファイルが削除されます。

私は間違っていますか?

代わりgetUriForDownloadedFileによって戻さUriからファイルパスを取得するためのおかげで

答えて

1

は、ちょうどMediaPlayerのためのデータソースとしてUriを使用します。

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