RxDownload下载

来源:互联网 发布:淘宝最大股东是日本人 编辑:程序博客网 时间:2024/06/10 21:38

public class MainActivity extends AppCompatActivity implements NewsView, View.OnClickListener {    private List<String> imgList = new ArrayList<>();    private Banner mBanner;    private ProgressBar mPb;    /**     * 下载进度 0%     */    private TextView mPrecent;    private RecyclerView mRv;    /**     * 暂停     */    private Button mBt;    private int downloadSizes;    private Subscription subscribe;    private Handler handler = new Handler(){        @Override        public void handleMessage(Message msg) {            super.handleMessage(msg);            DownloadStatus downloadStatus = (DownloadStatus) msg.obj;            long downloadSize = downloadStatus.getDownloadSize();            long totalSize = downloadStatus.getTotalSize();            String percent = downloadStatus.getPercent();            int t = (int) (downloadSize / (totalSize / 100));            if(downloadSize<=totalSize){                mPb.setProgress(t);                mPrecent.setText("下载进度 "+percent);            }            if(downloadSize == totalSize){                mPb.setProgress(0);                mPrecent.setText("下载进度 0%");            }        }    };    private UserDao userDao;    private VideoView vv;    private MediaController mediaco;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        initView();        DaoMaster.DevOpenHelper devOpenHelper = new DaoMaster.DevOpenHelper(MyApp.getContext(), "table", null);        DaoMaster daoMaster = new DaoMaster(devOpenHelper.getWritableDatabase());        DaoSession daoSession = daoMaster.newSession();        userDao = daoSession.getUserDao();        NewsPresenter newsPresenter = new NewsPresenter(this, this);        newsPresenter.getPresenter();    }    private void initView() {        mBanner = (Banner) findViewById(R.id.banner);        mPb = (ProgressBar) findViewById(R.id.pb);        mPrecent = (TextView) findViewById(R.id.precent);        mRv = (RecyclerView) findViewById(R.id.rv);        mRv.setLayoutManager(new LinearLayoutManager(this));        mRv.addItemDecoration(new DividerItemDecoration(this, DividerItemDecoration.VERTICAL));        mBt = (Button) findViewById(R.id.bt);        mBt.setOnClickListener(this);        vv = (VideoView) findViewById(R.id.vv);    }    @Override    public void getNewsView(NewsBean newsBean) {        final List<NewsBean.DataBean> data = newsBean.getData();        for (int i = 0; i < data.size(); i++) {            String image_url = data.get(i).getImage_url();            imgList.add(image_url);        }        mBanner.isAutoPlay(true);        mBanner.setBannerStyle(BannerConfig.CIRCLE_INDICATOR);        mBanner.setImages(imgList);        mBanner.setImageLoader(new GlideImageLoader());        mBanner.start();        final MyAdapter myAdapter = new MyAdapter(this, data);        mRv.setAdapter(myAdapter);        myAdapter.setOnItemClickListener(new MyAdapter.OnItemClickListener() {            @Override            public void OnItemClick(int position) {                final String title = data.get(position).getTitle();                String vedio_url = data.get(position).getVedio_url();                subscribe = RxDownload.getInstance()                        .maxThread(5)                        .maxRetryCount(10)                        .download(vedio_url, title + ".mp4", null)                        .subscribeOn(Schedulers.io())                        .observeOn(AndroidSchedulers.mainThread())                        .subscribe(new Subscriber<DownloadStatus>() {                            @Override                            public void onCompleted() {                                final File file = new File("/mnt/sdcard/Download/"+title+".mp4");                                mediaco=new MediaController(MainActivity.this);                                if(file.exists()){                                    //VideoView与MediaController进行关联                                    vv.setVideoPath(file.getAbsolutePath());                                    vv.setMediaController(mediaco);                                    mediaco.setMediaPlayer(vv);                                    //让VideiView获取焦点                                    vv.requestFocus();                                }                            }                            @Override                            public void onError(Throwable e) {                                Log.i("tag",e.getMessage());                            }                            @Override                            public void onNext(DownloadStatus downloadStatus) {                                downloadSizes = (int) downloadStatus.getDownloadSize();                                Message message = new Message();                                message.obj = downloadStatus;                                handler.sendMessageDelayed(message, 100);                            }                        });            }            @Override            public void OnLongItemClick(int position) {                User user = new User(null, downloadSizes);                userDao.insert(user);                int percent = user.getPercent();                int precents = percent / (1000000);                Log.i("xxx",precents+"M");            }        });    }    @Override    public void onClick(View v) {        switch (v.getId()) {            case R.id.bt:                if (subscribe != null && !subscribe.isUnsubscribed()) {                    subscribe.unsubscribe();                }                break;        }    }}
原创粉丝点击