Exemplo n.º 1
0
        //***************************************************************************************************
        //******************FUNCION  QUE SE ENCARGA DEL PROCESO DE DESCARGA DE ARCHIVO***********************
        //***************************************************************************************************
        void DescargaArchivo(ProgressCircleView tem_pcv, string url_archivo)
        {
            //OBTENEMOS LA RUTA DONDE SE ENCUENTRA LA CARPETA PICTURES DE NUESTRO DISPOSITIVO Y LE CONCTENAMOS
            //EL NOMBRE DE UNA CARPETA NUEVA CARPETA, ES AQUI DONDE GUADAREMOS EL ARCHIVO A DESCARGAR
            string filePath = Android.OS.Environment.GetExternalStoragePublicDirectory(Android.OS.Environment.DirectoryPictures).AbsolutePath + "/DescargaImagen/";

            Java.IO.File directory = new Java.IO.File(filePath);

            //VERIFICAMOS SI LA CARPETA EXISTE, SI NO LA CREAMOS
            if (directory.Exists() == false)
            {
                directory.Mkdir();
            }

            //ESTABLECEMOS LA UBICACION DE NUESTRO ARCHIVO A DESCARGAR
            URL url = new URL(url_archivo);

            //CABRIMOS UNA CONEXION CON EL ARCHIVO
            URLConnection conexion = url.OpenConnection();

            conexion.Connect();

            //OBTENEMOS EL TAMAÑO DEL ARCHIVO A DESCARGAR
            int lenghtOfFile = conexion.ContentLength;

            //CREAMOS UN INPUTSTREAM PARA PODER EXTRAER EL ARCHIVO DE LA CONEXION
            InputStream input = new BufferedInputStream(url.OpenStream());

            //ASIGNAMOS LA RUTA DONDE SE GUARDARA EL ARCHIVO, Y ASIGNAMOS EL NOMBRE CON EL QUE SE DESCARGAR EL ARCHIVO
            //PARA ESTE CASO CONSERVA EL MISMO NOMBRE
            string NewFile = directory.AbsolutePath + "/" + url_archivo.Substring(url_archivo.LastIndexOf("/") + 1);

            //CREAMOS UN OUTPUTSTREAM EN EL CUAL UTILIZAREMOS PARA CREAR EL ARCHIVO QUE ESTAMOS DESCARGANDO
            OutputStream output = new FileOutputStream(NewFile);

            byte[] data  = new byte[lenghtOfFile];
            long   total = 0;

            int count;

            //COMENSAMOS A LEER LOS DATOS DE NUESTRO INPUTSTREAM
            while ((count = input.Read(data)) != -1)
            {
                total += count;
                //CON ESTA OPCION REPORTAMOS EL PROGRESO DE LA DESCARGA EN PORCENTAJE A NUESTRO CONTROL
                //QUE SE ENCUENTRA EN EL HILO PRINCIPAL
                RunOnUiThread(() => tem_pcv.setPorcentaje((int)((total * 100) / lenghtOfFile)));

                //ESCRIBIMOS LOS DATOS DELIDOS ES NUESTRO OUTPUTSTREAM
                output.Write(data, 0, count);
            }
            output.Flush();
            output.Close();
            input.Close();

            //INDICAMOS A NUESTRO PROGRESS QUE SE HA COMPLETADO LA DESCARGA AL 100%
            RunOnUiThread(() => tem_pcv.setPorcentaje(100));
        }
Exemplo n.º 2
0
 //TASK PARALLEL LIBRARY
 void LLama_TaskParallelLibrary(ProgressCircleView tem_pcv, string url_archivo)
 {
     Task.Factory.StartNew(() => {
         DescargaArchivo(tem_pcv, url_archivo);
     })
     .ContinueWith(task => RunOnUiThread(() => tem_pcv.setPorcentaje(100)));
 }