diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/LiveActivity.java b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/LiveActivity.java index ea9eb3569..2c0151e55 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/LiveActivity.java +++ b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/LiveActivity.java @@ -213,7 +213,7 @@ public class LiveActivity extends BaseActivity implements GroupPresenter.OnClick private void setViewModel() { mViewModel = new ViewModelProvider(this).get(LiveViewModel.class); - mViewModel.channel.observe(this, result -> mPlayers.start(result)); + mViewModel.channel.observe(this, result -> mPlayers.start(result, getHome().getTimeout())); mViewModel.live.observe(this, live -> { hideProgress(); setGroup(live); diff --git a/app/src/main/java/com/fongmi/android/tv/bean/Live.java b/app/src/main/java/com/fongmi/android/tv/bean/Live.java index 3dc859624..f2b8070e9 100644 --- a/app/src/main/java/com/fongmi/android/tv/bean/Live.java +++ b/app/src/main/java/com/fongmi/android/tv/bean/Live.java @@ -3,6 +3,7 @@ package com.fongmi.android.tv.bean; import android.net.Uri; import android.text.TextUtils; +import com.fongmi.android.tv.Constant; import com.google.gson.Gson; import com.google.gson.JsonElement; import com.google.gson.annotations.SerializedName; @@ -36,6 +37,8 @@ public class Live { private String ua; @SerializedName("referer") private String referer; + @SerializedName("timeout") + private Integer timeout; @SerializedName("header") private JsonElement header; @SerializedName("playerType") @@ -112,6 +115,10 @@ public class Live { return TextUtils.isEmpty(referer) ? "" : referer; } + public Integer getTimeout() { + return timeout == null ? Constant.TIMEOUT_PLAY : Math.max(timeout, 1) * 1000; + } + public JsonElement getHeader() { return header; } diff --git a/app/src/main/java/com/fongmi/android/tv/bean/Site.java b/app/src/main/java/com/fongmi/android/tv/bean/Site.java index 9d8b51730..d1eb83c07 100644 --- a/app/src/main/java/com/fongmi/android/tv/bean/Site.java +++ b/app/src/main/java/com/fongmi/android/tv/bean/Site.java @@ -114,7 +114,7 @@ public class Site { } public Integer getTimeout() { - return timeout == null ? Constant.TIMEOUT_PLAY : timeout; + return timeout == null ? Constant.TIMEOUT_PLAY : Math.max(timeout, 1) * 1000; } public int getPlayerType() { 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 1ce285471..2be1cc75e 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 @@ -11,7 +11,6 @@ import androidx.media3.exoplayer.analytics.AnalyticsListener; import androidx.media3.ui.PlayerView; import com.fongmi.android.tv.App; -import com.fongmi.android.tv.Constant; import com.fongmi.android.tv.R; import com.fongmi.android.tv.Setting; import com.fongmi.android.tv.bean.Channel; @@ -74,7 +73,6 @@ public class Players implements Player.Listener, IMediaPlayer.Listener, Analytic decode = Setting.getDecode(); builder = new StringBuilder(); runnable = ErrorEvent::timeout; - timeout = Constant.TIMEOUT_PLAY; formatter = new Formatter(builder, Locale.getDefault()); return this; } @@ -292,10 +290,11 @@ public class Players implements Player.Listener, IMediaPlayer.Listener, Analytic } } - public void start(Channel channel) { + public void start(Channel channel, int timeout) { if (channel.getUrl().isEmpty()) { ErrorEvent.url(); } else { + this.timeout = timeout; setMediaSource(channel); } } diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/activity/LiveActivity.java b/app/src/mobile/java/com/fongmi/android/tv/ui/activity/LiveActivity.java index c8d1b3cab..da566506a 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/ui/activity/LiveActivity.java +++ b/app/src/mobile/java/com/fongmi/android/tv/ui/activity/LiveActivity.java @@ -215,7 +215,7 @@ public class LiveActivity extends BaseActivity implements CustomKeyDownLive.List private void setViewModel() { mViewModel = new ViewModelProvider(this).get(LiveViewModel.class); - mViewModel.channel.observe(this, result -> mPlayers.start(result)); + mViewModel.channel.observe(this, result -> mPlayers.start(result, getHome().getTimeout())); mViewModel.live.observe(this, live -> { hideProgress(); setGroup(live);