android 手机存储空间 进度条,Android 下载文件并显示进度条

OK,上一篇文章讲了上传文件到服务端,并显示进度条

那么这边文章主要讲下载文件并显示进度条。

由于简单,所以只上传代码.还是需要用到HttpURLConnection 类,当然你也需要定义一个handle 去接收完成或失败的消息

首先先定义变量

private ProgressBar mPgBar;

private boolean interceptFlag = false;

然后开始编写一个Task 类 去实现下载功能。

class DownloadTask extends AsyncTask{

private String savePath;

private String uri;

public DownloadTask(String savePath,String uri){

this.savePath = savePath;

this.uri = uri;

}

@Override

protected Void doInBackground(Object... objects) {

String saveFileName ="download."+uri.substring(uri.lastIndexOf(".")-1,uri.length());

try {

URL url = new URL(uri);

HttpURLConnection conn = (HttpURLConnection)url.openConnection();

conn.connect();

int length = conn.getContentLength();

InputStream is = conn.getInputStream();

//判断是否挂载了SD卡

String storageState = Environment.getExternalStorageState();

if(storageState.equals(Environment.MEDIA_MOUNTED)){

File file = new File(savePath);

if(!file.exists()){

file.mkdirs();

}

saveFileName = savePath + saveFileName;

}

File file = new File(savePath);

if(!file.exists()){

file.mkdirs();

}

File mDownloadFile = new File(saveFileName);

FileOutputStream fos = new FileOutputStream(mDownloadFile);

int count = 0;

byte buf[] = new byte[1024];

do{

int numread = is.read(buf);

count += numread;

publishProgress((int)(((float)count / length) * 100));

//更新进度

mHandler.sendEmptyMessage(DOWN_UPDATE);

if(numread <= 0){

//下载完成通知安装

mHandler.sendEmptyMessage(DOWN_OVER);

break;

}

fos.write(buf,0,numread);

}while(!interceptFlag);//点击取消就停止下载.

fos.close();

is.close();

} catch (MalformedURLException e) {

e.printStackTrace();

} catch(IOException e){

e.printStackTrace();

}

return null;

}

@Override

protected void onProgressUpdate(Integer... progress) {

mPgBar.setProgress(progress[0]);

}

}

那么到这里就完成下载的功能了。

小伙伴可以尝试下载看看。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器
好的,针对你的问题,我会为你提供一些参考。 1. Android 进度条的基本使用 可以通过 ProgressBar 控件来实现 Android 进度条的功能。具体来说,你需要在布局文件中添加 ProgressBar 控件,并在相关的代码中控制进度条的进度。 以下是一个简单的示例代码: ```xml <ProgressBar android:id="@+id/progress_bar" android:layout_width="match_parent" android:layout_height="wrap_content" android:progress="50" android:max="100"/> ``` 在代码中,你可以通过调用 `setProgress()` 方法来设置进度条的进度值,如下所示: ```java ProgressBar progressBar = findViewById(R.id.progress_bar); progressBar.setProgress(75); ``` 2. Android 手机存储空间进度条的实现 如果你想要实现 Android 手机存储空间进度条的功能,可以通过以下步骤来操作: 1. 获取手机存储空间的总容量和已使用容量。 可以通过调用 `Environment.getExternalStorageDirectory()` 方法来获取手机存储空间的根目录,然后通过调用 `getTotalSpace()` 和 `getUsableSpace()` 方法来获取总容量和已使用容量。 ```java File path = Environment.getExternalStorageDirectory(); long totalSpace = path.getTotalSpace(); long usedSpace = totalSpace - path.getUsableSpace(); ``` 2. 根据总容量和已使用容量计算进度条的进度值。 可以通过以下代码来计算进度值: ```java int progress = (int) ((usedSpace * 100) / totalSpace); ``` 3. 在代码中设置进度条的进度值。 最后,你可以通过调用 `setProgress()` 方法来设置进度条的进度值。 ```java ProgressBar progressBar = findViewById(R.id.progress_bar); progressBar.setProgress(progress); ``` 以上就是实现 Android 手机存储空间进度条的基本步骤,你可以根据自己的需求进行进一步的修改和优化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值