【问题标题】:How to play My video once downloaded? [duplicate]下载后如何播放我的视频? [复制]
【发布时间】:2018-02-09 02:42:26
【问题描述】:

我已设法将我的视频下载到设备上,但无法再次访问它以在我的应用程序上播放它。我正在使用生成的 uri 将我的视频引用回 videoView,但是在

处生成的 uri

uri=downloadManager.getUriForDownloadedFile(reference);根据我的日志消息为空。

我做错了什么?

public void saveLocal(View v){

    downloadManager= (DownloadManager) getSystemService(Context.DOWNLOAD_SERVICE);
    String url= "http://adme360.otscom.net/tim10.mp4";
    uris= Uri.parse(url);
    DownloadManager.Request request= new DownloadManager.Request(uris);
    request.setNotificationVisibility(Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED);
    Long reference=downloadManager.enqueue(request);
    Toast.makeText(this,""+reference,Toast.LENGTH_LONG);



    uri= downloadManager.getUriForDownloadedFile(reference);

    Log.d("REFERENCE", ""+uri);
}
public void playLocal(View v){
    video.setVideoURI(uri);
    video.start();

}

【问题讨论】:

标签: java android android-studio


【解决方案1】:

下载异步关闭。该视频在另一个线程上下载。您需要注册一个广播接收器以在下载完成时获取回调。 Quoting from answer from this question

下载完成时下载管理器发送的广播意图操作,因此您需要在下载完成时注册接收器:

注册接收者

registerReceiver(onComplete, newIntentFilter(DownloadManager.ACTION_DOWNLOAD_COMPLETE));

和一个 BroadcastReciever 处理程序

BroadcastReceiver onComplete=new BroadcastReceiver() {
public void onReceive(Context ctxt, Intent intent) {
    // your code
    }
};`

【讨论】:

  • 您的回答有道理,但对我不起作用。我要做的是下载文件,找到它唯一的 Long 引用,然后尝试使用 find Uri 播放视频。我的 Uri 值返回 null。我想知道为什么,因为我的下载非常成功。
  • 你需要在broadcaseReciever的onReceive中编写该代码
  • 是的。我试过了。有用。你的权利,视频下载发生在一个单独的线程中。
猜你喜欢
  • 2018-03-21
  • 2011-12-14
  • 1970-01-01
  • 1970-01-01
  • 2019-02-22
  • 2017-04-18
  • 2014-08-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多