Android开发:从Tomcat上下载MP3 带百分比进度条

Android开发:从Tomcat上下载MP3 带百分比进度条

package com.src.fpkj.android;      import com.src.fpkj.android.down.DownFielToSdcard;   import android.app.Activity;   import android.os.Bundle;   import android.view.View;   import android.view.View.OnClickListener;   import android.widget.Button;   /**    * 实现一个带进度条的下载dialog显示百分比,很喜欢这效果,感觉很真切    * @author 1314HWL    *  2011/10/10/23:01    */   public class MainActivity extends Activity implements OnClickListener {       Button btn_downMp3;       String httpUrl = "http://10.0.2.2:8080/webdav/missyou.mp3";       public void onCreate(Bundle savedInstanceState) {           super.onCreate(savedInstanceState);           setContentView(R.layout.main);           btn_downMp3 = (Button) findViewById(R.id.btn_down);           btn_downMp3.setOnClickListener(this);       }          public void onClick(View v) {           switch (v.getId()) {           case R.id.btn_down:               DownFielToSdcard filedown = new DownFielToSdcard(MainActivity.this);               try {                   //httpUrl:tomcat 下载地址 test/sdcard中得路径                                          filedown.LoadToSdcard(httpUrl, "test/", "missyou.mp3");               } catch (Exception e1) {                   e1.printStackTrace();               }               break;           }          }   }         package com.src.fpkj.android.down;      import java.io.File;   import java.io.FileOutputStream;   import java.io.InputStream;   import java.io.OutputStream;   import java.net.HttpURLConnection;   import java.net.URL;   import com.src.fpkj.android.R;   import android.app.AlertDialog;   import android.app.Dialog;   import android.content.Context;   import android.os.Environment;   import android.os.Handler;   import android.os.Message;   import android.util.Log;   import android.view.LayoutInflater;   import android.view.View;   import android.widget.ProgressBar;   import android.widget.TextView;   import android.widget.Toast;      public class DownFielToSdcard {          private static String SDPath;       ProgressBar pb;       TextView tv_percent;       int downLoadFileSize, tatalsize;  //downLoadFileSize下载了多少, tatalsize总大小       Dialog dialog;       Context context;          public DownFielToSdcard(Context context) {           super();           this.context = context;           SDPath = Environment.getExternalStorageDirectory() + "/";// 得到的是/sdcard/       }          /**        * 在sdcard中创建文件        *         * @param fileName        * @return        * @throws Exception        */       public File CreateFile(String fileName) throws Exception {           File file = new File(SDPath + fileName);           file.createNewFile();           return file;       }          /**        * 创建目录        *         * @param fileName        * @return        * @throws Exception        */       public File CreateFileSdDir(String dirName) throws Exception {           File sdDir = new File(SDPath + dirName);           sdDir.mkdir();           return sdDir;       }          /**        * 判断文件是否存在        *         * @param fileName        * @return        */          public boolean FileExist(String fileName) {           File file = new File(SDPath + fileName);           return file.exists();       }          /**        * 思路:要下载文件,先得创建目录        */          public void LoadToSdcard(final String strUrl, final String path,               final String fileName) throws Exception {           if (FileExist("test/missyou.mp3")) {               Toast.makeText(context, R.string.filehaved, Toast.LENGTH_LONG)                       .show();           } else {                  View view = LayoutInflater.from(context).inflate(                       R.layout.download_dialog_xml, null);               pb = (ProgressBar) view.findViewById(R.id.down_pb);               tv_percent = (TextView) view.findViewById(R.id.pro_int);               dialog = AlertDialogUtil(view, context,                       context.getString(R.string.waittingloading));               new Thread(new Runnable() {                   public void run() {                       try {                           URL url = new URL(strUrl);                           HttpURLConnection conection = (HttpURLConnection) url                                   .openConnection();                           tatalsize = conection.getContentLength();                           InputStream input = conection.getInputStream();                           File file = null;                           OutputStream outputstream = null;                           CreateFileSdDir(path);                           file = CreateFile(path + fileName);                           outputstream = new FileOutputStream(file);                           byte data[] = new byte[1024 * 4];                           sentMassage(0);                           while (true) {                               int temp = input.read(data);                               if (temp == -1) {                                   break;                               }                               outputstream.write(data, 0, temp);                               downLoadFileSize += temp;                               sentMassage(1);                           }                           sentMassage(2);                           outputstream.flush();                           outputstream.close();                           input.close();                       } catch (Exception e) {                           Toast.makeText(context, R.string.app_falls,                                   Toast.LENGTH_LONG).show();                           e.printStackTrace();                       }                   }                  }).start();           }       }          /**        * 返回一个dialog        *         * @param view        * @param context        * @param string        * @return        */       private Dialog AlertDialogUtil(View view, Context context, String string) {           AlertDialog.Builder builder = new AlertDialog.Builder(context);           builder.setTitle(string);           builder.setIcon(R.drawable.icon);           builder.setView(view);           builder.create();           return builder.show();       }          /**        * handler 处理动作        */       Handler handler = new Handler() {           public void handleMessage(Message msg) {               super.handleMessage(msg);               switch (msg.what) {               case 0:                   pb.setMax(tatalsize);                   break;               case 1:                   pb.setProgress(downLoadFileSize);                   int result = downLoadFileSize * 100 / tatalsize;                   tv_percent.setText(context.getString(R.string.fileload)                           + result + "%");                   break;               case 2:                   dialog.dismiss();                   Toast.makeText(context, R.string.loagsucces, Toast.LENGTH_LONG)                           .show();                   Log.v("test", "--->>>  " + "end");                   break;               }              }       };          /**        *         * @param flag        *            消息类型        */          public void sentMassage(int flag) {           Message msg = new Message();           msg.what = flag;           handler.sendMessage(msg);       }      }   

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wwydpp.html