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();        }    }      }

更多相关文章

  1. 在AndroidManifest.xml文件中的android:windowSoftInputMode属性
  2. Andorid在布局文件中中文加粗
  3. android的文件、目录操作
  4. android Intent打开各种类型文件((PDF、word、excel、ppt、chm)
  5. android文件操作的实例
  6. Android 以流的方式读取服务器图片文件
  7. Android 文件浏览器源码
  8. Android文件保存和读取
  9. android Studio导入source文件

随机推荐

  1. android setPersistent
  2. android截屏
  3. android 调用摄像头
  4. adt或eclipse中Android工程如何互相引用
  5. Android(安卓)SeekBar(拖动条)
  6. Android(安卓)WebView文件上传(关键代码)
  7. Android学习札记37:onSaveInstanceState (
  8. Android库. 1 UDP客户端
  9. Android(安卓)打开软键盘
  10. Android(安卓)添加书签(二)