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; } }}
阅读全文
0 0
- RxDownload下载
- RXDownload实现下载apk
- 多线程下载RXdownload的使用
- RxDownload
- RxDownload-基于RxJava打造的下载工具, 支持多线程和断点续传
- 下载
- 下载
- 下载
- 下载
- 下载???
- 下载
- 下载
- 下载
- 下载
- 下载
- 下载
- 下载
- 下载
- QQ for ubuntu 16.04
- 使用ueditor插件
- 20.开源项目--分支的基本使用
- 使用Python进行任务调度(进阶篇)
- APNS推送
- RxDownload下载
- 示波器触发功能
- GLES效果
- 将对象传入方法内然后赋值成null,为什么执行完方法之后,值不是null?
- Pandas初学者代码优化指南
- 服务端异步IO配合协程浅析
- Mac OS 连内外网
- Tensorflow实战学习(三十六)【实现Bidirectional LSTM Classifier】
- android 二级列表实现购物车