Support sync mx player position

pull/171/head
FongMi 2 years ago
parent 799cee46ad
commit 77606b64a3
  1. 18
      app/src/leanback/java/com/fongmi/android/tv/ui/activity/VideoActivity.java
  2. 6
      app/src/main/java/com/fongmi/android/tv/event/ActionEvent.java
  3. 21
      app/src/main/java/com/fongmi/android/tv/player/Players.java
  4. 14
      app/src/mobile/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

@ -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) {

@ -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<String> list = new ArrayList<>();
for (Map.Entry<String, String> 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<String, String> headers, String url, String from) {
setMediaSource(headers, url);

@ -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();

Loading…
Cancel
Save