Android 安卓:一个接一个下载视频

Android 安卓:一个接一个下载视频,android,video,Android,Video,我使用下载管理器在Android设备上下载视频。问题是我想下载多个视频(一个接一个) 我花了一整天的时间研究这个问题,但是有一些关于下载单个视频的解决方案 下面,我在这里发现了相同的问题,但没有答案: 如果你们知道怎么做,请告诉我 提前谢谢你 我真的想说谢谢你的评论。经过几个小时的研究,我认为使用BroadcastReceiver解决这个问题应该是最好的解决方案。下面,我想为和我有同样问题的人分享答案 我创建了一个静态函数来处理下载: public static long downloadVi

我使用下载管理器在Android设备上下载视频。问题是我想下载多个视频(一个接一个)

我花了一整天的时间研究这个问题,但是有一些关于下载单个视频的解决方案

下面,我在这里发现了相同的问题,但没有答案:

如果你们知道怎么做,请告诉我


提前谢谢你

我真的想说谢谢你的评论。经过几个小时的研究,我认为使用BroadcastReceiver解决这个问题应该是最好的解决方案。下面,我想为和我有同样问题的人分享答案

我创建了一个静态函数来处理下载:

public static long downloadVideo(String myHTTPUrl, Context context) {
    DownloadManager.Request request = new DownloadManager.Request(Uri.parse(myHTTPUrl));
    request.setTitle("File download.");
    request.setDescription("File is being download...");

    request.allowScanningByMediaScanner();
    request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED);

    final String nameOfFile = URLUtil.guessFileName(myHTTPUrl, null,
            MimeTypeMap.getFileExtensionFromUrl(myHTTPUrl));
    request.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, nameOfFile);

    DownloadManager manager = (DownloadManager) context.getSystemService(Context.DOWNLOAD_SERVICE);
    return manager.enqueue(request);
}
当我单击“下载”按钮时,它将运行以下代码:

long downloadReference = DownloadHandler.downloadVideo(videoUrls[0], v.getContext());
DownloadReceiver downloadReceiver = new DownloadReceiver(0, videoUrls, downloadReference);

//set filter to only when download is complete and register broadcast receiver
IntentFilter filter = new IntentFilter(DownloadManager.ACTION_DOWNLOAD_COMPLETE);
registerReceiver(downloadReceiver, filter);
这是最后一步,广播接收器:

public class DownloadReceiver extends BroadcastReceiver {

private int videoIndex;
private String[] videoUrls;

private long downloadReference;

public DownloadReceiver(int videoIndex, String[] videoUrls, long downloadReference) {
    this.videoIndex = videoIndex;
    this.videoUrls = videoUrls;
    this.downloadReference = downloadReference;
}

@Override
public void onReceive(Context context, Intent intent) {
    long referenceId = intent.getLongExtra(DownloadManager.EXTRA_DOWNLOAD_ID, -1);
    if(downloadReference == referenceId){
        ++videoIndex;
        if (videoIndex < videoUrls.length) {
            downloadReference = DownloadHandler.downloadVideo(videoUrls[videoIndex], context);
            DownloadReceiver downloadReceiver = new DownloadReceiver(videoIndex, videoUrls, downloadReference);

            IntentFilter intentFilter = new IntentFilter(DownloadManager.ACTION_DOWNLOAD_COMPLETE);
            context.registerReceiver(downloadReceiver, intentFilter);
            context.unregisterReceiver(this);
        }
    }
}
public类DownloadReceiver扩展了BroadcastReceiver{
私有int视频索引;
私有字符串[]视频URL;
私人长下载参考;
公共下载接收器(int videoIndex,String[]videourl,long downloadReference){
this.videoIndex=videoIndex;
this.videoUrls=videoUrls;
this.downloadReference=downloadReference;
}
@凌驾
公共void onReceive(上下文、意图){
long referenceId=intent.getLongExtra(DownloadManager.EXTRA\u DOWNLOAD\u ID,-1);
if(downloadReference==referenceId){
++视频索引;
if(videoIndex

}

到目前为止您尝试了什么?我使用BroadcastReceiver了解下载何时完成。然后,我开始下订单,但我认为这不是一个好的解决方案,而是以一种更简单的方式做事。我似乎没有什么好办法。检查这个库。