项目代码链接:https://github.com/baiyazi/AndroidDownloadUtils,可自取。
1. 打包对前面几篇博客中介绍的下载内容,这里打算打包为aar包。这里来进行简单的记录下,因为在项目Build的时候,其实也就默认生成了这个包。切换项目视图为project,然后使用build->rebuild project进行编译一下即可。当然,需要确保你创建的是com.android.library。如下图所示:
2. 使用新建一个项目,将aar包拷贝到libs目录下:
然后在gradle文件中添加:
implementation files('libs/mylibrary-debug.aar')
或者可以通过图形化的方式添加,File->Project Strucutre->Dependencies->app,然后点击+号,进行添加依赖,选择Jar Dependency,然后输入libs/mylibrary-debug.aar即可:
其实效果是一样的。
然后拷贝布局文件代码activity_main.xml:
对应的Activity的代码MainActivity和前面博客的保持一致:
public class MainActivity extends AppCompatActivity implements View.OnClickListener{
private Button start, pause;
private ProgressBar progressbar;
private WMultiThreadBreakpointDownloader downloader;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
start = findViewById(R.id.start);
pause = findViewById(R.id.pause);
progressbar = findViewById(R.id.progressbar);
progressbar.setMax(100);
downloader = new WMultiThreadBreakpointDownloader.Builder(this)
.url("http://vjs.zencdn.net/v/oceans.mp4")
.suffix(WFileSuffix.MP4)
.cacheDirName("MP4")
.build();
start.setOnClickListener(this);
pause.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
downloader.setIsPause(true);
}
});
}
@Override
public void onClick(View v) {
downloader.download(new WDownLoadListenerImpl() {
@Override
public void onSuccess(File file) {
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(MainActivity.this, "Successful!", Toast.LENGTH_SHORT).show();
}
});
}
@Override
public void onError(String msg) {
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(MainActivity.this, "Error!", Toast.LENGTH_SHORT).show();
}
});
}
@Override
public void onProgress(long currentPos, long totalLength) {
runOnUiThread(new Runnable() {
@Override
public void run() {
int val = (int) (currentPos * 1.0 / totalLength * 100);
progressbar.setProgress(val);
}
});
}
});
}
}
然后我们需要添加权限:
需要注意,访问网络不是危险权限,不需要进行动态权限申请。
因为为保证用户数据和设备的安全,Google针对下一代 Android 系统(Android P) 的应用程序,将要求默认使用加密连接,也即是HTTPS连接。这里我们使用的链接是http://vjs.zencdn.net/v/oceans.mp4,所以是不能通过的。
需要配置一下支持HTTP连接。即在res下创建xml/network_security_config.xml文件:
文件内容:
最后在清单文件中,配置:
android:networkSecurityConfig="@xml/network_security_config"3. 结果
在SD卡中也可以看到这个下载的文件:
下载链接:mylibrary-debug.aar



