如何从像vimeo应用程序这样的后台(Android)url下载视频

如何从像vimeo应用程序这样的后台(Android)url下载视频,android,android-layout,android-studio,android-download-manager,Android,Android Layout,Android Studio,Android Download Manager,我正在开发一个视频流应用程序,但我一直在Android应用程序中下载视频,我想像vimeo应用程序一样在后台下载视频,在vimeo应用程序中如果你想下载视频,它会在后台的另一个屏幕(下载屏幕)中开始视频下载,如果你进入下载屏幕,它已经开始视频下载,还有一件事是,如果你遍历整个应用程序,它仍然在下载屏幕的后台下载视频,当你来到下载屏幕时,它会显示更新的下载进度 1) 在vimeo中下载视频 2) 下载屏幕 请给我下载管理器的建议此代码用于保存到SD卡中 package com.Video.ALL

我正在开发一个视频流应用程序,但我一直在Android应用程序中下载视频,我想像vimeo应用程序一样在后台下载视频,在vimeo应用程序中如果你想下载视频,它会在后台的另一个屏幕(下载屏幕)中开始视频下载,如果你进入下载屏幕,它已经开始视频下载,还有一件事是,如果你遍历整个应用程序,它仍然在下载屏幕的后台下载视频,当你来到下载屏幕时,它会显示更新的下载进度

1) 在vimeo中下载视频

2) 下载屏幕


请给我下载管理器的建议

此代码用于保存到SD卡中

package com.Video.ALLTestProject;
import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import android.content.Intent;
import android.os.AsyncTask;
import android.os.Environment;
import android.util.Log;

public class VideoSaveSDCARD extends Activity {

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        ProgressBack PB = new ProgressBack();
        PB.execute("");
    }

    class ProgressBack extends AsyncTask < String, String, String > {
        ProgressDialog PD;
        @Override
        protected void onPreExecute() {
            PD = ProgressDialog.show(LoginPage.this, null, "Please Wait ...", true);
            PD.setCancelable(true);
        }
        @Override
        protected void doInBackground(String...arg0) {
            DownloadFile("http://beta-vidizmo.com/hilton.mp4", "Sample.mp4");
        }
        protected void onPostExecute(Boolean result) {
            PD.dismiss();
        }
    }
}
package com.Video.ALLTestProject;
导入java.io.File;
导入java.io.FileOutputStream;
导入java.io.InputStream;
导入java.net.HttpURLConnection;
导入java.net.URL;
导入android.content.Intent;
导入android.os.AsyncTask;
导入android.os.Environment;
导入android.util.Log;
公共类VideoSavesCard扩展活动{
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
ProgressBack PB=新的ProgressBack();
PB.执行(“”);
}
类ProgressBack扩展AsyncTask{
进展性帕金森病;
@凌驾
受保护的void onPreExecute(){
PD=ProgressDialog.show(LoginPage.this,null,“请稍候…”,true);
PD.可设置可取消(真);
}
@凌驾
受保护的void doInBackground(字符串…arg0){
下载文件(“http://beta-vidizmo.com/hilton.mp4“,“Sample.mp4”);
}
受保护的void onPostExecute(布尔结果){
PD.解散();
}
}
}

<> P>此线程中的下载系统的底层架构目前处于开放源码程序的中间。如果你能等几个星期,你就可以使用它了。如果没有,还有很多其他开源的“下载”系统,例如:

最终,所有这些都不能满足Vimeo应用程序的确切需求,因此我们决定编写自己的应用程序。我将尝试在答案可用时更新它。

1)下载管理器

Android下载管理器在Android 2.3中作为一项服务引入,以优化长时间运行下载的处理

下载管理器处理HTTP连接并监视连接更改。使用下载是一种很好的做法

在大多数情况下,特别是在用户会话之间可能在后台继续下载的情况下

此类的实例应通过传递下载服务通过getSystemService(String)获得

通过此API请求下载的应用程序应注册一个广播接收器,以便在用户在通知中或从下载UI中单击正在运行的下载时适当处理所单击的操作通知

2)在前台运行服务

前台服务是一种被认为是用户主动意识到的服务,因此在内存不足时不是系统要杀死的候选服务。前台服务必须为状态栏提供通知,该状态栏位于“正在进行”标题下,这意味着除非服务停止或从前台删除,否则无法取消通知

例如,从服务下载视频应设置为在前台运行,因为用户明确知道其操作。状态栏中的通知可能指示当前下载,并允许用户启动与下载过程交互的活动

要请求您的服务在前台运行,请调用startForeground()。此方法采用两个参数:唯一标识通知的整数和状态栏的通知

例如:

Notification notification = new Notification(R.drawable.icon,     getText(R.string.ticker_text),
    System.currentTimeMillis());
Intent notificationIntent = new Intent(this, ExampleActivity.class);
PendingIntent pendingIntent = PendingIntent.getActivity(this, 0,     notificationIntent, 0);
notification.setLatestEventInfo(this, getText(R.string.notification_title),
    getText(R.string.notification_message), pendingIntent);
startForeground(ONGOING_NOTIFICATION_ID, notification);

要从前台删除服务,请调用stopForeground()。此方法采用布尔值,指示是否也删除状态栏通知。此方法不会停止服务。但是,如果您停止服务

请发布您尝试过的代码以及其中的问题。不要期望有人为你写代码。。。转到链接,我想这可以解决您的问题。谢谢您的回复,但您的链接不是ActhveLo凯文,您提到Vimeo应用程序处于开放源代码过程的中间,所以我想知道现在它是否在开放源码中可用?