Fix exo bug

okjack
okjack 2 years ago
parent 8ea3414855
commit 8f7d5b30c0
  1. 7
      app/src/leanback/java/com/fongmi/android/tv/ui/activity/CastActivity.java
  2. 7
      app/src/leanback/java/com/fongmi/android/tv/ui/activity/LiveActivity.java
  3. 7
      app/src/leanback/java/com/fongmi/android/tv/ui/activity/VideoActivity.java
  4. 4
      app/src/main/java/com/fongmi/android/tv/event/ErrorEvent.java
  5. 7
      app/src/mobile/java/com/fongmi/android/tv/ui/activity/LiveActivity.java
  6. 7
      app/src/mobile/java/com/fongmi/android/tv/ui/activity/VideoActivity.java

@ -14,6 +14,7 @@ import androidx.annotation.Dimension;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.media3.common.C;
import androidx.media3.common.PlaybackException;
import androidx.media3.common.Player;
import androidx.media3.ui.PlayerView;
import androidx.viewbinding.ViewBinding;
@ -372,12 +373,12 @@ public class CastActivity extends BaseActivity implements CustomKeyDownCast.List
public void onErrorEvent(ErrorEvent event) {
if (mPlayers.addRetry() > event.getRetry()) onError(event);
else if (event.isDecode() && mPlayers.canToggleDecode()) onDecode(false);
else if (event.isFormat() && mPlayers.isExo()) onErrorFormat(event);
else if (event.isExo() && mPlayers.isExo()) onExoCheck(event);
else onReset();
}
private void onErrorFormat(ErrorEvent event) {
mPlayers.setFormat(ExoUtil.getMimeType(event.getCode()));
private void onExoCheck(ErrorEvent event) {
if (event.getCode() == PlaybackException.ERROR_CODE_IO_UNSPECIFIED || event.getCode() >= PlaybackException.ERROR_CODE_PARSING_CONTAINER_MALFORMED && event.getCode() <= PlaybackException.ERROR_CODE_PARSING_MANIFEST_UNSUPPORTED) mPlayers.setFormat(ExoUtil.getMimeType(event.getCode()));
mPlayers.setMediaSource();
}

@ -15,6 +15,7 @@ import androidx.leanback.widget.ItemBridgeAdapter;
import androidx.leanback.widget.OnChildViewHolderSelectedListener;
import androidx.lifecycle.ViewModelProvider;
import androidx.media3.common.C;
import androidx.media3.common.PlaybackException;
import androidx.media3.common.Player;
import androidx.media3.ui.PlayerView;
import androidx.recyclerview.widget.RecyclerView;
@ -818,12 +819,12 @@ public class LiveActivity extends BaseActivity implements Clock.Callback, GroupP
if (addErrorCount() > 20) onErrorEnd(event);
else if (mPlayers.addRetry() > event.getRetry()) checkError(event);
else if (event.isDecode() && mPlayers.canToggleDecode()) onDecode(false);
else if (event.isFormat() && mPlayers.isExo()) onErrorFormat(event);
else if (event.isExo() && mPlayers.isExo()) onExoCheck(event);
else fetch();
}
private void onErrorFormat(ErrorEvent event) {
mPlayers.setFormat(ExoUtil.getMimeType(event.getCode()));
private void onExoCheck(ErrorEvent event) {
if (event.getCode() == PlaybackException.ERROR_CODE_IO_UNSPECIFIED || event.getCode() >= PlaybackException.ERROR_CODE_PARSING_CONTAINER_MALFORMED && event.getCode() <= PlaybackException.ERROR_CODE_PARSING_MANIFEST_UNSUPPORTED) mPlayers.setFormat(ExoUtil.getMimeType(event.getCode()));
mPlayers.setMediaSource();
}

@ -28,6 +28,7 @@ import androidx.leanback.widget.ItemBridgeAdapter;
import androidx.leanback.widget.OnChildViewHolderSelectedListener;
import androidx.lifecycle.ViewModelProvider;
import androidx.media3.common.C;
import androidx.media3.common.PlaybackException;
import androidx.media3.common.Player;
import androidx.media3.ui.PlayerView;
import androidx.recyclerview.widget.RecyclerView;
@ -1434,12 +1435,12 @@ public class VideoActivity extends BaseActivity implements CustomKeyDownVod.List
if (addErrorCount() > 20) onErrorEnd(event);
else if (mPlayers.addRetry() > event.getRetry()) checkError(event);
else if (event.isDecode() && mPlayers.canToggleDecode()) onDecode(false);
else if (event.isFormat() && mPlayers.isExo()) onErrorFormat(event);
else if (event.isExo() && mPlayers.isExo()) onExoCheck(event);
else onRefresh();
}
private void onErrorFormat(ErrorEvent event) {
mPlayers.setFormat(ExoUtil.getMimeType(event.getCode()));
private void onExoCheck(ErrorEvent event) {
if (event.getCode() == PlaybackException.ERROR_CODE_IO_UNSPECIFIED || event.getCode() >= PlaybackException.ERROR_CODE_PARSING_CONTAINER_MALFORMED && event.getCode() <= PlaybackException.ERROR_CODE_PARSING_MANIFEST_UNSUPPORTED) mPlayers.setFormat(ExoUtil.getMimeType(event.getCode()));
mPlayers.setMediaSource();
}

@ -69,8 +69,8 @@ public class ErrorEvent {
return code / 1000 == 4;
}
public boolean isFormat() {
return code / 1000 == 3;
public boolean isExo() {
return code / 1000 == 2 || code / 1000 == 3 || code / 1000 == 4;
}
public String getMsg() {

@ -17,6 +17,7 @@ import androidx.annotation.Nullable;
import androidx.lifecycle.Observer;
import androidx.lifecycle.ViewModelProvider;
import androidx.media3.common.C;
import androidx.media3.common.PlaybackException;
import androidx.media3.common.Player;
import androidx.media3.ui.PlayerView;
import androidx.viewbinding.ViewBinding;
@ -884,12 +885,12 @@ public class LiveActivity extends BaseActivity implements Clock.Callback, Custom
if (addErrorCount() > 20) onErrorEnd(event);
else if (mPlayers.addRetry() > event.getRetry()) checkError(event);
else if (event.isDecode() && mPlayers.canToggleDecode()) onDecode(false);
else if (event.isFormat() && mPlayers.isExo()) onErrorFormat(event);
else if (event.isExo() && mPlayers.isExo()) onExoCheck(event);
else fetch();
}
private void onErrorFormat(ErrorEvent event) {
mPlayers.setFormat(ExoUtil.getMimeType(event.getCode()));
private void onExoCheck(ErrorEvent event) {
if (event.getCode() == PlaybackException.ERROR_CODE_IO_UNSPECIFIED || event.getCode() >= PlaybackException.ERROR_CODE_PARSING_CONTAINER_MALFORMED && event.getCode() <= PlaybackException.ERROR_CODE_PARSING_MANIFEST_UNSUPPORTED) mPlayers.setFormat(ExoUtil.getMimeType(event.getCode()));
mPlayers.setMediaSource();
}

@ -32,6 +32,7 @@ import androidx.fragment.app.FragmentActivity;
import androidx.lifecycle.Observer;
import androidx.lifecycle.ViewModelProvider;
import androidx.media3.common.C;
import androidx.media3.common.PlaybackException;
import androidx.media3.common.Player;
import androidx.media3.ui.PlayerView;
import androidx.recyclerview.widget.RecyclerView;
@ -1385,12 +1386,12 @@ public class VideoActivity extends BaseActivity implements Clock.Callback, Custo
if (addErrorCount() > 20) onErrorEnd(event);
else if (mPlayers.addRetry() > event.getRetry()) checkError(event);
else if (event.isDecode() && mPlayers.canToggleDecode()) onDecode(false);
else if (event.isFormat() && mPlayers.isExo()) onErrorFormat(event);
else if (event.isExo() && mPlayers.isExo()) onExoCheck(event);
else onRefresh();
}
private void onErrorFormat(ErrorEvent event) {
mPlayers.setFormat(ExoUtil.getMimeType(event.getCode()));
private void onExoCheck(ErrorEvent event) {
if (event.getCode() == PlaybackException.ERROR_CODE_IO_UNSPECIFIED || event.getCode() >= PlaybackException.ERROR_CODE_PARSING_CONTAINER_MALFORMED && event.getCode() <= PlaybackException.ERROR_CODE_PARSING_MANIFEST_UNSUPPORTED) mPlayers.setFormat(ExoUtil.getMimeType(event.getCode()));
mPlayers.setMediaSource();
}

Loading…
Cancel
Save