cocos2d-x 공부용2014. 9. 1. 14:13

package com.example.download_progress;


import java.io.BufferedInputStream;

 import java.io.FileOutputStream;

 import java.io.InputStream;

 import java.io.OutputStream;

 import java.net.URL;

 import java.net.URLConnection;

 

import android.app.Activity;

 import android.app.Dialog;

 import android.app.ProgressDialog;

 import android.os.AsyncTask;

 import android.os.Bundle;

 import android.util.Log;

 import android.view.View;

 import android.view.View.OnClickListener;

 import android.widget.Button;

 

public class MainActivity extends Activity {

     

    public static final int DIALOG_DOWNLOAD_PROGRESS = 0;

     private Button startBtn;

     private ProgressDialog mProgressDialog;

     

    /** Called when the activity is first created. */

     @Override

     public void onCreate(Bundle savedInstanceState) {

         super.onCreate(savedInstanceState);

         setContentView(R.layout.activity_main);

         startBtn = (Button)findViewById(R.id.startBtn);

         startBtn.setOnClickListener(new OnClickListener(){

             public void onClick(View v) {

                 startDownload();

             }

         });

     }

 

    private void startDownload() {

         String url = "http://192.168.13.114:8080/aaa.pdf";

         new DownloadFileAsync().execute(url);

     }

     @Override

     protected Dialog onCreateDialog(int id) {

         switch (id) {

             case DIALOG_DOWNLOAD_PROGRESS:

                 mProgressDialog = new ProgressDialog(this);

                 mProgressDialog.setMessage("Downloading file..");

                 mProgressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);

                 mProgressDialog.setCancelable(false);

                 mProgressDialog.show();

                 return mProgressDialog;

             default:

                 return null;

         }

     }

     

     class DownloadFileAsync extends AsyncTask<String, String, String> {

         

        @Override

         protected void onPreExecute() {

             super.onPreExecute();

             showDialog(DIALOG_DOWNLOAD_PROGRESS);

         }

 

        @Override

         protected String doInBackground(String... aurl) {

             int count;

 

            try {

                 URL url = new URL(aurl[0]);

                 URLConnection conexion = url.openConnection();

                 conexion.connect();

 

                int lenghtOfFile = conexion.getContentLength();

                 Log.d("ANDRO_ASYNC", "Lenght of file: " + lenghtOfFile);

 

                InputStream input = new BufferedInputStream(url.openStream());

                 OutputStream output = new FileOutputStream("/mnt/sdcard/aaa.pdf");

 

                byte data[] = new byte[1024];

 

                long total = 0;

 

                while ((count = input.read(data)) != -1) {

                     total += count;

                     publishProgress(""+(int)((total*100)/lenghtOfFile));

                     output.write(data, 0, count);

                 }

 

                output.flush();

                 output.close();

                 input.close();

             } catch (Exception e) {}

             return null;

 

        }

         protected void onProgressUpdate(String... progress) {

              Log.d("ANDRO_ASYNC",progress[0]);

              mProgressDialog.setProgress(Integer.parseInt(progress[0]));

         }

 

        @Override

         protected void onPostExecute(String unused) {

             dismissDialog(DIALOG_DOWNLOAD_PROGRESS);

         }

     }

 }

Posted by 아이시네프