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 8652d4c89..f5596a26a 100644
--- a/app/src/main/java/com/fongmi/android/tv/Setting.java
+++ b/app/src/main/java/com/fongmi/android/tv/Setting.java
@@ -286,14 +286,6 @@ 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 620435b3d..8f1059b9a 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
@@ -81,11 +81,9 @@ public class Players implements Player.Listener, IMediaPlayer.Listener, Analytic
private Sub sub;
private long position;
- private float speed;
private int player;
private int error;
private int retry;
- private boolean danmuSync;
public static boolean isExo(int type) {
return type == EXO;
@@ -112,7 +110,6 @@ 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;
}
@@ -308,8 +305,8 @@ public class Players implements Player.Listener, IMediaPlayer.Listener, Analytic
}
public String setSpeed(float speed) {
- if (exoPlayer != null && !Setting.isTunnel()) exoPlayer.setPlaybackSpeed(this.speed = speed);
- if (ijkPlayer != null) ijkPlayer.setSpeed(this.speed = speed);
+ if (exoPlayer != null && !Setting.isTunnel()) exoPlayer.setPlaybackSpeed(speed);
+ if (ijkPlayer != null) ijkPlayer.setSpeed(speed);
return getSpeedText();
}
@@ -689,8 +686,7 @@ public class Players implements Player.Listener, IMediaPlayer.Listener, Analytic
@Override
public void updateTimer(DanmakuTimer timer) {
- 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/java/com/fongmi/android/tv/player/danmu/Parser.java b/app/src/main/java/com/fongmi/android/tv/player/danmu/Parser.java
index cf6d8b5d5..72318e239 100644
--- a/app/src/main/java/com/fongmi/android/tv/player/danmu/Parser.java
+++ b/app/src/main/java/com/fongmi/android/tv/player/danmu/Parser.java
@@ -24,10 +24,8 @@ import master.flame.danmaku.danmaku.util.DanmakuUtils;
public class Parser extends BaseDanmakuParser {
private final Danmu danmu;
- private BaseDanmaku item;
private float scaleX;
private float scaleY;
- private int index;
public Parser(String path) {
this.danmu = Danmu.fromXml(getContent(path));
@@ -45,11 +43,9 @@ public class Parser extends BaseDanmakuParser {
for (Danmu.Data data : danmu.getData()) {
String[] values = data.getParam().split(",");
if (values.length < 4) continue;
- setParam(values);
- setText(data.getText());
- synchronized (result.obtainSynchronizer()) {
- result.addItem(item);
- }
+ BaseDanmaku item = createDanmaku(values);
+ setText(item, data.getText());
+ result.addItem(item);
}
return result;
}
@@ -62,27 +58,27 @@ public class Parser extends BaseDanmakuParser {
return this;
}
- private void setParam(String[] values) {
+ private BaseDanmaku createDanmaku(String[] values) {
int type = Integer.parseInt(values[1]);
long time = (long) (Float.parseFloat(values[0]) * 1000);
float size = Float.parseFloat(values[2]) * (mDispDensity - 0.6f);
int color = (int) ((0x00000000ff000000L | Long.parseLong(values[3])) & 0x00000000ffffffffL);
- item = mContext.mDanmakuFactory.createDanmaku(type, mContext);
+ BaseDanmaku item = mContext.mDanmakuFactory.createDanmaku(type, mContext);
item.setTime(time);
item.setTimer(mTimer);
item.textSize = size;
item.textColor = color;
item.textShadowColor = color <= Color.BLACK ? Color.WHITE : Color.BLACK;
item.flags = mContext.mGlobalFlagValues;
+ return item;
}
- private void setText(String text) {
- item.index = index++;
+ private void setText(BaseDanmaku item, String text) {
DanmakuUtils.fillText(item, decodeXmlString(text));
- if (item.getType() == BaseDanmaku.TYPE_SPECIAL && text.startsWith("[") && text.endsWith("]")) setSpecial();
+ if (item.getType() == BaseDanmaku.TYPE_SPECIAL && text.startsWith("[") && text.endsWith("]")) setSpecial(item);
}
- private void setSpecial() {
+ private void setSpecial(BaseDanmaku item) {
String[] textArr = null;
try {
JSONArray jsonArray = new JSONArray(item.text);
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 9e103adc3..dce98d730 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
@@ -45,7 +45,6 @@ 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()));
mBinding.speedText.setText(getSpeedText());
mBinding.incognitoText.setText(getSwitch(Setting.isIncognito()));
mBinding.aggregatedSearchText.setText(getSwitch(Setting.isAggregatedSearch()));
@@ -57,9 +56,7 @@ public class SettingCustomFragment extends BaseFragment {
@Override
protected void initEvent() {
- mBinding.title.setOnLongClickListener(this::onTitle);
mBinding.size.setOnClickListener(this::setSize);
- mBinding.danmuSync.setOnClickListener(this::setDanmuSync);
mBinding.speed.setOnClickListener(this::setSpeed);
mBinding.speed.setOnLongClickListener(this::resetSpeed);
mBinding.incognito.setOnClickListener(this::setIncognito);
@@ -72,11 +69,6 @@ public class SettingCustomFragment extends BaseFragment {
}
- private boolean onTitle(View view) {
- mBinding.danmuSync.setVisibility(View.VISIBLE);
- return true;
- }
-
private void setSize(View view) {
new MaterialAlertDialogBuilder(getActivity()).setTitle(R.string.setting_size).setNegativeButton(R.string.dialog_negative, null).setSingleChoiceItems(size, Setting.getSize(), (dialog, which) -> {
mBinding.sizeText.setText(size[which]);
@@ -86,11 +78,6 @@ public class SettingCustomFragment extends BaseFragment {
}).show();
}
- private void setDanmuSync(View view) {
- Setting.putDanmuSync(!Setting.isDanmuSync());
- mBinding.danmuSyncText.setText(getSwitch(Setting.isDanmuSync()));
- }
-
private String getSpeedText() {
return String.format(Locale.getDefault(), "%.2f", Setting.getPlaySpeed());
}
diff --git a/app/src/mobile/res/layout/fragment_setting_custom.xml b/app/src/mobile/res/layout/fragment_setting_custom.xml
index b7cb91fed..1a8c0090b 100644
--- a/app/src/mobile/res/layout/fragment_setting_custom.xml
+++ b/app/src/mobile/res/layout/fragment_setting_custom.xml
@@ -70,34 +70,6 @@
-
-
-
-
-
-
-
-