Пример #1
0
        /*public static long CurrentDownloading
         * {
         *  get
         *  {
         *      Android.App.DownloadManager downloadManager = (Android.App.DownloadManager)Application.Context.GetSystemService("download");
         *
         *      Android.App.DownloadManager.Query query = new Android.App.DownloadManager.Query();
         *      //query.SetFilterById(_downloadReference);
         *      //query.SetFilterByStatus(DownloadStatus.Pending | DownloadStatus.Running | DownloadStatus.Paused | DownloadStatus.Successful);
         *
         *      ICursor cursor = downloadManager.InvokeQuery(query);
         *
         *      long num = 0;
         *
         *      while (cursor.MoveToNext())
         *      {
         *          num++;
         *      }
         *
         *      return num;
         *  }
         * }*/

        public static void RequestDownload(Uri uri, IDownloadUpdated2 notify)
        {
            if (MBDownloadManager.DefaultManager == null)
            {
                MBDownloadManager.DefaultManager = new MBDownloadManager();
            }

            MBDownloadManager.DefaultManager.AddDownload(uri, notify);
        }
Пример #2
0
        public static long RequestDownload(Uri uri, string filename, string title, IDownloadUpdated2 notify)
        {
            if (MBDownloadManager2.DefaultManager == null)
            {
                MBDownloadManager2.DefaultManager = new MBDownloadManager2();
            }

            return(MBDownloadManager2.DefaultManager.AddDownload(uri, filename, title, notify));
        }
Пример #3
0
        public void AddDownload(Uri uri, IDownloadUpdated2 notify)
        {
            object obj2 = MBDownloadManager.requestQueue;

            lock (obj2)
            {
                if (MBDownloadManager.pendingRequests.ContainsKey(uri))
                {
                    return;
                }
            }

            MBDownloadManager.QueueRequest(uri, notify);
            return;
        }
Пример #4
0
        public static void UpdateNotify(Uri uri, IDownloadUpdated2 notify)
        {
            if (pendingRequests.ContainsKey(uri))
            {
                //Uri down = d.First() as Uri;
                object obj = MBDownloadManager.requestQueue;
                lock (obj)
                {
                    List <IDownloadUpdated2> list = new List <IDownloadUpdated2>(4);

                    /*list.Add(notify);
                     * pendingRequests[uri] = list;*/

                    list = pendingRequests[uri];
                    list.Add(notify);
                }
            }
        }
Пример #5
0
        static void QueueRequest(Uri uri, IDownloadUpdated2 notify)
        {
            if (notify == null)
            {
                throw new ArgumentNullException("notify");
            }
            object obj = MBDownloadManager.requestQueue;

            lock (obj)
            {
                if (MBDownloadManager.pendingRequests.ContainsKey(uri))
                {
                    MBDownloadManager.pendingRequests[uri].Add(notify);
                }
                else
                {
                    List <IDownloadUpdated2> list = new List <IDownloadUpdated2>(4);
                    list.Add(notify);
                    MBDownloadManager.pendingRequests[uri] = list;
                    if (MBDownloadManager.fileUriers >= MaxRequests)
                    {
                        MBDownloadManager.requestQueue.Push(uri);
                    }
                    else
                    {
                        Interlocked.Increment(ref MBDownloadManager.fileUriers);
                        ThreadPool.QueueUserWorkItem(delegate
                        {
                            try
                            {
                                MBDownloadManager.StartFileDownload(uri);
                            }
                            catch (Exception value)
                            {
                                Console.WriteLine(value);
                            }
                        });
                    }
                }
            }
        }
Пример #6
0
        static long Download(Uri uri, string filename, string title, IDownloadUpdated2 notify)
        {
            Android.App.DownloadManager downloadManager = (Android.App.DownloadManager)Application.Context.GetSystemService("download");

            Android.App.DownloadManager.Request request = new Android.App.DownloadManager.Request(Android.Net.Uri.Parse(uri.AbsoluteUri));

            //Restrict the types of networks over which this download may proceed.
            request.SetAllowedNetworkTypes(Android.App.DownloadNetwork.Wifi | Android.App.DownloadNetwork.Mobile);
            //Set whether this download may proceed over a roaming connection.
            request.SetAllowedOverRoaming(false);
            //Set the title of this download, to be displayed in notifications (if enabled).
            request.SetTitle(title);
            request.SetVisibleInDownloadsUi(false);

            //request.SetNotificationVisibility(DownloadVisibility.Hidden);
                        #if DEBUG
            request.SetNotificationVisibility(DownloadVisibility.Visible);
                        #else
            request.SetNotificationVisibility(DownloadVisibility.Hidden);
                        #endif

            request.SetDestinationInExternalFilesDir(Application.Context, Android.OS.Environment.DirectoryDownloads, filename);

            //Enqueue a new download and same the referenceId
            var id = downloadManager.Enqueue(request);

            ThreadPool.QueueUserWorkItem(state =>
            {
                MBDownloadManager2.DownloadMonitor(id);
            });

            /*new Thread(() =>
             * {
             *      MBDownloadManager2.DownloadMonitor(id);
             *
             * }).Start();*/

            return(id);
        }
Пример #7
0
        public long AddDownload(Uri uri, string filename, string title, IDownloadUpdated2 notify)
        {
            long   id   = 0;
            object obj2 = MBDownloadManager2.requestQueue;

            lock (obj2)
            {
                if (MBDownloadManager2.pendingRequests.ContainsKey(uri))
                {
                    return(0);
                }
            }

            if (notify == null)
            {
                throw new ArgumentNullException("notify");
            }
            object obj = MBDownloadManager2.requestQueue;

            lock (obj)
            {
                if (MBDownloadManager2.pendingRequests.ContainsKey(uri))
                {
                    MBDownloadManager2.pendingRequests[uri].Add(notify);
                }
                else
                {
                    List <IDownloadUpdated2> list = new List <IDownloadUpdated2>(4);
                    list.Add(notify);
                    MBDownloadManager2.pendingRequests[uri] = list;

                    id = MBDownloadManager2.Download(uri, filename, title, notify);
                }
            }
            return(id);
        }