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 0329cace5..04c3620be 100644
--- a/app/src/main/java/com/fongmi/android/tv/Setting.java
+++ b/app/src/main/java/com/fongmi/android/tv/Setting.java
@@ -285,6 +285,14 @@ public class Setting {
return Math.min(Math.max(Prefers.getInt("danmu_alpha", 90), 10), 100);
}
+ public static void putDanmuSync(boolean sync) {
+ Prefers.put("danmu_sync", sync);
+ }
+
+ public static boolean isDanmuSync() {
+ return Prefers.getBoolean("danmu_sync", false);
+ }
+
public static void putDanmuAlpha(int alpha) {
Prefers.put("danmu_alpha", alpha);
}
diff --git a/app/src/main/java/com/fongmi/android/tv/player/Players.java b/app/src/main/java/com/fongmi/android/tv/player/Players.java
index c9fd7a901..6e814c670 100644
--- a/app/src/main/java/com/fongmi/android/tv/player/Players.java
+++ b/app/src/main/java/com/fongmi/android/tv/player/Players.java
@@ -85,6 +85,7 @@ public class Players implements Player.Listener, IMediaPlayer.Listener, Analytic
private int player;
private int error;
private int retry;
+ private boolean danmuSync;
public static boolean isExo(int type) {
return type == EXO;
@@ -108,6 +109,7 @@ public class Players implements Player.Listener, IMediaPlayer.Listener, Analytic
builder = new StringBuilder();
runnable = ErrorEvent::timeout;
formatter = new Formatter(builder, Locale.getDefault());
+ danmuSync = Setting.isDanmuSync();
createSession(activity);
return this;
}
@@ -675,7 +677,8 @@ public class Players implements Player.Listener, IMediaPlayer.Listener, Analytic
@Override
public void updateTimer(DanmakuTimer timer) {
- if (speed != 1) timer.add((long) (timer.lastInterval() * (speed - 1)));
+ if (danmuSync) App.post(() -> timer.update(getPosition()));
+ else if (speed != 1) timer.add((long) (timer.lastInterval() * (speed - 1)));
}
@Override
diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml
index 2bcf39bd4..b5d1ffd9a 100644
--- a/app/src/main/res/values-zh-rCN/strings.xml
+++ b/app/src/main/res/values-zh-rCN/strings.xml
@@ -93,6 +93,7 @@
弹幕大小
弹幕行数
弹幕透明
+ 弹幕同步
后台播放
线路播放
选集样式
diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml
index 10b5f45b6..454c092f8 100644
--- a/app/src/main/res/values-zh-rTW/strings.xml
+++ b/app/src/main/res/values-zh-rTW/strings.xml
@@ -93,6 +93,7 @@
彈幕大小
彈幕行數
彈幕透明
+ 彈幕同步
背景播放
線路播放
選集樣式
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 44bb9d253..23a597076 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -93,6 +93,7 @@
Danmu size
Danmu line
Danmu alpha
+ Danmu sync
Background play
Flag play
Episode style
diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/fragment/SettingCustomFragment.java b/app/src/mobile/java/com/fongmi/android/tv/ui/fragment/SettingCustomFragment.java
index 0a5e626b4..bfb8b2db4 100644
--- a/app/src/mobile/java/com/fongmi/android/tv/ui/fragment/SettingCustomFragment.java
+++ b/app/src/mobile/java/com/fongmi/android/tv/ui/fragment/SettingCustomFragment.java
@@ -37,11 +37,19 @@ public class SettingCustomFragment extends BaseFragment {
@Override
protected void initView() {
mBinding.sizeText.setText((size = ResUtil.getStringArray(R.array.select_size))[Setting.getSize()]);
+ mBinding.danmuSyncText.setText(getSwitch(Setting.isDanmuSync()));
}
@Override
protected void initEvent() {
+ mBinding.title.setOnLongClickListener(this::onTitle);
mBinding.size.setOnClickListener(this::setSize);
+ mBinding.danmuSync.setOnClickListener(this::setDanmuSync);
+ }
+
+ private boolean onTitle(View view) {
+ mBinding.danmuSync.setVisibility(View.VISIBLE);
+ return true;
}
private void setSize(View view) {
@@ -53,5 +61,10 @@ public class SettingCustomFragment extends BaseFragment {
}).show();
}
+ private void setDanmuSync(View view) {
+ Setting.putDanmuSync(!Setting.isDanmuSync());
+ mBinding.danmuSyncText.setText(getSwitch(Setting.isDanmuSync()));
+ }
+
}
diff --git a/app/src/mobile/res/layout/fragment_setting_custom.xml b/app/src/mobile/res/layout/fragment_setting_custom.xml
index f90c7554c..97b3852c2 100644
--- a/app/src/mobile/res/layout/fragment_setting_custom.xml
+++ b/app/src/mobile/res/layout/fragment_setting_custom.xml
@@ -14,6 +14,7 @@
app:liftOnScrollColor="@color/transparent">
+
+
+
+
+
+
+
+
\ No newline at end of file