From b2e708c35487e663d1ea67156060c58d81d02d88 Mon Sep 17 00:00:00 2001 From: FongMi Date: Sat, 11 Nov 2023 01:37:27 +0800 Subject: [PATCH] Add auto backup --- .../android/tv/ui/activity/HomeActivity.java | 1 + .../tv/ui/activity/SettingActivity.java | 7 + .../java/com/fongmi/android/tv/Setting.java | 144 +++++++++--------- .../com/fongmi/android/tv/db/AppDatabase.java | 9 +- app/src/main/res/values-zh-rCN/strings.xml | 1 + app/src/main/res/values-zh-rTW/strings.xml | 1 + app/src/main/res/values/strings.xml | 1 + .../android/tv/ui/activity/MainActivity.java | 1 + .../tv/ui/fragment/SettingFragment.java | 7 + 9 files changed, 102 insertions(+), 70 deletions(-) diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/HomeActivity.java b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/HomeActivity.java index 837c6fad9..c99ea50f2 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/HomeActivity.java +++ b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/HomeActivity.java @@ -463,6 +463,7 @@ public class HomeActivity extends BaseActivity implements CustomTitleView.Listen WallConfig.get().clear(); LiveConfig.get().clear(); ApiConfig.get().clear(); + AppDatabase.backup(); Server.get().stop(); Source.get().exit(); } diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/SettingActivity.java b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/SettingActivity.java index 9b58b5448..c53262585 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/SettingActivity.java +++ b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/SettingActivity.java @@ -115,6 +115,7 @@ public class SettingActivity extends BaseActivity implements ConfigCallback, Sit mBinding.vodHome.setOnClickListener(this::onVodHome); mBinding.live.setOnLongClickListener(this::onLiveEdit); mBinding.liveHome.setOnClickListener(this::onLiveHome); + mBinding.backup.setOnLongClickListener(this::onBackupAuto); mBinding.vodHistory.setOnClickListener(this::onVodHistory); mBinding.version.setOnLongClickListener(this::onVersionDev); mBinding.liveHistory.setOnClickListener(this::onLiveHistory); @@ -362,4 +363,10 @@ public class SettingActivity extends BaseActivity implements ConfigCallback, Sit } })); } + + private boolean onBackupAuto(View view) { + Setting.putBackupAuto(!Setting.isBackupAuto()); + mBinding.backupText.setText(AppDatabase.getDate()); + return true; + } } diff --git a/app/src/main/java/com/fongmi/android/tv/Setting.java b/app/src/main/java/com/fongmi/android/tv/Setting.java index 4f8d50eb9..9a309c900 100644 --- a/app/src/main/java/com/fongmi/android/tv/Setting.java +++ b/app/src/main/java/com/fongmi/android/tv/Setting.java @@ -33,6 +33,30 @@ public class Setting { Prefers.put("keep", keep); } + public static String getKeyword() { + return Prefers.getString("keyword"); + } + + public static void putKeyword(String keyword) { + Prefers.put("keyword", keyword); + } + + public static String getHot() { + return Prefers.getString("hot"); + } + + public static void putHot(String hot) { + Prefers.put("hot", hot); + } + + public static String getUa() { + return Prefers.getString("ua"); + } + + public static void putUa(String ua) { + Prefers.put("ua", ua); + } + public static int getWall() { return Prefers.getInt("wall", 1); } @@ -97,22 +121,6 @@ public class Setting { Prefers.put("size", size); } - public static String getKeyword() { - return Prefers.getString("keyword"); - } - - public static void putKeyword(String keyword) { - Prefers.put("keyword", keyword); - } - - public static String getHot() { - return Prefers.getString("hot"); - } - - public static void putHot(String hot) { - Prefers.put("hot", hot); - } - public static int getViewType(int viewType) { return Prefers.getInt("viewType", viewType); } @@ -137,6 +145,54 @@ public class Setting { Prefers.put("scale_live", scale); } + public static int getSubtitle() { + return Math.max(Prefers.getInt("subtitle", 16), 14); + } + + public static void putSubtitle(int subtitle) { + Prefers.put("subtitle", subtitle); + } + + public static int getHttp() { + return Prefers.getInt("exo_http"); + } + + public static void putHttp(int http) { + Prefers.put("exo_http", http); + } + + public static int getBuffer() { + return Math.min(Math.max(Prefers.getInt("exo_buffer"), 1), 15); + } + + public static void putBuffer(int buffer) { + Prefers.put("exo_buffer", buffer); + } + + public static int getFlag() { + return Prefers.getInt("flag"); + } + + public static void putFlag(int mode) { + Prefers.put("flag", mode); + } + + public static int getBackground() { + return Prefers.getInt("background", 2); + } + + public static void putBackground(int background) { + Prefers.put("background", background); + } + + public static int getSiteMode() { + return Prefers.getInt("site_mode"); + } + + public static void putSiteMode(int mode) { + Prefers.put("site_mode", mode); + } + public static boolean isBootLive() { return Prefers.getBoolean("boot_live"); } @@ -185,14 +241,6 @@ public class Setting { Prefers.put("danmu", danmu); } - public static String getUa() { - return Prefers.getString("ua"); - } - - public static void putUa(String ua) { - Prefers.put("ua", ua); - } - public static boolean isCaption() { return Prefers.getBoolean("caption"); } @@ -201,14 +249,6 @@ public class Setting { Prefers.put("caption", caption); } - public static int getSubtitle() { - return Math.max(Prefers.getInt("subtitle", 16), 14); - } - - public static void putSubtitle(int subtitle) { - Prefers.put("subtitle", subtitle); - } - public static boolean isTunnel() { return Prefers.getBoolean("exo_tunnel"); } @@ -217,44 +257,12 @@ public class Setting { Prefers.put("exo_tunnel", tunnel); } - public static int getHttp() { - return Prefers.getInt("exo_http"); - } - - public static void putHttp(int http) { - Prefers.put("exo_http", http); - } - - public static int getBuffer() { - return Math.min(Math.max(Prefers.getInt("exo_buffer"), 1), 15); - } - - public static void putBuffer(int buffer) { - Prefers.put("exo_buffer", buffer); + public static boolean isBackupAuto() { + return Prefers.getBoolean("backup_auto"); } - public static int getFlag() { - return Prefers.getInt("flag"); - } - - public static void putFlag(int mode) { - Prefers.put("flag", mode); - } - - public static int getBackground() { - return Prefers.getInt("background", 2); - } - - public static void putBackground(int background) { - Prefers.put("background", background); - } - - public static int getSiteMode() { - return Prefers.getInt("site_mode"); - } - - public static void putSiteMode(int mode) { - Prefers.put("site_mode", mode); + public static void putBackupAuto(boolean auto) { + Prefers.put("backup_auto", auto); } public static float getThumbnail() { diff --git a/app/src/main/java/com/fongmi/android/tv/db/AppDatabase.java b/app/src/main/java/com/fongmi/android/tv/db/AppDatabase.java index 117342645..89363c08e 100644 --- a/app/src/main/java/com/fongmi/android/tv/db/AppDatabase.java +++ b/app/src/main/java/com/fongmi/android/tv/db/AppDatabase.java @@ -10,6 +10,7 @@ import androidx.room.migration.Migration; import androidx.sqlite.db.SupportSQLiteDatabase; import com.fongmi.android.tv.App; +import com.fongmi.android.tv.R; import com.fongmi.android.tv.Setting; import com.fongmi.android.tv.bean.Config; import com.fongmi.android.tv.bean.Device; @@ -23,6 +24,7 @@ import com.fongmi.android.tv.db.dao.HistoryDao; import com.fongmi.android.tv.db.dao.KeepDao; import com.fongmi.android.tv.db.dao.SiteDao; import com.fongmi.android.tv.db.dao.TrackDao; +import com.fongmi.android.tv.utils.ResUtil; import com.fongmi.android.tv.utils.Util; import com.github.catvod.utils.Path; import com.github.catvod.utils.Prefers; @@ -46,14 +48,17 @@ public abstract class AppDatabase extends RoomDatabase { } public static String getDate() { - File file = new File(Path.tv(), NAME); - return file.exists() ? Util.format(new SimpleDateFormat("yyyyMMdd", Locale.getDefault()), file.lastModified()) : ""; + return Setting.isBackupAuto() ? ResUtil.getString(R.string.setting_backup_auto) : getBackupKey().exists() ? Util.format(new SimpleDateFormat("yyyyMMdd", Locale.getDefault()), getBackupKey().lastModified()) : ""; } public static File getBackupKey() { return new File(Path.tv(), "." + Util.getDeviceId()); } + public static void backup() { + if (Setting.isBackupAuto()) backup(new com.fongmi.android.tv.impl.Callback()); + } + public static void backup(com.fongmi.android.tv.impl.Callback callback) { App.execute(() -> { File db = App.get().getDatabasePath(NAME).getAbsoluteFile(); diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index e144912dd..43f8b0e9c 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -83,6 +83,7 @@ Proxy 缓存 备份 + 自动 版本 权限 关闭 diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml index 83ce79957..ad9607027 100644 --- a/app/src/main/res/values-zh-rTW/strings.xml +++ b/app/src/main/res/values-zh-rTW/strings.xml @@ -83,6 +83,7 @@ Proxy 暫存 備份 + 自動 版本 權限 關閉 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 67ea4525d..299ae55f0 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -83,6 +83,7 @@ Proxy Cache Backup + Auto Version Permission Off diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/activity/MainActivity.java b/app/src/mobile/java/com/fongmi/android/tv/ui/activity/MainActivity.java index 657ab2be9..9f9d95296 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/ui/activity/MainActivity.java +++ b/app/src/mobile/java/com/fongmi/android/tv/ui/activity/MainActivity.java @@ -206,6 +206,7 @@ public class MainActivity extends BaseActivity implements NavigationBarView.OnIt WallConfig.get().clear(); LiveConfig.get().clear(); ApiConfig.get().clear(); + AppDatabase.backup(); Source.get().exit(); Server.get().stop(); } diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/fragment/SettingFragment.java b/app/src/mobile/java/com/fongmi/android/tv/ui/fragment/SettingFragment.java index c52a14bed..4e5651570 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/ui/fragment/SettingFragment.java +++ b/app/src/mobile/java/com/fongmi/android/tv/ui/fragment/SettingFragment.java @@ -123,6 +123,7 @@ public class SettingFragment extends BaseFragment implements ConfigCallback, Sit mBinding.vodHome.setOnClickListener(this::onVodHome); mBinding.live.setOnLongClickListener(this::onLiveEdit); mBinding.liveHome.setOnClickListener(this::onLiveHome); + mBinding.backup.setOnLongClickListener(this::onBackupAuto); mBinding.vodHistory.setOnClickListener(this::onVodHistory); mBinding.version.setOnLongClickListener(this::onVersionDev); mBinding.liveHistory.setOnClickListener(this::onLiveHistory); @@ -370,6 +371,12 @@ public class SettingFragment extends BaseFragment implements ConfigCallback, Sit })); } + private boolean onBackupAuto(View view) { + Setting.putBackupAuto(!Setting.isBackupAuto()); + mBinding.backupText.setText(AppDatabase.getDate()); + return true; + } + @Override public void onHiddenChanged(boolean hidden) { if (hidden || player == null || decode == null) return;