Guest User

Untitled

a guest
May 22nd, 2018
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.23 KB | None | 0 0
  1. package com.samuelives.videoplayer.system;
  2.  
  3. import android.app.DownloadManager;
  4. import android.content.Context;
  5. import android.content.SharedPreferences;
  6. import android.net.Uri;
  7. import android.os.Build;
  8. import android.os.Environment;
  9. import android.support.v7.preference.PreferenceManager;
  10. import android.util.Log;
  11. import android.webkit.MimeTypeMap;
  12.  
  13. import com.samuelives.videoplayer.R;
  14. import com.samuelives.videoplayer.util.StorageHelper;
  15.  
  16. import java.io.File;
  17.  
  18. public class Downloader {
  19.  
  20. private String mMimeType = "null", mExtension = "null";
  21. private Context mContext = null;
  22. private DownloadManager mManager = null;
  23.  
  24. public Downloader(Context context){
  25. this.mContext = context;
  26.  
  27. mManager = (DownloadManager)mContext.getSystemService(Context.DOWNLOAD_SERVICE);
  28. }
  29.  
  30. public void download(String title, Uri videoUri){
  31.  
  32. Log.i("Download Extension", getMimeType(videoUri.toString()));
  33.  
  34. DownloadManager.Request request = new DownloadManager.Request(videoUri);
  35. request.setTitle(title);
  36. request.addRequestHeader("User-Agent", getUserAgent());
  37.  
  38. if(mMimeType != "null"){
  39. request.setMimeType(mMimeType);
  40. }
  41.  
  42. if(isOnlyDownloadWithWifi()){
  43. request.setAllowedNetworkTypes(DownloadManager.Request.NETWORK_WIFI);
  44. }
  45.  
  46. SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(mContext);
  47.  
  48. if(prefs.getBoolean("pref_key_is_storage_in_sdcard", true)){
  49.  
  50. if(StorageHelper.haveSdCard(mContext)){
  51.  
  52. File storageDir = StorageHelper.getStorage(mContext);
  53. if(!storageDir.exists()){
  54. storageDir.mkdirs();
  55. }
  56.  
  57. Log.i("Download Path", storageDir.getAbsolutePath());
  58.  
  59. if(mMimeType != "null"){
  60. request.setDestinationUri(Uri.fromFile(new File(storageDir.getAbsolutePath() + '/' + title + mExtension)));
  61. }else{
  62. request.setDestinationUri(Uri.fromFile(new File(storageDir.getAbsolutePath() + '/' + title + getMimeType(videoUri.toString()))));
  63. }
  64.  
  65.  
  66. }else{
  67.  
  68. if(mMimeType != "null") {
  69.  
  70. request.setDestinationUri( Uri.fromFile(new File(StorageHelper.getInternalStorage(mContext), title + mExtension)));
  71.  
  72. }else{
  73.  
  74. request.setDestinationUri( Uri.fromFile(new File(StorageHelper.getInternalStorage(mContext), title + getMimeType(videoUri.toString()))));
  75.  
  76. }
  77. }
  78.  
  79. }else{
  80.  
  81. if(mMimeType != "null") {
  82.  
  83. request.setDestinationUri( Uri.fromFile(new File(StorageHelper.getInternalStorage(mContext), title + mExtension)));
  84.  
  85. }else{
  86.  
  87. request.setDestinationUri( Uri.fromFile(new File(StorageHelper.getInternalStorage(mContext), title + getMimeType(videoUri.toString()))));
  88.  
  89. }
  90.  
  91. }
  92.  
  93. mManager.enqueue(request);
  94. }
  95.  
  96. //Set mimetype of download (optional)
  97. public void setMimeTypeAndExtension(String mimeType){
  98. this.mMimeType = mimeType;
  99.  
  100. if(mimeType != null){
  101. this.mExtension = '.' + MimeTypeMap.getSingleton().getExtensionFromMimeType(mimeType);
  102. }
  103. }
  104.  
  105. private String getMimeType(String uri){
  106. String mime = '.' + MimeTypeMap.getFileExtensionFromUrl(uri);
  107. if(mime.contains(".mp4") || mime.contains(".3gp") || mime.contains(".ogv")){
  108. return mime;
  109. }else{
  110. return ".mp4";
  111. }
  112. }
  113.  
  114. private boolean isOnlyDownloadWithWifi(){
  115. SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(mContext);
  116. return preferences.getBoolean("pref_key_is_download_only_wifi", true);
  117. }
  118.  
  119. private String getUserAgent(){
  120.  
  121. boolean isTablet = mContext.getResources().getBoolean(R.bool.isTablet);
  122. String ua = null;
  123.  
  124. if(isTablet){
  125. ua = "Mozilla/5.0 (Linux; Android " + Build.VERSION.RELEASE + "; Tablet; rv: 41.0) Gecko/41.0 Firefox/41.0";
  126. Log.d("User-Agent", ua);
  127. }else{
  128. ua = "Mozilla/5.0 (Linux; Android " + Build.VERSION.RELEASE + "; Mobile; rv: 41.0) Gecko/41.0 Firefox/41.0";
  129. Log.d("User-Agent", ua);
  130. }
  131.  
  132. return ua;
  133. }
  134.  
  135. }
Add Comment
Please, Sign In to add comment