[leanback] update dev

pull/123/head
FongMi 3 years ago
parent 48a135e542
commit e2acb3a4e0
  1. 2
      app/build.gradle
  2. 135
      app/src/leanback/java/com/fongmi/android/tv/Updater.java
  3. 2
      app/src/leanback/java/com/fongmi/android/tv/ui/activity/HomeActivity.java
  4. 2
      app/src/leanback/java/com/fongmi/android/tv/ui/activity/SettingActivity.java
  5. 4
      app/src/leanback/res/values/styles.xml
  6. 0
      app/src/mobile/java/com/fongmi/android/tv/Updater.java

@ -17,7 +17,7 @@ android {
leanback {
dimension "mode"
versionCode 71
versionName "1.7.1"
versionName "20230329#1"
}
mobile {
dimension "mode"

@ -0,0 +1,135 @@
package com.fongmi.android.tv;
import android.app.Activity;
import android.view.LayoutInflater;
import android.view.View;
import androidx.appcompat.app.AlertDialog;
import com.fongmi.android.tv.databinding.DialogUpdateBinding;
import com.fongmi.android.tv.net.Download;
import com.fongmi.android.tv.net.OkHttp;
import com.fongmi.android.tv.utils.FileUtil;
import com.fongmi.android.tv.utils.Notify;
import com.fongmi.android.tv.utils.Prefers;
import com.fongmi.android.tv.utils.ResUtil;
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
import org.json.JSONObject;
import java.io.File;
import java.util.Locale;
public class Updater implements Download.Callback {
private DialogUpdateBinding binding;
private AlertDialog dialog;
private String branch;
private static class Loader {
static volatile Updater INSTANCE = new Updater();
}
public static Updater get() {
return Loader.INSTANCE;
}
private File getFile() {
return FileUtil.getCacheFile(branch + ".apk");
}
private String getJson() {
return Github.get().getBranchPath(branch, "/release/" + BuildConfig.FLAVOR_mode + "-" + branch + ".json");
}
private String getApk() {
return Github.get().getBranchPath(branch, "/release/" + BuildConfig.FLAVOR_mode + "-" + BuildConfig.FLAVOR_api + ".apk");
}
private Updater() {
this.branch = Github.RELEASE;
}
public Updater force() {
Notify.show(R.string.update_check);
Prefers.putUpdate(true);
return this;
}
public Updater dev() {
this.branch = Github.DEV;
return this;
}
private Updater check() {
dismiss();
return this;
}
public void start() {
App.execute(this::doInBackground);
}
private boolean need(int code, String name) {
return (branch.equals(Github.DEV) ? !name.equals(BuildConfig.VERSION_NAME) : code > BuildConfig.VERSION_CODE) && Prefers.getUpdate();
}
private void doInBackground() {
try {
JSONObject object = new JSONObject(OkHttp.newCall(getJson()).execute().body().string());
String name = object.optString("name");
String desc = object.optString("desc");
int code = object.optInt("code");
if (need(code, name)) App.post(() -> show(App.activity(), name, desc));
} catch (Exception e) {
e.printStackTrace();
}
}
private void show(Activity activity, String version, String desc) {
binding = DialogUpdateBinding.inflate(LayoutInflater.from(activity));
binding.version.setText(ResUtil.getString(R.string.update_version, version));
binding.confirm.setOnClickListener(this::confirm);
binding.cancel.setOnClickListener(this::cancel);
check().create(activity).show();
binding.desc.setText(desc);
}
private AlertDialog create(Activity activity) {
return dialog = new MaterialAlertDialogBuilder(activity).setView(binding.getRoot()).setCancelable(false).create();
}
private void cancel(View view) {
Prefers.putUpdate(false);
dismiss();
}
private void confirm(View view) {
binding.confirm.setEnabled(false);
Download.create(getApk(), getFile(), this).start();
}
private void dismiss() {
try {
if (dialog != null) dialog.dismiss();
} catch (Exception ignored) {
}
}
@Override
public void progress(int progress) {
binding.confirm.setText(String.format(Locale.getDefault(), "%1$d%%", progress));
}
@Override
public void error(String message) {
Notify.show(message);
dismiss();
}
@Override
public void success(File file) {
FileUtil.openFile(getFile());
dismiss();
}
}

@ -16,9 +16,9 @@ import androidx.viewbinding.ViewBinding;
import com.fongmi.android.tv.App;
import com.fongmi.android.tv.Product;
import com.fongmi.android.tv.R;
import com.fongmi.android.tv.Updater;
import com.fongmi.android.tv.api.ApiConfig;
import com.fongmi.android.tv.api.LiveConfig;
import com.fongmi.android.tv.api.Updater;
import com.fongmi.android.tv.api.WallConfig;
import com.fongmi.android.tv.bean.Func;
import com.fongmi.android.tv.bean.History;

@ -8,9 +8,9 @@ import androidx.viewbinding.ViewBinding;
import com.fongmi.android.tv.BuildConfig;
import com.fongmi.android.tv.R;
import com.fongmi.android.tv.Updater;
import com.fongmi.android.tv.api.ApiConfig;
import com.fongmi.android.tv.api.LiveConfig;
import com.fongmi.android.tv.api.Updater;
import com.fongmi.android.tv.api.WallConfig;
import com.fongmi.android.tv.bean.Config;
import com.fongmi.android.tv.bean.Live;

@ -6,9 +6,9 @@
<item name="colorPrimary">@color/primary</item>
<item name="colorPrimaryDark">@color/primaryDark</item>
<item name="colorAccent">@color/accent</item>
<item name="android:windowAnimationStyle">@null</item>
<item name="android:windowBackground">@null</item>
<item name="android:windowFullscreen">true</item>
<item name="android:windowBackground">@null</item>
<item name="android:windowAnimationStyle">@null</item>
<item name="android:windowTranslucentStatus">true</item>
<item name="android:windowTranslucentNavigation">true</item>
<item name="bottomSheetDialogTheme">@style/ThemeOverlay.App.BottomSheetDialog</item>

Loading…
Cancel
Save