diff --git a/app/build.gradle b/app/build.gradle index e5813634b..15a371b02 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -11,7 +11,7 @@ android { minSdk 21 targetSdk 28 versionCode 225 - versionName "0207" + versionName "0212" javaCompileOptions { annotationProcessorOptions { arguments = ["room.schemaLocation": "$projectDir/schemas".toString()] 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 51cca8b67..f32c648b1 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 @@ -20,6 +20,7 @@ import com.android.cast.dlna.dmr.DLNARendererService; import com.fongmi.android.tv.App; import com.fongmi.android.tv.Product; import com.fongmi.android.tv.R; +import com.fongmi.android.tv.Setting; import com.fongmi.android.tv.Updater; import com.fongmi.android.tv.api.config.LiveConfig; import com.fongmi.android.tv.api.config.VodConfig; @@ -99,6 +100,7 @@ public class HomeActivity extends BaseActivity implements CustomTitleView.Listen Updater.get().release().start(this); mResult = Result.empty(); Server.get().start(); + setTitleView(); setRecyclerView(); setViewModel(); setAdapter(); @@ -129,6 +131,10 @@ public class HomeActivity extends BaseActivity implements CustomTitleView.Listen } } + private void setTitleView() { + mBinding.homeSiteLock.setVisibility(Setting.isHomeSiteLock() ? View.VISIBLE : View.GONE); + } + private void setRecyclerView() { CustomSelector selector = new CustomSelector(); selector.addPresenter(Integer.class, new HeaderPresenter()); @@ -352,6 +358,7 @@ public class HomeActivity extends BaseActivity implements CustomTitleView.Listen @Override public void showDialog() { + if (Setting.isHomeSiteLock()) return; SiteDialog.create(this).show(); } @@ -438,6 +445,7 @@ public class HomeActivity extends BaseActivity implements CustomTitleView.Listen protected void onResume() { super.onResume(); mClock.start(); + setTitleView(); } @Override diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/SettingCustomActivity.java b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/SettingCustomActivity.java index 026e9b772..3ed230a05 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/SettingCustomActivity.java +++ b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/SettingCustomActivity.java @@ -43,8 +43,10 @@ public class SettingCustomActivity extends BaseActivity { mBinding.displayTimeText.setText(getSwitch(Setting.isDisplayTime())); mBinding.displayNetspeedText.setText(getSwitch(Setting.isDisplaySpeed())); mBinding.displayDurationText.setText(getSwitch(Setting.isDisplayDuration())); + mBinding.displayMiniProgressText.setText(getSwitch(Setting.isDisplayMiniProgress())); mBinding.speedText.setText(Setting.getPlaySpeed() + "x"); mBinding.fullscreenMenuKeyText.setText((fullscreenMenuKey = ResUtil.getStringArray(R.array.select_fullscreen_menu_key))[Setting.getFullscreenMenuKey()]); + mBinding.homeSiteLockText.setText(getSwitch(Setting.isHomeSiteLock())); } @Override @@ -55,9 +57,11 @@ public class SettingCustomActivity extends BaseActivity { mBinding.displayTime.setOnClickListener(this::setDisplayTime); mBinding.displayNetspeed.setOnClickListener(this::setDisplaySpeed); mBinding.displayDuration.setOnClickListener(this::setDisplayDuration); + mBinding.displayMiniProgress.setOnClickListener(this::setDisplayMiniProgress); mBinding.speed.setOnClickListener(this::setSpeed); mBinding.speed.setOnLongClickListener(this::resetSpeed); mBinding.fullscreenMenuKey.setOnClickListener(this::setfullscreenMenuKey); + mBinding.homeSiteLock.setOnClickListener(this::setHomeSiteLock); } private void setQuality(View view) { @@ -95,6 +99,11 @@ public class SettingCustomActivity extends BaseActivity { mBinding.displayDurationText.setText(getSwitch(Setting.isDisplayDuration())); } + private void setDisplayMiniProgress(View view) { + Setting.putDisplayMiniProgress(!Setting.isDisplayMiniProgress()); + mBinding.displayMiniProgressText.setText(getSwitch(Setting.isDisplayMiniProgress())); + } + private void setSpeed(View view) { float speed = Setting.getPlaySpeed(); float addon = speed >= 2 ? 1f : 0.25f; @@ -115,4 +124,9 @@ public class SettingCustomActivity extends BaseActivity { mBinding.fullscreenMenuKeyText.setText(fullscreenMenuKey[index]); } + private void setHomeSiteLock(View view) { + Setting.putHomeSiteLock(!Setting.isHomeSiteLock()); + mBinding.homeSiteLockText.setText(getSwitch(Setting.isHomeSiteLock())); + } + } diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/VideoActivity.java b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/VideoActivity.java index 3f44080d0..c02c4cc2b 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/VideoActivity.java +++ b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/VideoActivity.java @@ -751,13 +751,15 @@ public class VideoActivity extends BaseActivity implements CustomKeyDownVod.List mBinding.display.time.setVisibility(Setting.isDisplayTime() || isVisible(mBinding.widget.info) ? View.VISIBLE : View.GONE); mBinding.display.netspeed.setVisibility(Setting.isDisplaySpeed() && !isVisible(mBinding.control.getRoot()) ? View.VISIBLE : View.GONE); mBinding.display.duration.setVisibility(Setting.isDisplayDuration() && !isVisible(mBinding.control.getRoot()) ? View.VISIBLE : View.GONE); + mBinding.display.progress.setVisibility(Setting.isDisplayMiniProgress() && !isVisible(mBinding.control.getRoot()) ? View.VISIBLE : View.GONE); } private void onTimeChangeDisplaySpeed() { - boolean visible = isVisible(mBinding.control.getRoot()); + boolean visible = !isVisible(mBinding.control.getRoot()); long position = mPlayers.getPosition(); - if (Setting.isDisplaySpeed() && !visible) Traffic.setSpeed(mBinding.display.netspeed); - if (Setting.isDisplayDuration() && !visible && position > 0) mBinding.display.duration.setText(mPlayers.getPositionTime(0) + "/" + mPlayers.getDurationTime()); + if (Setting.isDisplaySpeed() && visible) Traffic.setSpeed(mBinding.display.netspeed); + if (Setting.isDisplayDuration() && visible && position > 0) mBinding.display.duration.setText(mPlayers.getPositionTime(0) + "/" + mPlayers.getDurationTime()); + if (Setting.isDisplayMiniProgress() && visible && position > 0) mBinding.display.progress.setProgress((int)(position * 100 / mPlayers.getDuration())); showDisplayInfo(); } diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/custom/CustomTitleView.java b/app/src/leanback/java/com/fongmi/android/tv/ui/custom/CustomTitleView.java index 05d77973c..89c84b72b 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/ui/custom/CustomTitleView.java +++ b/app/src/leanback/java/com/fongmi/android/tv/ui/custom/CustomTitleView.java @@ -12,6 +12,7 @@ import androidx.appcompat.widget.AppCompatTextView; import com.fongmi.android.tv.App; import com.fongmi.android.tv.R; +import com.fongmi.android.tv.Setting; import com.fongmi.android.tv.api.config.VodConfig; import com.fongmi.android.tv.bean.Site; import com.fongmi.android.tv.impl.SiteCallback; @@ -53,6 +54,7 @@ public class CustomTitleView extends AppCompatTextView { @Override public boolean dispatchKeyEvent(KeyEvent event) { + if (Setting.isHomeSiteLock()) return false; if (VodConfig.get().getSites().isEmpty()) return false; if (hasEvent(event)) return onKeyDown(event); else return super.dispatchKeyEvent(event); diff --git a/app/src/leanback/res/drawable/ic_home_lock.xml b/app/src/leanback/res/drawable/ic_home_lock.xml new file mode 100644 index 000000000..8dd6cb37f --- /dev/null +++ b/app/src/leanback/res/drawable/ic_home_lock.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/leanback/res/layout/activity_home.xml b/app/src/leanback/res/layout/activity_home.xml index 829ce5610..231a7aadc 100644 --- a/app/src/leanback/res/layout/activity_home.xml +++ b/app/src/leanback/res/layout/activity_home.xml @@ -16,15 +16,35 @@ android:paddingEnd="24dp" android:paddingBottom="8dp"> - + android:orientation="horizontal" + android:layout_width="wrap_content" + android:layout_height="wrap_content"> + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/leanback/res/layout/view_widget_display.xml b/app/src/leanback/res/layout/view_widget_display.xml index 21f2aafb1..9954cbfca 100644 --- a/app/src/leanback/res/layout/view_widget_display.xml +++ b/app/src/leanback/res/layout/view_widget_display.xml @@ -51,4 +51,17 @@ android:textSize="16sp" tools:text="10MB/S"/> + + \ No newline at end of file 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 e55a2330e..34fbb18c6 100644 --- a/app/src/main/java/com/fongmi/android/tv/Setting.java +++ b/app/src/main/java/com/fongmi/android/tv/Setting.java @@ -365,6 +365,14 @@ public class Setting { Prefers.put("display_duration", display); } + public static boolean isDisplayMiniProgress() { + return Prefers.getBoolean("display_mini_progress", false); + } + + public static void putDisplayMiniProgress(boolean display) { + Prefers.put("display_mini_progress", display); + } + public static float getPlaySpeed() { return Prefers.getFloat("play_speed", 1.0f); } @@ -381,4 +389,12 @@ public class Setting { return Prefers.getInt("fullscreen_menu_key", 0); } + public static boolean isHomeSiteLock() { + return Prefers.getBoolean("home_site_lock", false); + } + + public static void putHomeSiteLock(boolean lock) { + Prefers.put("home_site_lock", lock); + } + } diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index 7074c6aa2..e3fb216cc 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -39,6 +39,7 @@ 时间 网速 进度 + 迷你进度 弹幕 倍速 换源 @@ -75,8 +76,8 @@ 个性设置 图片品质 图片尺寸 - 聚合搜索 全屏菜单键 + 首页源锁定 DoH Proxy 缓存 diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml index ace3b60b3..4c7d063af 100644 --- a/app/src/main/res/values-zh-rTW/strings.xml +++ b/app/src/main/res/values-zh-rTW/strings.xml @@ -39,6 +39,7 @@ 時間 網速 進度 + 迷你進度 彈幕 倍速 換源 @@ -75,8 +76,8 @@ 個性設定 圖片品質 圖片尺寸 - 聚合搜索 全屏選單鍵 + 首頁源鎖定 DoH Proxy 暫存 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index d328ac48b..097deeeb8 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -39,6 +39,7 @@ Time Net Speed Duration + Mini Progress Danmu Speed Change @@ -75,8 +76,8 @@ Custom setting Image quality Image size - Aggregated search Fullscreen menu key + Home site lock DoH Proxy Cache diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/activity/VideoActivity.java b/app/src/mobile/java/com/fongmi/android/tv/ui/activity/VideoActivity.java index d08d616d2..aa2381a98 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/ui/activity/VideoActivity.java +++ b/app/src/mobile/java/com/fongmi/android/tv/ui/activity/VideoActivity.java @@ -936,6 +936,7 @@ public class VideoActivity extends BaseActivity implements Clock.Callback, Custo mBinding.display.time.setVisibility(Setting.isDisplayTime() && visible ? View.VISIBLE : View.GONE); mBinding.display.netspeed.setVisibility(Setting.isDisplaySpeed() && visible ? View.VISIBLE : View.GONE); mBinding.display.duration.setVisibility(Setting.isDisplayDuration() && visible ? View.VISIBLE : View.GONE); + mBinding.display.progress.setVisibility(Setting.isDisplayMiniProgress() && visible ? View.VISIBLE : View.GONE); } private void onTimeChangeDisplaySpeed() { @@ -944,6 +945,7 @@ public class VideoActivity extends BaseActivity implements Clock.Callback, Custo long position = mPlayers.getPosition(); if (Setting.isDisplaySpeed() && visible) Traffic.setSpeed(mBinding.display.netspeed); if (Setting.isDisplayDuration() && visible && position > 0) mBinding.display.duration.setText(mPlayers.getPositionTime(0) + "/" + mPlayers.getDurationTime()); + if (Setting.isDisplayMiniProgress() && visible && position > 0) mBinding.display.progress.setProgress((int)(position * 100 / mPlayers.getDuration())); showDisplayInfo(); } diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/dialog/ControlDialog.java b/app/src/mobile/java/com/fongmi/android/tv/ui/dialog/ControlDialog.java index 47dd29930..1cd97c713 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/ui/dialog/ControlDialog.java +++ b/app/src/mobile/java/com/fongmi/android/tv/ui/dialog/ControlDialog.java @@ -99,6 +99,7 @@ public class ControlDialog extends BaseDialog implements ParseAdapter.OnClickLis binding.dptime.setActivated(Setting.isDisplayTime()); binding.dpspeed.setActivated(Setting.isDisplaySpeed()); binding.dpduration.setActivated(Setting.isDisplayDuration()); + binding.dpminiprogress.setActivated(Setting.isDisplayMiniProgress()); setTrackVisible(); setScaleText(); setParse(); @@ -123,6 +124,7 @@ public class ControlDialog extends BaseDialog implements ParseAdapter.OnClickLis binding.dptime.setOnClickListener(v -> displayTime()); binding.dpspeed.setOnClickListener(v -> displaySpeed()); binding.dpduration.setOnClickListener(v -> displayDuration()); + binding.dpminiprogress.setOnClickListener(v -> displayMiniProgress()); } private void displayTime() { @@ -146,6 +148,13 @@ public class ControlDialog extends BaseDialog implements ParseAdapter.OnClickLis binding.dpduration.setActivated(!display); } + private void displayMiniProgress() { + boolean display = Setting.isDisplayMiniProgress(); + parent.display.progress.setVisibility(!display ? View.VISIBLE : View.GONE); + Setting.putDisplayMiniProgress(!display); + binding.dpminiprogress.setActivated(!display); + } + private void onTimer(View view) { App.post(() -> TimerDialog.create().show(activity), 200); dismiss(); diff --git a/app/src/mobile/res/layout/dialog_control.xml b/app/src/mobile/res/layout/dialog_control.xml index 2ab9e661c..97acc5e21 100644 --- a/app/src/mobile/res/layout/dialog_control.xml +++ b/app/src/mobile/res/layout/dialog_control.xml @@ -282,11 +282,21 @@ android:id="@+id/dpduration" android:layout_width="wrap_content" android:layout_height="wrap_content" + android:layout_marginEnd="8dp" android:background="@drawable/shape_accent" android:text="@string/play_duration" android:textColor="@color/control" android:textSize="14sp" /> + + @@ -50,4 +49,17 @@ android:textSize="12sp" tools:text="10MB/S"/> + + \ No newline at end of file