package com.yaoxiaowen.download.sample; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.text.TextUtils; import android.util.Log; import android.view.View; import android.widget.Button; import android.widget.ProgressBar; import android.widget.TextView; import com.yaoxiaowen.download.DownloadConstant; import com.yaoxiaowen.download.FileInfo; import com.yaoxiaowen.download.DownloadHelper; import com.yaoxiaowen.download.sample.utils.Utils_Parse; import com.yaoxiaowen.download.sample.utils.Utils_Toast; import com.yaoxiaowen.download.utils.DebugUtils; import java.io.File; /** * @author www.yaoxiaowen.com * time: 2017/12/20 20:23 * @since 1.0.0 */ public class SimpleMainActivity extends AppCompatActivity { public static final String TAG = "weny SimpleMainActivity"; //淘宝 app 下载地址 private static final String url = "http://ucan.25pp.com/Wandoujia_web_seo_baidu_homepage.apk"; private File mFile; private static final String BC_ACTION = "download_helper_first_action"; private String appName = "豌豆荚.apk"; private static final String START = "开始"; private static final String PAUST = "暂停"; private TextView textView; private ProgressBar progressBar; private Button btn; private Button deleteBtn; private DownloadHelper mDownloadHelper; private BroadcastReceiver receiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { if (null != intent) { switch (intent.getAction()) { case BC_ACTION:{ /** * 我们接收到的FileInfo对象,包含了下载文件的各种信息。 * 然后我们就可以做我们想做的事情了。 * 比如更新进度条,改变状态等。 */ FileInfo fileInfo = (FileInfo) intent.getSerializableExtra(DownloadConstant.EXTRA_INTENT_DOWNLOAD); float pro = (float) (fileInfo.getDownloadLocation()*1.0/ fileInfo.getSize()); int progress = (int)(pro*100); float downSize = fileInfo.getDownloadLocation() / 1024.0f / 1024; float totalSize = fileInfo.getSize() / 1024.0f / 1024; StringBuilder sb = new StringBuilder(); sb.append(appName); sb.append(" 当前状态: " + DebugUtils.getStatusDesc(fileInfo.getDownloadStatus()) + " \t "); sb.append(Utils_Parse.getTwoDecimalsStr(downSize) + "M/" + Utils_Parse.getTwoDecimalsStr(totalSize) + "M\n" + "( " + progress + "% )"); textView.setText(sb.toString()); progressBar.setProgress(progress); } break; } } } }; // private BroadcastReceiver receiver = new BroadcastReceiver() { // @Override // public void onReceive(Context context, Intent intent) { // if (null != intent) { // switch (intent.getAction()) { // case BC_ACTION:{ // /** // * 我们接收到的FileInfo对象,包含了下载文件的各种信息。 // * 然后我们就可以做我们想做的事情了。 // * 比如更新进度条,改变状态等。 // */ // com.yaoxiaowen.download.FileInfo fileInfo = // (FileInfo) intent.getSerializableExtra( // com.yaoxiaowen.download.config.InnerConstant.EXTRA_INTENT_DOWNLOAD); // // } // break; // default: // } // } // }//end of "onReceive(..." // }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_simple_main); initData(); initView(); initListener(); } private void initData(){ mFile = new File(getDir(), appName); mDownloadHelper = DownloadHelper.getInstance(); IntentFilter filter = new IntentFilter(); filter.addAction(BC_ACTION); registerReceiver(receiver, filter); } private void initView(){ textView = (TextView) findViewById(R.id.title); progressBar = (ProgressBar) findViewById(R.id.progressBar); btn = (Button) findViewById(R.id.btn); deleteBtn = (Button) findViewById(R.id.deleteBtn); btn.setText(START); } private void initListener(){ btn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Log.i(TAG, "开始下载"); String content = btn.getText().toString().trim(); if (TextUtils.equals(content, START)){ downFirstApk(); }else if (TextUtils.equals(content, PAUST)){ pauseFirstApk(); } } }); deleteBtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { if (mFile.exists()){ boolean result = mFile.delete(); String resultStr = result ? "成功" : "失败"; Utils_Toast.show(getBaseContext(), "删除 mFile " + resultStr); } else { Utils_Toast.show(getBaseContext(), "不存在 mFile "); } } }); } private File getDir(){ File dir = new File(getExternalCacheDir(), "download"); if (!dir.exists()){ dir.mkdirs(); } return dir; } private void downFirstApk(){ DownloadHelper.getInstance().addTask(url, mFile, BC_ACTION).submit(SimpleMainActivity.this); } private void pauseFirstApk(){ DownloadHelper.getInstance().pauseTask(url, mFile, BC_ACTION).submit(SimpleMainActivity.this); } @Override protected void onDestroy() { super.onDestroy(); unregisterReceiver(receiver); } private void updateTextview(TextView textView, ProgressBar progressBar, FileInfo fileInfo, String fileName){ float pro = (float) (fileInfo.getDownloadLocation()*1.0/ fileInfo.getSize()); int progress = (int)(pro*100); float downSize = fileInfo.getDownloadLocation() / 1024.0f / 1024; float totalSize = fileInfo.getSize() / 1024.0f / 1024; StringBuilder sb = new StringBuilder(); sb.append(fileName); sb.append(" 当前状态: " + DebugUtils.getStatusDesc(fileInfo.getDownloadStatus()) + " \t "); sb.append(Utils_Parse.getTwoDecimalsStr(downSize) + "M/" + Utils_Parse.getTwoDecimalsStr(totalSize) + "M\n" + "( " + progress + "% )"); textView.setText(sb.toString()); progressBar.setProgress(progress); } }