|
@@ -0,0 +1,289 @@
|
|
|
|
|
+package com.sheep.gamegroup.view.adapter;
|
|
|
|
|
+
|
|
|
|
|
+import android.content.Context;
|
|
|
|
|
+import android.view.LayoutInflater;
|
|
|
|
|
+import android.view.View;
|
|
|
|
|
+import android.view.ViewGroup;
|
|
|
|
|
+import android.widget.BaseAdapter;
|
|
|
|
|
+import android.widget.ImageView;
|
|
|
|
|
+import android.widget.TextView;
|
|
|
|
|
+import android.widget.Toast;
|
|
|
|
|
+
|
|
|
|
|
+import com.bumptech.glide.Glide;
|
|
|
|
|
+import com.sheep.gamegroup.view.customview.SProgress;
|
|
|
|
|
+import com.sheep.jiuyan.samllsheep.R;
|
|
|
|
|
+import com.sheep.jiuyan.samllsheep.SheepApp;
|
|
|
|
|
+import com.sheep.jiuyan.samllsheep.download.DownloadInfo;
|
|
|
|
|
+import com.sheep.jiuyan.samllsheep.download.DownloadManager;
|
|
|
|
|
+import com.sheep.jiuyan.samllsheep.download.DownloadState;
|
|
|
|
|
+import com.sheep.jiuyan.samllsheep.download.DownloadViewHolder;
|
|
|
|
|
+import com.sheep.jiuyan.samllsheep.utils.PackageUtil;
|
|
|
|
|
+
|
|
|
|
|
+import org.xutils.common.Callback;
|
|
|
|
|
+import org.xutils.ex.DbException;
|
|
|
|
|
+import org.xutils.x;
|
|
|
|
|
+
|
|
|
|
|
+import java.io.File;
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+/**
|
|
|
|
|
+ * Created by ljy on 2018/3/25.
|
|
|
|
|
+ */
|
|
|
|
|
+
|
|
|
|
|
+public class DownLoadTvAdp extends BaseAdapter {
|
|
|
|
|
+ private Context mContext;
|
|
|
|
|
+ private final LayoutInflater mInflater;
|
|
|
|
|
+ private DownloadManager downloadManager;
|
|
|
|
|
+
|
|
|
|
|
+ public DownLoadTvAdp(Context mContext) {
|
|
|
|
|
+ this.mContext = mContext;
|
|
|
|
|
+ this.mInflater = LayoutInflater.from(mContext);
|
|
|
|
|
+ downloadManager = DownloadManager.getInstance();
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ @Override
|
|
|
|
|
+ public int getCount() {
|
|
|
|
|
+ if (downloadManager == null)
|
|
|
|
|
+ return 0;
|
|
|
|
|
+ return downloadManager.getDownloadListCount();
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ @Override
|
|
|
|
|
+ public Object getItem(int i) {
|
|
|
|
|
+ return downloadManager.getDownloadInfo(i);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ @Override
|
|
|
|
|
+ public long getItemId(int i) {
|
|
|
|
|
+ return i;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ @Override
|
|
|
|
|
+ public View getView(int i, View view, ViewGroup viewGroup) {
|
|
|
|
|
+ DownloadItemViewHolder holder = null;
|
|
|
|
|
+ DownloadInfo downloadInfo = downloadManager.getDownloadInfo(i);
|
|
|
|
|
+ if (view == null) {
|
|
|
|
|
+ view = mInflater.inflate(R.layout.down_item, null);
|
|
|
|
|
+ holder = new DownloadItemViewHolder(view, downloadInfo);
|
|
|
|
|
+ view.setTag(holder);
|
|
|
|
|
+ } else {
|
|
|
|
|
+ holder = (DownloadItemViewHolder) view.getTag();
|
|
|
|
|
+ holder.update(downloadInfo);
|
|
|
|
|
+ }
|
|
|
|
|
+ holder.refreshkem();
|
|
|
|
|
+ if (downloadInfo.getState().value() < DownloadState.FINISHED.value()) {
|
|
|
|
|
+ try {
|
|
|
|
|
+ downloadManager.startDownload(
|
|
|
|
|
+ downloadInfo.getPkgName(),
|
|
|
|
|
+ downloadInfo.getUrl(),
|
|
|
|
|
+ downloadInfo.getLabel(),
|
|
|
|
|
+ downloadInfo.getFileSavePath(), "",
|
|
|
|
|
+ downloadInfo.isAutoResume(),
|
|
|
|
|
+ downloadInfo.isAutoRename(),
|
|
|
|
|
+ holder);
|
|
|
|
|
+ } catch (DbException ex) {
|
|
|
|
|
+ Toast.makeText(x.app(), "添加下载失败", Toast.LENGTH_LONG).show();
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ return view;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ class DownloadItemViewHolder extends DownloadViewHolder implements View.OnClickListener {
|
|
|
|
|
+
|
|
|
|
|
+ private android.widget.ImageView ImageView;
|
|
|
|
|
+ private TextView tv_game_name;
|
|
|
|
|
+ private ImageView iv_state;
|
|
|
|
|
+ private ImageView iv_remove;
|
|
|
|
|
+ private SProgress pb_download;
|
|
|
|
|
+ private TextView tv_prorgess;
|
|
|
|
|
+ private View ll_install;
|
|
|
|
|
+
|
|
|
|
|
+ public DownloadItemViewHolder(View view, DownloadInfo downloadInfo) {
|
|
|
|
|
+ super(view, downloadInfo);
|
|
|
|
|
+ ImageView = (ImageView) view.findViewById(R.id.img_icon);
|
|
|
|
|
+ tv_game_name = (TextView) view.findViewById(R.id.tv_game_name);
|
|
|
|
|
+ iv_state = (ImageView) view.findViewById(R.id.iv_state);
|
|
|
|
|
+ pb_download = (SProgress) view.findViewById(R.id.pb_download);
|
|
|
|
|
+ iv_remove = (ImageView) view.findViewById(R.id.iv_remove);
|
|
|
|
|
+ tv_prorgess = (TextView) view.findViewById(R.id.tv_prorgess);
|
|
|
|
|
+ ll_install = view.findViewById(R.id.ll_install);
|
|
|
|
|
+ Glide.with(mContext)
|
|
|
|
|
+ .load(downloadInfo.getIcon())
|
|
|
|
|
+ .placeholder(R.drawable.icon)
|
|
|
|
|
+ .dontAnimate()
|
|
|
|
|
+ .into(ImageView);
|
|
|
|
|
+ iv_state.setOnClickListener(this);
|
|
|
|
|
+ iv_remove.setOnClickListener(this);
|
|
|
|
|
+ tv_prorgess.setOnClickListener(this);
|
|
|
|
|
+ ll_install.setOnClickListener(this);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ @Override
|
|
|
|
|
+ public void update(DownloadInfo downloadInfo) {
|
|
|
|
|
+ super.update(downloadInfo);
|
|
|
|
|
+ Glide.with(mContext)
|
|
|
|
|
+ .load(downloadInfo.getIcon())
|
|
|
|
|
+ .placeholder(R.drawable.icon)
|
|
|
|
|
+ .dontAnimate()
|
|
|
|
|
+ .into(ImageView);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ @Override
|
|
|
|
|
+ public void onWaiting() {
|
|
|
|
|
+ refresh();
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ @Override
|
|
|
|
|
+ public void onStarted() {
|
|
|
|
|
+ refresh();
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ @Override
|
|
|
|
|
+ public void onLoading(long total, long current) {
|
|
|
|
|
+ refresh();
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ @Override
|
|
|
|
|
+ public void onSuccess(File result) {
|
|
|
|
|
+ refresh();
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ @Override
|
|
|
|
|
+ public void onError(Throwable ex, boolean isOnCallback) {
|
|
|
|
|
+ refresh();
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ @Override
|
|
|
|
|
+ public void onCancelled(Callback.CancelledException cex) {
|
|
|
|
|
+ refresh();
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ public void refresh() {
|
|
|
|
|
+ tv_game_name.setText(downloadInfo.getLabel());
|
|
|
|
|
+ pb_download.setProgress(downloadInfo.getProgress());
|
|
|
|
|
+ tv_prorgess.setText(downloadInfo.getProgress() + "%");
|
|
|
|
|
+ DownloadState state = downloadInfo.getState();
|
|
|
|
|
+ switch (state) {
|
|
|
|
|
+ case WAITING:
|
|
|
|
|
+ case STARTED:
|
|
|
|
|
+ iv_state.setImageResource(R.drawable.icon_stop);
|
|
|
|
|
+ break;
|
|
|
|
|
+ case ERROR:
|
|
|
|
|
+ case STOPPED:
|
|
|
|
|
+ iv_state.setImageResource(R.drawable.icon_begin);
|
|
|
|
|
+ break;
|
|
|
|
|
+ case FINISHED:
|
|
|
|
|
+ iv_state.setVisibility(View.GONE);
|
|
|
|
|
+ if (PackageUtil.isAppInstalled(mContext, getDownloadInfo().getPkgName())) {
|
|
|
|
|
+ tv_prorgess.setText("已安装");
|
|
|
|
|
+ } else {
|
|
|
|
|
+ tv_prorgess.setText("安 装");
|
|
|
|
|
+ PackageUtil.installApk(mContext, getDownloadInfo().getFileSavePath());
|
|
|
|
|
+ }
|
|
|
|
|
+ break;
|
|
|
|
|
+ default:
|
|
|
|
|
+ iv_state.setImageResource(R.drawable.icon_begin);
|
|
|
|
|
+ break;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ public void refreshkem() {
|
|
|
|
|
+ tv_game_name.setText(downloadInfo.getLabel());
|
|
|
|
|
+ pb_download.setProgress(downloadInfo.getProgress());
|
|
|
|
|
+ tv_prorgess.setText(downloadInfo.getProgress() + "%");
|
|
|
|
|
+ DownloadState state = downloadInfo.getState();
|
|
|
|
|
+ switch (state) {
|
|
|
|
|
+ case WAITING:
|
|
|
|
|
+ case STARTED:
|
|
|
|
|
+ iv_state.setImageResource(R.drawable.icon_stop);
|
|
|
|
|
+ break;
|
|
|
|
|
+ case ERROR:
|
|
|
|
|
+ case STOPPED:
|
|
|
|
|
+ iv_state.setImageResource(R.drawable.icon_begin);
|
|
|
|
|
+ break;
|
|
|
|
|
+ case FINISHED:
|
|
|
|
|
+ iv_state.setVisibility(View.GONE);
|
|
|
|
|
+ if (PackageUtil.isAppInstalled(mContext, getDownloadInfo().getPkgName())) {
|
|
|
|
|
+ tv_prorgess.setText("已安装");
|
|
|
|
|
+ } else {
|
|
|
|
|
+ tv_prorgess.setText("安 装");
|
|
|
|
|
+ }
|
|
|
|
|
+ break;
|
|
|
|
|
+ default:
|
|
|
|
|
+ iv_state.setImageResource(R.drawable.icon_begin);
|
|
|
|
|
+ break;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ @Override
|
|
|
|
|
+ public void onClick(View view) {
|
|
|
|
|
+ switch (view.getId()) {
|
|
|
|
|
+ case R.id.iv_state:
|
|
|
|
|
+ DownloadState state = downloadInfo.getState();
|
|
|
|
|
+ switch (state) {
|
|
|
|
|
+ case WAITING:
|
|
|
|
|
+ case STARTED:
|
|
|
|
|
+ downloadManager.stopDownload(downloadInfo);
|
|
|
|
|
+ break;
|
|
|
|
|
+ case ERROR:
|
|
|
|
|
+ case STOPPED:
|
|
|
|
|
+ try {
|
|
|
|
|
+ downloadManager.startDownload(
|
|
|
|
|
+ downloadInfo.getPkgName(),
|
|
|
|
|
+ downloadInfo.getUrl(),
|
|
|
|
|
+ downloadInfo.getLabel(),
|
|
|
|
|
+ downloadInfo.getFileSavePath(), "",
|
|
|
|
|
+ downloadInfo.isAutoResume(),
|
|
|
|
|
+ downloadInfo.isAutoRename(),
|
|
|
|
|
+ this);
|
|
|
|
|
+ } catch (DbException ex) {
|
|
|
|
|
+ Toast.makeText(x.app(), "添加下载失败", Toast.LENGTH_LONG).show();
|
|
|
|
|
+ }
|
|
|
|
|
+ break;
|
|
|
|
|
+ case FINISHED:
|
|
|
|
|
+ Toast.makeText(x.app(), "已经下载完成", Toast.LENGTH_LONG).show();
|
|
|
|
|
+ if(PackageUtil.isAppInstalled(mContext, getDownloadInfo().getPkgName())){
|
|
|
|
|
+ PackageUtil.startApp(SheepApp.mContext, getDownloadInfo().getPkgName());
|
|
|
|
|
+ }else{
|
|
|
|
|
+ PackageUtil.installApk(mContext, getDownloadInfo().getFileSavePath());
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ break;
|
|
|
|
|
+ default:
|
|
|
|
|
+ break;
|
|
|
|
|
+ }
|
|
|
|
|
+ break;
|
|
|
|
|
+ case R.id.iv_remove:
|
|
|
|
|
+ try {
|
|
|
|
|
+ downloadManager.removeDownload(downloadInfo);
|
|
|
|
|
+ File file = new File(downloadInfo.getFileSavePath());
|
|
|
|
|
+ if (file.exists()) {
|
|
|
|
|
+ file.delete();
|
|
|
|
|
+ }
|
|
|
|
|
+ notifyDataSetChanged();
|
|
|
|
|
+ refresh();
|
|
|
|
|
+ } catch (DbException e) {
|
|
|
|
|
+ Toast.makeText(x.app(), "移除任务失败", Toast.LENGTH_LONG).show();
|
|
|
|
|
+ }
|
|
|
|
|
+ break;
|
|
|
|
|
+
|
|
|
|
|
+ case R.id.tv_prorgess:
|
|
|
|
|
+ case R.id.ll_install:
|
|
|
|
|
+ DownloadState states = downloadInfo.getState();
|
|
|
|
|
+ switch (states) {
|
|
|
|
|
+ case FINISHED:
|
|
|
|
|
+ if (!PackageUtil.isAppInstalled(mContext, getDownloadInfo().getPkgName())) {
|
|
|
|
|
+ PackageUtil.installApk(mContext, getDownloadInfo().getFileSavePath());
|
|
|
|
|
+ }else{
|
|
|
|
|
+ PackageUtil.startApp(SheepApp.mContext, getDownloadInfo().getPkgName());
|
|
|
|
|
+ }
|
|
|
|
|
+ break;
|
|
|
|
|
+ }
|
|
|
|
|
+ break;
|
|
|
|
|
+
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+}
|