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 8b0ace1d6..3999e48c1 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 @@ -859,9 +859,12 @@ public class VideoActivity extends BaseActivity implements CustomKeyDownVod.List private boolean onChoose() { Intent intent = new Intent(Intent.ACTION_VIEW); - intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + intent.putExtra("return_result", true); + intent.putExtra("headers", mPlayers.getHeaderArray()); + intent.putExtra("position", (int) mPlayers.getPosition()); + intent.putExtra("title", mBinding.widget.title.getText()); intent.setDataAndType(Uri.parse(mPlayers.getUrl()), "video/*"); - startActivity(Intent.createChooser(intent, null)); + startActivityForResult(Intent.createChooser(intent, null), 1001); return true; } @@ -1496,8 +1499,15 @@ public class VideoActivity extends BaseActivity implements CustomKeyDownVod.List protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { super.onActivityResult(requestCode, resultCode, data); if (resultCode != RESULT_OK) return; - setResult(RESULT_OK); - finish(); + switch (requestCode) { + case 1000: + setResult(RESULT_OK); + finish(); + break; + case 1001: + mPlayers.checkData(data); + break; + } } @Override diff --git a/app/src/main/java/com/fongmi/android/tv/event/ActionEvent.java b/app/src/main/java/com/fongmi/android/tv/event/ActionEvent.java index 672d26480..9c866c3d0 100644 --- a/app/src/main/java/com/fongmi/android/tv/event/ActionEvent.java +++ b/app/src/main/java/com/fongmi/android/tv/event/ActionEvent.java @@ -20,7 +20,11 @@ public class ActionEvent { } public static void update() { - EventBus.getDefault().post(new ActionEvent(UPDATE)); + send(UPDATE); + } + + public static void next() { + send(NEXT); } public ActionEvent(String action) { 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 e70858c39..c7390705e 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 @@ -24,6 +24,7 @@ import com.fongmi.android.tv.Setting; import com.fongmi.android.tv.bean.Channel; import com.fongmi.android.tv.bean.Result; import com.fongmi.android.tv.bean.Track; +import com.fongmi.android.tv.event.ActionEvent; import com.fongmi.android.tv.event.ErrorEvent; import com.fongmi.android.tv.event.PlayerEvent; import com.fongmi.android.tv.impl.ParseCallback; @@ -36,6 +37,8 @@ import com.github.catvod.utils.Path; import com.google.common.net.HttpHeaders; import com.orhanobut.logger.Logger; +import java.util.ArrayList; +import java.util.Arrays; import java.util.Formatter; import java.util.List; import java.util.Locale; @@ -146,6 +149,12 @@ public class Players implements Player.Listener, IMediaPlayer.Listener, Analytic return headers; } + public String[] getHeaderArray() { + List list = new ArrayList<>(); + for (Map.Entry entry : getHeaders().entrySet()) list.addAll(Arrays.asList(entry.getKey(), entry.getValue())); + return list.toArray(new String[0]); + } + public String getUrl() { return url; } @@ -522,6 +531,18 @@ public class Players implements Player.Listener, IMediaPlayer.Listener, Analytic return headers; } + public void checkData(Intent data) { + try { + if (data == null || data.getExtras() == null) return; + int position = data.getExtras().getInt("position", 0); + String endBy = data.getExtras().getString("end_by", ""); + if (endBy.equals("playback_completion")) ActionEvent.next(); + if (endBy.equals("user")) seekTo(position, true); + } catch (Exception e) { + e.printStackTrace(); + } + } + @Override public void onParseSuccess(Map headers, String url, String from) { setMediaSource(headers, url); 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 df47021ff..788934b8a 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 @@ -155,7 +155,6 @@ public class VideoActivity extends BaseActivity implements Clock.Callback, Custo private Runnable mR3; private Runnable mR4; private Clock mClock; - private String url; private PiP mPiP; public static void push(FragmentActivity activity, Uri uri) { @@ -725,9 +724,12 @@ public class VideoActivity extends BaseActivity implements Clock.Callback, Custo private boolean onChoose() { Intent intent = new Intent(Intent.ACTION_VIEW); - intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + intent.putExtra("return_result", true); + intent.putExtra("headers", mPlayers.getHeaderArray()); + intent.putExtra("position", (int) mPlayers.getPosition()); + intent.putExtra("title", mBinding.control.title.getText()); intent.setDataAndType(Uri.parse(mPlayers.getUrl()), "video/*"); - startActivity(Intent.createChooser(intent, null)); + startActivityForResult(Intent.createChooser(intent, null), 1001); setRedirect(true); return true; } @@ -1590,6 +1592,12 @@ public class VideoActivity extends BaseActivity implements Clock.Callback, Custo } } + @Override + protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { + super.onActivityResult(requestCode, resultCode, data); + if (resultCode == RESULT_OK) mPlayers.checkData(data); + } + @Override protected void onUserLeaveHint() { super.onUserLeaveHint();