|
|
@@ -21,30 +21,36 @@ import android.util.Log;
|
|
|
import android.view.View;
|
|
|
import android.widget.TextView;
|
|
|
|
|
|
+import androidx.annotation.NonNull;
|
|
|
+import androidx.annotation.Nullable;
|
|
|
import androidx.appcompat.app.AppCompatActivity;
|
|
|
-import androidx.core.content.FileProvider;
|
|
|
|
|
|
import com.blankj.utilcode.constant.PermissionConstants;
|
|
|
import com.blankj.utilcode.util.AppUtils;
|
|
|
import com.blankj.utilcode.util.PathUtils;
|
|
|
import com.blankj.utilcode.util.PermissionUtils;
|
|
|
import com.blankj.utilcode.util.ToastUtils;
|
|
|
-import com.blankj.utilcode.util.UtilsTransActivity;
|
|
|
import com.ht.gate.domain.QueryUpdate;
|
|
|
import com.ht.gate.domain.Room;
|
|
|
import com.ht.gate.domain.UpdateInfo;
|
|
|
-import com.liulishuo.filedownloader.BaseDownloadTask;
|
|
|
-import com.liulishuo.filedownloader.DownloadTask;
|
|
|
-import com.liulishuo.filedownloader.FileDownloadListener;
|
|
|
-import com.liulishuo.filedownloader.FileDownloadSampleListener;
|
|
|
-import com.liulishuo.filedownloader.FileDownloader;
|
|
|
-
|
|
|
-import org.apache.commons.io.FilenameUtils;
|
|
|
+import com.liulishuo.okdownload.DownloadListener;
|
|
|
+import com.liulishuo.okdownload.DownloadTask;
|
|
|
+import com.liulishuo.okdownload.SpeedCalculator;
|
|
|
+import com.liulishuo.okdownload.StatusUtil;
|
|
|
+import com.liulishuo.okdownload.core.Util;
|
|
|
+import com.liulishuo.okdownload.core.breakpoint.BlockInfo;
|
|
|
+import com.liulishuo.okdownload.core.breakpoint.BreakpointInfo;
|
|
|
+import com.liulishuo.okdownload.core.cause.EndCause;
|
|
|
+import com.liulishuo.okdownload.core.cause.ResumeFailedCause;
|
|
|
+import com.liulishuo.okdownload.core.listener.DownloadListener4WithSpeed;
|
|
|
+import com.liulishuo.okdownload.core.listener.assist.Listener4SpeedAssistExtend;
|
|
|
|
|
|
import java.io.File;
|
|
|
import java.io.IOException;
|
|
|
import java.io.InputStream;
|
|
|
import java.io.OutputStream;
|
|
|
+import java.util.List;
|
|
|
+import java.util.Map;
|
|
|
|
|
|
import butterknife.BindView;
|
|
|
import butterknife.ButterKnife;
|
|
|
@@ -76,6 +82,7 @@ public class SettingsActivity extends AppCompatActivity {
|
|
|
private DoorService.DoorBinder mDoorBinder;
|
|
|
|
|
|
private ProgressDialog progressDialog;
|
|
|
+ private ProgressDialog loadingDialog;
|
|
|
|
|
|
private ServiceConnection connection = new ServiceConnection() {
|
|
|
@Override
|
|
|
@@ -105,6 +112,12 @@ public class SettingsActivity extends AppCompatActivity {
|
|
|
progressDialog.setCancelable(false);
|
|
|
progressDialog.setMessage("下载中");
|
|
|
progressDialog.setProgress(0);
|
|
|
+
|
|
|
+ loadingDialog = new ProgressDialog(this, AlertDialog.THEME_DEVICE_DEFAULT_DARK);
|
|
|
+ loadingDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
|
|
|
+ loadingDialog.setCanceledOnTouchOutside(false);
|
|
|
+ loadingDialog.setCancelable(false);
|
|
|
+ loadingDialog.setMessage("加载中");
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
@@ -184,15 +197,12 @@ public class SettingsActivity extends AppCompatActivity {
|
|
|
void checkUpdate() {
|
|
|
try {
|
|
|
Room room = Room.fromBase64(sharedPreferences.getString(Constants.PREF_ROOM_INFO, null));
|
|
|
- ProgressDialog p = new ProgressDialog(this);
|
|
|
- p.setMessage("检查更新中");
|
|
|
- p.show();
|
|
|
RetrofitManager.getInstance().getRetrofit().create(ApiService.class)
|
|
|
.checkUpdate(new QueryUpdate(room.getSiteCode(), "02", AppUtils.getAppVersionCode() + ""))
|
|
|
.enqueue(new Callback<UpdateInfo>() {
|
|
|
@Override
|
|
|
public void onResponse(Call<UpdateInfo> call, Response<UpdateInfo> response) {
|
|
|
- p.dismiss();
|
|
|
+ loadingDialog.dismiss();
|
|
|
if (response.code() == 200) {
|
|
|
if (response.body() == null) {
|
|
|
Toasty.info(SettingsActivity.this, "暂无更新").show();
|
|
|
@@ -237,8 +247,8 @@ public class SettingsActivity extends AppCompatActivity {
|
|
|
} else {
|
|
|
url = RetrofitManager.BASE_URL.replaceAll("/$", "") + response.body().getResultData().getSoftwareUrl();
|
|
|
}
|
|
|
- ToastUtils.showShort(url);
|
|
|
- startDownload(url);
|
|
|
+ Log.d(TAG, "download Url: " + url);
|
|
|
+ startDownload2(url);
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
@@ -255,7 +265,7 @@ public class SettingsActivity extends AppCompatActivity {
|
|
|
|
|
|
@Override
|
|
|
public void onFailure(Call<UpdateInfo> call, Throwable t) {
|
|
|
- p.dismiss();
|
|
|
+ loadingDialog.dismiss();
|
|
|
Toasty.info(SettingsActivity.this, "暂无更新").show();
|
|
|
}
|
|
|
});
|
|
|
@@ -299,52 +309,180 @@ public class SettingsActivity extends AppCompatActivity {
|
|
|
// }).request();
|
|
|
}
|
|
|
|
|
|
- private void startDownload(String url) {
|
|
|
- FileDownloader.setup(SettingsActivity.this);
|
|
|
- String ext = FilenameUtils.getExtension(url);
|
|
|
+// private void startDownload(String url) {
|
|
|
+// FileDownloader.setup(SettingsActivity.this);
|
|
|
+// String ext = FilenameUtils.getExtension(url);
|
|
|
+// String fileName = System.currentTimeMillis() + ".apk";
|
|
|
+// String path = PathUtils.getExternalAppDownloadPath() + "/" + fileName;
|
|
|
+// BaseDownloadTask downloadTask = FileDownloader.getImpl().create(url).setPath(path).setListener(new FileDownloadListener() {
|
|
|
+// @Override
|
|
|
+// protected void pending(BaseDownloadTask task, int soFarBytes, int totalBytes) {
|
|
|
+//
|
|
|
+// }
|
|
|
+//
|
|
|
+// @Override
|
|
|
+// protected void progress(BaseDownloadTask task, int soFarBytes, int totalBytes) {
|
|
|
+// Log.d(TAG, "download progress: " + soFarBytes + " / " + totalBytes);
|
|
|
+// progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
|
|
|
+// progressDialog.setProgress((int) (soFarBytes * 100L / totalBytes));
|
|
|
+// }
|
|
|
+//
|
|
|
+// @Override
|
|
|
+// protected void completed(BaseDownloadTask task) {
|
|
|
+// progressDialog.dismiss();
|
|
|
+// ToastUtils.showShort("下载完成");
|
|
|
+// installApk(new File(task.getPath()));
|
|
|
+// }
|
|
|
+//
|
|
|
+// @Override
|
|
|
+// protected void paused(BaseDownloadTask task, int soFarBytes, int totalBytes) {
|
|
|
+// }
|
|
|
+//
|
|
|
+// @Override
|
|
|
+// protected void error(BaseDownloadTask task, Throwable e) {
|
|
|
+// progressDialog.dismiss();
|
|
|
+// ToastUtils.showShort(e.getMessage());
|
|
|
+// }
|
|
|
+//
|
|
|
+// @Override
|
|
|
+// protected void warn(BaseDownloadTask task) {
|
|
|
+//
|
|
|
+// }
|
|
|
+// });
|
|
|
+// progressDialog.setButton(ProgressDialog.BUTTON_NEGATIVE, "取消下载", (dialog, which) -> {
|
|
|
+// downloadTask.pause();
|
|
|
+// progressDialog.dismiss();
|
|
|
+// });
|
|
|
+// progressDialog.setProgress(0);
|
|
|
+// progressDialog.show();
|
|
|
+// downloadTask.start();
|
|
|
+// }
|
|
|
+
|
|
|
+ private void startDownload2(String url) {
|
|
|
String fileName = System.currentTimeMillis() + ".apk";
|
|
|
- String path = PathUtils.getExternalAppDownloadPath() + "/" + fileName;
|
|
|
- BaseDownloadTask downloadTask = FileDownloader.getImpl().create(url).setPath(path).setListener(new FileDownloadListener() {
|
|
|
+ DownloadTask task = new DownloadTask.Builder(url, PathUtils.getExternalAppDownloadPath(), fileName)
|
|
|
+ .setMinIntervalMillisCallbackProcess(16)
|
|
|
+ // ignore the same task has already completed in the past.
|
|
|
+ .setPassIfAlreadyCompleted(false)
|
|
|
+ .build();
|
|
|
+ Util.enableConsoleLog();
|
|
|
+
|
|
|
+// task.enqueue(new DownloadListener() {
|
|
|
+// @Override
|
|
|
+// public void taskStart(@NonNull DownloadTask task) {
|
|
|
+// Log.d(TAG, "taskStart");
|
|
|
+// }
|
|
|
+//
|
|
|
+// @Override
|
|
|
+// public void connectTrialStart(@NonNull DownloadTask task, @NonNull Map<String, List<String>> requestHeaderFields) {
|
|
|
+// Log.d(TAG, "connectTrialStart");
|
|
|
+// }
|
|
|
+//
|
|
|
+// @Override
|
|
|
+// public void connectTrialEnd(@NonNull DownloadTask task, int responseCode, @NonNull Map<String, List<String>> responseHeaderFields) {
|
|
|
+// Log.d(TAG, "connectTrialEnd");
|
|
|
+// }
|
|
|
+//
|
|
|
+// @Override
|
|
|
+// public void downloadFromBeginning(@NonNull DownloadTask task, @NonNull BreakpointInfo info, @NonNull ResumeFailedCause cause) {
|
|
|
+// Log.d(TAG, "downloadFromBeginning");
|
|
|
+// }
|
|
|
+//
|
|
|
+// @Override
|
|
|
+// public void downloadFromBreakpoint(@NonNull DownloadTask task, @NonNull BreakpointInfo info) {
|
|
|
+// Log.d(TAG, "downloadFromBreakpoint");
|
|
|
+// }
|
|
|
+//
|
|
|
+// @Override
|
|
|
+// public void connectStart(@NonNull DownloadTask task, int blockIndex, @NonNull Map<String, List<String>> requestHeaderFields) {
|
|
|
+// Log.d(TAG, "connectStart");
|
|
|
+// }
|
|
|
+//
|
|
|
+// @Override
|
|
|
+// public void connectEnd(@NonNull DownloadTask task, int blockIndex, int responseCode, @NonNull Map<String, List<String>> responseHeaderFields) {
|
|
|
+// Log.d(TAG, "connectEnd");
|
|
|
+// }
|
|
|
+//
|
|
|
+// @Override
|
|
|
+// public void fetchStart(@NonNull DownloadTask task, int blockIndex, long contentLength) {
|
|
|
+//
|
|
|
+// Log.d(TAG, String.format("fetchStart blockIndex %s contentLength %s", blockIndex, contentLength));
|
|
|
+// }
|
|
|
+//
|
|
|
+// @Override
|
|
|
+// public void fetchProgress(@NonNull DownloadTask task, int blockIndex, long increaseBytes) {
|
|
|
+// Log.d(TAG, String.format("fetchProgress blockIndex %s increaseBytes %s", blockIndex, increaseBytes));
|
|
|
+// }
|
|
|
+//
|
|
|
+// @Override
|
|
|
+// public void fetchEnd(@NonNull DownloadTask task, int blockIndex, long contentLength) {
|
|
|
+// Log.d(TAG, "fetchEnd");
|
|
|
+// }
|
|
|
+//
|
|
|
+// @Override
|
|
|
+// public void taskEnd(@NonNull DownloadTask task, @NonNull EndCause cause, @Nullable Exception realCause) {
|
|
|
+// Log.d(TAG, "taskEnd");
|
|
|
+// }
|
|
|
+// });
|
|
|
+
|
|
|
+ progressDialog.setButton(ProgressDialog.BUTTON_NEGATIVE, "取消下载", (dialog, which) -> {
|
|
|
+ task.cancel();
|
|
|
+ progressDialog.dismiss();
|
|
|
+ });
|
|
|
+ progressDialog.setProgress(0);
|
|
|
+ progressDialog.show();
|
|
|
+
|
|
|
+
|
|
|
+ final long[] totalLength = {0};
|
|
|
+ task.enqueue(new DownloadListener4WithSpeed() {
|
|
|
@Override
|
|
|
- protected void pending(BaseDownloadTask task, int soFarBytes, int totalBytes) {
|
|
|
+ public void taskStart(@NonNull DownloadTask task) {
|
|
|
+ Log.d(TAG, "taskStart");
|
|
|
+ }
|
|
|
|
|
|
+ @Override
|
|
|
+ public void connectStart(@NonNull DownloadTask task, int blockIndex, @NonNull Map<String, List<String>> requestHeaderFields) {
|
|
|
+ Log.d(TAG, "connectStart");
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- protected void progress(BaseDownloadTask task, int soFarBytes, int totalBytes) {
|
|
|
- progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
|
|
|
- progressDialog.setProgress((int) (soFarBytes * 100L / totalBytes));
|
|
|
+ public void connectEnd(@NonNull DownloadTask task, int blockIndex, int responseCode, @NonNull Map<String, List<String>> responseHeaderFields) {
|
|
|
+ Log.d(TAG, "connectEnd");
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- protected void completed(BaseDownloadTask task) {
|
|
|
- progressDialog.dismiss();
|
|
|
- ToastUtils.showShort("下载完成");
|
|
|
- installApk(new File(task.getPath()));
|
|
|
+ public void infoReady(@NonNull DownloadTask task, @NonNull BreakpointInfo info, boolean fromBreakpoint, @NonNull Listener4SpeedAssistExtend.Listener4SpeedModel model) {
|
|
|
+ totalLength[0] = info.getTotalLength();
|
|
|
+ Log.d(TAG, "infoReady");
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- protected void paused(BaseDownloadTask task, int soFarBytes, int totalBytes) {
|
|
|
+ public void progressBlock(@NonNull DownloadTask task, int blockIndex, long currentBlockOffset, @NonNull SpeedCalculator blockSpeed) {
|
|
|
+ Log.d(TAG, "progressBlock");
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- protected void error(BaseDownloadTask task, Throwable e) {
|
|
|
- progressDialog.dismiss();
|
|
|
- ToastUtils.showShort(e.getMessage());
|
|
|
+ public void progress(@NonNull DownloadTask task, long currentOffset, @NonNull SpeedCalculator taskSpeed) {
|
|
|
+ Log.d(TAG, String.format("progress currentOffset %s ", currentOffset));
|
|
|
+ progressDialog.setProgress((int) (currentOffset * 100 / totalLength[0]));
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- protected void warn(BaseDownloadTask task) {
|
|
|
+ public void blockEnd(@NonNull DownloadTask task, int blockIndex, BlockInfo info, @NonNull SpeedCalculator blockSpeed) {
|
|
|
+ Log.d(TAG, "blockEnd");
|
|
|
+ }
|
|
|
|
|
|
+ @Override
|
|
|
+ public void taskEnd(@NonNull DownloadTask task, @NonNull EndCause cause, @Nullable Exception realCause, @NonNull SpeedCalculator taskSpeed) {
|
|
|
+ Log.d(TAG, "taskEnd");
|
|
|
+ progressDialog.dismiss();
|
|
|
+ if (cause == EndCause.COMPLETED) {
|
|
|
+ installApk(task.getFile());
|
|
|
+ } else {
|
|
|
+ Toasty.info(SettingsActivity.this, cause.name()).show();
|
|
|
+ }
|
|
|
}
|
|
|
});
|
|
|
- progressDialog.setButton(ProgressDialog.BUTTON_NEGATIVE, "取消下载", (dialog, which) -> {
|
|
|
- downloadTask.pause();
|
|
|
- progressDialog.dismiss();
|
|
|
- });
|
|
|
- progressDialog.setProgress(0);
|
|
|
- progressDialog.show();
|
|
|
- downloadTask.start();
|
|
|
}
|
|
|
|
|
|
private void installApk(File apkFile) {
|