展会信息港展会大全

安卓怎样从tomcat上下载MP3(带进度条)
来源:互联网   发布日期:2015-09-28 16:22:09   浏览:2545次  

导读: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.Vie......

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

}

}

<?xml version="1.0" encoding="utf-8"?>

<resources>

<string name="hello">Hello World, MainActivity!</string>

<string name="app_name">LoadDownFile</string>

<string name="loagsucces">下载成功</string>

<string name="app_falls">下载失败</string>

<string name="waittingloading">正在下载请稍后</string>

<string name="filehaved">文件已存在</string>

<string name="fileload">文件下载</string>

</resources>

赞助本站

人工智能实验室

相关热词: tomcat 下载MP3 进度条

AiLab云推荐
展开

热门栏目HotCates

Copyright © 2010-2024 AiLab Team. 人工智能实验室 版权所有    关于我们 | 联系我们 | 广告服务 | 公司动态 | 免责声明 | 隐私条款 | 工作机会 | 展会港