RxDownload下载


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;
        }
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值