加入两个权限
一个是联网,另一个是读写SD卡
- <uses-permission Android:name="android.permission.INTERNET"></uses-permission>
- <uses-permission android: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();
- }
- }
- }