Android 下载文件 显示进度条

Android 下载文件 显示进度条

Android 下载文件 显示进度条

加入两个权限

一个是联网,另一个是读写SD卡

<uses-permission android:name="android.permission.INTERNET"></uses-permission>

<uses-permissionandroid:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
   

下载地址是本人的另外一台主机,现在当服务器了,路径可以测试

http://210.30.12.1:8080/mp3/DJ.mp3

import java.io.File;

import java.io.FileNotFoundException;

import java.io.FileOutputStream;

import java.io.IOException;

import java.io.InputStream;

import java.io.OutputStream;

import java.io.RandomAccessFile;

import java.net.MalformedURLException;

import java.net.URL;

import java.net.URLConnection;



import android.app.Activity;

import android.os.Bundle;

import android.os.Environment;

import android.os.Handler;

import android.os.Message;

import android.util.Log;

import android.view.View;

import android.view.View.OnClickListener;

import android.widget.Button;

import android.widget.ProgressBar;

import android.widget.TextView;

import android.widget.Toast;



public class FileDownProcessBarActivity extends Activity {

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

    private static final String Path="http://210.30.12.1:8080/mp3/DJ.mp3";

    private ProgressBar progressBar;

    private TextView textView;

    private Button button;

    private int FileLength;

    private int DownedFileLength=0;

    private InputStream inputStream;

    private URLConnection connection;

    private OutputStream outputStream;

    @Override

    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.main);

        progressBar=(ProgressBar) findViewById(R.id.progressBar1);

        textView=(TextView) findViewById(R.id.textView2);

        button=(Button) findViewById(R.id.button1);

        button.setOnClickListener(new ButtonListener());

    }

    class ButtonListener implements OnClickListener{



        @Override

        public void onClick(View v) {

            DownedFileLength=0;

            // TODO Auto-generated method stub

           Thread thread=new Thread(){

             public void run(){

                 try {

                    DownFile(Path);

                } catch (Exception e) {

                    // TODO: handle exception

                }

             }

           };

           thread.start();

        }    

    }

    private Handler handler=new Handler()

    {

         public void handleMessage(Message msg)

         {

        if (!Thread.currentThread().isInterrupted()) {

            switch (msg.what) {

            case 0:

                progressBar.setMax(FileLength);

                Log.i("文件长度----------->", progressBar.getMax()+"");    

                break;

            case 1:

                progressBar.setProgress(DownedFileLength);

                int x=DownedFileLength*100/FileLength;

                textView.setText(x+"%");

                break;

            case 2:

                Toast.makeText(getApplicationContext(), "下载完成", Toast.LENGTH_LONG).show();

                break;

                

            default:

                break;

            }

        }    

        }

         

    };



    private void DownFile(String urlString)

    {

        

        /*

         * 连接到服务器

         */

        

        try {

             URL url=new URL(urlString);

             connection=url.openConnection();

             if (connection.getReadTimeout()==5) {

                Log.i("---------->", "当前网络有问题");

                // return;

               }

             inputStream=connection.getInputStream();

            

        } catch (MalformedURLException e1) {

            // TODO Auto-generated catch block

            e1.printStackTrace();

        } catch (IOException e) {

            // TODO Auto-generated catch block

            e.printStackTrace();

        }

        

        /*

         * 文件的保存路径和和文件名其中Nobody.mp3是在手机SD卡上要保存的路径,如果不存在则新建

         */

        String savePAth=Environment.getExternalStorageDirectory()+"/DownFile";

        File file1=new File(savePAth);

        if (!file1.exists()) {

            file1.mkdir();

        }

        String savePathString=Environment.getExternalStorageDirectory()+"/DownFile/"+"DJ.mp3";

        File file =new File(savePathString);

        if (!file.exists()) {

            try {

                file.createNewFile();

            } catch (IOException e) {

                // TODO Auto-generated catch block

                e.printStackTrace();

            }    

        }

        /*

         * 向SD卡中写入文件,用Handle传递线程

         */

        Message message=new Message();

        try {

            outputStream=new FileOutputStream(file);

            byte [] buffer=new byte[1024*4];

            FileLength=connection.getContentLength();

            message.what=0;

            handler.sendMessage(message);

            while (DownedFileLength<FileLength) {

                outputStream.write(buffer);

                DownedFileLength+=inputStream.read(buffer);

                Log.i("-------->", DownedFileLength+"");

                Message message1=new Message();

                message1.what=1;

                handler.sendMessage(message1);

            }

            Message message2=new Message();

            message2.what=2;

            handler.sendMessage(message2);

        } catch (FileNotFoundException e) {

            // TODO Auto-generated catch block

            e.printStackTrace();

        } catch (IOException e) {

            // TODO Auto-generated catch block

            e.printStackTrace();

        }

    }

      

}

 

 

你可能感兴趣的:(android)