diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/CastActivity.java b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/CastActivity.java
index 522b385d7..507d81efb 100644
--- a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/CastActivity.java
+++ b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/CastActivity.java
@@ -40,6 +40,7 @@ import com.fongmi.android.tv.player.exo.ExoUtil;
import com.fongmi.android.tv.player.Players;
import com.fongmi.android.tv.ui.base.BaseActivity;
import com.fongmi.android.tv.ui.custom.CustomKeyDownCast;
+import com.fongmi.android.tv.ui.dialog.PlayerDialog;
import com.fongmi.android.tv.ui.dialog.TrackDialog;
import com.fongmi.android.tv.utils.Clock;
import com.fongmi.android.tv.utils.KeyUtil;
@@ -52,7 +53,7 @@ import org.greenrobot.eventbus.ThreadMode;
import tv.danmaku.ijk.media.player.ui.IjkVideoView;
-public class CastActivity extends BaseActivity implements CustomKeyDownCast.Listener, TrackDialog.Listener, RenderControl, ServiceConnection, Clock.Callback, SubtitleCallback {
+public class CastActivity extends BaseActivity implements CustomKeyDownCast.Listener, TrackDialog.Listener, PlayerDialog.Listener, RenderControl, ServiceConnection, Clock.Callback, SubtitleCallback {
private ActivityCastBinding mBinding;
private DLNARendererService mService;
@@ -215,9 +216,8 @@ public class CastActivity extends BaseActivity implements CustomKeyDownCast.List
}
private void onPlayer() {
- mPlayers.togglePlayer();
- setPlayerView();
- onReset();
+ PlayerDialog.create().select(mPlayers.getPlayer()).title(mBinding.widget.title.getText().toString()).show(this);
+ hideControl();
}
private void onDecode() {
@@ -539,6 +539,19 @@ public class CastActivity extends BaseActivity implements CustomKeyDownCast.List
getIjk().getSubtitleView().setFixedTextSize(Dimension.SP, size);
}
+ @Override
+ public void onPlayerClick(Integer item) {
+ mPlayers.setPlayer(item);
+ setPlayerView();
+ onReset();
+ }
+
+ @Override
+ public void onPlayerShare(String title) {
+ if (mPlayers.isEmpty()) return;
+ mPlayers.choose(this, mBinding.widget.title.getText());
+ }
+
@Override
protected void onResume() {
super.onResume();
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 14b9d5631..51fdb561c 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
@@ -52,6 +52,7 @@ import com.fongmi.android.tv.ui.custom.CustomKeyDownLive;
import com.fongmi.android.tv.ui.custom.CustomLiveListView;
import com.fongmi.android.tv.ui.dialog.LiveDialog;
import com.fongmi.android.tv.ui.dialog.PassDialog;
+import com.fongmi.android.tv.ui.dialog.PlayerDialog;
import com.fongmi.android.tv.ui.dialog.SubtitleDialog;
import com.fongmi.android.tv.ui.dialog.TrackDialog;
import com.fongmi.android.tv.ui.presenter.ChannelPresenter;
@@ -73,7 +74,7 @@ import java.util.List;
import tv.danmaku.ijk.media.player.ui.IjkVideoView;
-public class LiveActivity extends BaseActivity implements Clock.Callback, GroupPresenter.OnClickListener, ChannelPresenter.OnClickListener, EpgDataPresenter.OnClickListener, CustomKeyDownLive.Listener, CustomLiveListView.Callback, TrackDialog.Listener, PassCallback, LiveCallback, SubtitleCallback {
+public class LiveActivity extends BaseActivity implements Clock.Callback, GroupPresenter.OnClickListener, ChannelPresenter.OnClickListener, EpgDataPresenter.OnClickListener, CustomKeyDownLive.Listener, CustomLiveListView.Callback, TrackDialog.Listener, PlayerDialog.Listener, PassCallback, LiveCallback, SubtitleCallback {
private ActivityLiveBinding mBinding;
private ArrayObjectAdapter mChannelAdapter;
@@ -424,10 +425,8 @@ public class LiveActivity extends BaseActivity implements Clock.Callback, GroupP
}
private void onPlayer() {
- mPlayers.togglePlayer();
- Setting.putLivePlayer(mPlayers.getPlayer());
- setPlayerView();
- fetch();
+ PlayerDialog.create().select(mPlayers.getPlayer()).title(mBinding.widget.title.getText().toString()).show(this);
+ hideControl();
}
private void onDecode() {
@@ -1050,6 +1049,19 @@ public class LiveActivity extends BaseActivity implements Clock.Callback, GroupP
getIjk().getSubtitleView().setFixedTextSize(Dimension.SP, size);
}
+ @Override
+ public void onPlayerClick(Integer item) {
+ mPlayers.setPlayer(item);
+ Setting.putLivePlayer(mPlayers.getPlayer());
+ setPlayerView();
+ fetch();
+ }
+
+ @Override
+ public void onPlayerShare(String title) {
+ this.onChoose();
+ }
+
@Override
protected void onResume() {
super.onResume();
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 75714c695..dd654fe7b 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
@@ -71,6 +71,7 @@ import com.fongmi.android.tv.ui.custom.CustomMovement;
import com.fongmi.android.tv.ui.dialog.DescDialog;
import com.fongmi.android.tv.ui.dialog.EpisodeDialog;
import com.fongmi.android.tv.ui.dialog.FileChooserDialog;
+import com.fongmi.android.tv.ui.dialog.PlayerDialog;
import com.fongmi.android.tv.ui.dialog.TrackDialog;
import com.fongmi.android.tv.ui.presenter.ArrayPresenter;
import com.fongmi.android.tv.ui.presenter.EpisodePresenter;
@@ -116,7 +117,7 @@ import okhttp3.Call;
import okhttp3.Response;
import tv.danmaku.ijk.media.player.ui.IjkVideoView;
-public class VideoActivity extends BaseActivity implements CustomKeyDownVod.Listener, TrackDialog.Listener, TrackDialog.ChooserListener, ArrayPresenter.OnClickListener, Clock.Callback, SubtitleCallback {
+public class VideoActivity extends BaseActivity implements CustomKeyDownVod.Listener, TrackDialog.Listener, TrackDialog.ChooserListener, PlayerDialog.Listener, ArrayPresenter.OnClickListener, Clock.Callback, SubtitleCallback {
private ActivityVideoBinding mBinding;
private ViewGroup.LayoutParams mFrameParams;
@@ -1065,10 +1066,8 @@ public class VideoActivity extends BaseActivity implements CustomKeyDownVod.List
}
private void onPlayer() {
- mPlayers.togglePlayer();
- setPlayerView();
- setDecodeView();
- onRefresh();
+ PlayerDialog.create().select(mPlayers.getPlayer()).title(mBinding.widget.title.getText().toString()).show(this);
+ hideControl();
}
private void onDecode() {
@@ -1803,6 +1802,19 @@ public class VideoActivity extends BaseActivity implements CustomKeyDownVod.List
getIjk().getSubtitleView().setFixedTextSize(Dimension.SP, size);
}
+ @Override
+ public void onPlayerClick(Integer item) {
+ mPlayers.setPlayer(item);
+ setPlayerView();
+ setDecodeView();
+ onRefresh();
+ }
+
+ @Override
+ public void onPlayerShare(String title) {
+ this.onChoose();
+ }
+
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
diff --git a/app/src/leanback/res/drawable/ic_action_share.xml b/app/src/leanback/res/drawable/ic_action_share.xml
new file mode 100644
index 000000000..76368f3e8
--- /dev/null
+++ b/app/src/leanback/res/drawable/ic_action_share.xml
@@ -0,0 +1,10 @@
+
+
+
diff --git a/app/src/leanback/res/layout/adapter_player.xml b/app/src/leanback/res/layout/adapter_player.xml
new file mode 100644
index 000000000..18e264d1e
--- /dev/null
+++ b/app/src/leanback/res/layout/adapter_player.xml
@@ -0,0 +1,15 @@
+
+
\ No newline at end of file
diff --git a/app/src/leanback/res/layout/dialog_player.xml b/app/src/leanback/res/layout/dialog_player.xml
new file mode 100644
index 000000000..2c7575d3e
--- /dev/null
+++ b/app/src/leanback/res/layout/dialog_player.xml
@@ -0,0 +1,52 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/java/com/fongmi/android/tv/ui/adapter/PlayerAdapter.java b/app/src/main/java/com/fongmi/android/tv/ui/adapter/PlayerAdapter.java
new file mode 100644
index 000000000..56b5eaeff
--- /dev/null
+++ b/app/src/main/java/com/fongmi/android/tv/ui/adapter/PlayerAdapter.java
@@ -0,0 +1,78 @@
+package com.fongmi.android.tv.ui.adapter;
+
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+
+import androidx.annotation.NonNull;
+import androidx.recyclerview.widget.RecyclerView;
+
+import com.fongmi.android.tv.R;
+import com.fongmi.android.tv.databinding.AdapterPlayerBinding;
+import com.fongmi.android.tv.utils.ResUtil;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class PlayerAdapter extends RecyclerView.Adapter {
+
+ private final OnClickListener mListener;
+ private final List mItems;
+ private final String[] mPlayers;
+ private int selected;
+
+ public PlayerAdapter(OnClickListener listener) {
+ this.mListener = listener;
+ this.mPlayers = ResUtil.getStringArray(R.array.select_player);
+ this.mItems = new ArrayList<>();
+ for(int i= 0; i binding.recycler.scrollToPosition(adapter.getSelected()));
+ binding.recycler.setVisibility(adapter.getItemCount() == 0 ? View.GONE : View.VISIBLE);
+ }
+
+ @Override
+ protected void initEvent() {
+ binding.choose.setOnClickListener(this::onShare);
+ }
+
+ private void onShare(View view) {
+ listener.onPlayerShare(title);
+ dismiss();
+ }
+
+ @Override
+ public void onItemClick(Integer item) {
+ listener.onPlayerClick(item);
+ dismiss();
+ }
+
+ public interface Listener {
+
+ void onPlayerClick(Integer item);
+
+ void onPlayerShare(String title);
+
+ }
+
+ @Override
+ public void onResume() {
+ super.onResume();
+ getDialog().getWindow().setLayout(ResUtil.dp2px(320), -1);
+ }
+}
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 199ea5588..b6ac3ad5e 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
@@ -59,6 +59,7 @@ import com.fongmi.android.tv.ui.dialog.CastDialog;
import com.fongmi.android.tv.ui.dialog.InfoDialog;
import com.fongmi.android.tv.ui.dialog.LiveDialog;
import com.fongmi.android.tv.ui.dialog.PassDialog;
+import com.fongmi.android.tv.ui.dialog.PlayerDialog;
import com.fongmi.android.tv.ui.dialog.SubtitleDialog;
import com.fongmi.android.tv.ui.dialog.TrackDialog;
import com.fongmi.android.tv.utils.Biometric;
@@ -82,7 +83,7 @@ import java.util.List;
import tv.danmaku.ijk.media.player.ui.IjkVideoView;
-public class LiveActivity extends BaseActivity implements Clock.Callback, CustomKeyDownLive.Listener, TrackDialog.Listener, Biometric.Callback, PassCallback, LiveCallback, GroupAdapter.OnClickListener, ChannelAdapter.OnClickListener, EpgDataAdapter.OnClickListener, SubtitleCallback, CastDialog.Listener, InfoDialog.Listener {
+public class LiveActivity extends BaseActivity implements Clock.Callback, CustomKeyDownLive.Listener, TrackDialog.Listener, PlayerDialog.Listener, Biometric.Callback, PassCallback, LiveCallback, GroupAdapter.OnClickListener, ChannelAdapter.OnClickListener, EpgDataAdapter.OnClickListener, SubtitleCallback, CastDialog.Listener, InfoDialog.Listener {
private ActivityLiveBinding mBinding;
private ChannelAdapter mChannelAdapter;
@@ -461,11 +462,8 @@ public class LiveActivity extends BaseActivity implements Clock.Callback, Custom
}
private void onPlayer() {
- mPlayers.togglePlayer();
- Setting.putLivePlayer(mPlayers.getPlayer());
- setPlayerView();
- setR1Callback();
- fetch();
+ PlayerDialog.create().select(mPlayers.getPlayer()).title(mBinding.control.title.getText().toString()).show(this);
+ hideControl();
}
private void onDecode() {
@@ -1186,6 +1184,20 @@ public class LiveActivity extends BaseActivity implements Clock.Callback, Custom
setRedirect(true);
}
+ @Override
+ public void onPlayerClick(Integer item) {
+ mPlayers.setPlayer(item);
+ Setting.putLivePlayer(mPlayers.getPlayer());
+ setPlayerView();
+ setR1Callback();
+ fetch();
+ }
+
+ @Override
+ public void onPlayerShare(String title) {
+ this.onShare(title);
+ }
+
@Override
protected void onUserLeaveHint() {
super.onUserLeaveHint();
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 293577f23..f85cd799c 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
@@ -64,6 +64,7 @@ import com.fongmi.android.tv.event.PlayerEvent;
import com.fongmi.android.tv.event.RefreshEvent;
import com.fongmi.android.tv.impl.SubtitleCallback;
import com.fongmi.android.tv.model.SiteViewModel;
+import com.fongmi.android.tv.ui.dialog.PlayerDialog;
import com.fongmi.android.tv.utils.Downloader;
import com.fongmi.android.tv.player.exo.ExoUtil;
import com.fongmi.android.tv.player.Players;
@@ -125,7 +126,7 @@ import master.flame.danmaku.danmaku.model.IDisplayer;
import master.flame.danmaku.danmaku.model.android.DanmakuContext;
import tv.danmaku.ijk.media.player.ui.IjkVideoView;
-public class VideoActivity extends BaseActivity implements Clock.Callback, CustomKeyDownVod.Listener, TrackDialog.Listener, ControlDialog.Listener, FlagAdapter.OnClickListener, EpisodeAdapter.OnClickListener, QualityAdapter.OnClickListener, QuickAdapter.OnClickListener, ParseAdapter.OnClickListener, SubtitleCallback, CastDialog.Listener, InfoDialog.Listener {
+public class VideoActivity extends BaseActivity implements Clock.Callback, CustomKeyDownVod.Listener, TrackDialog.Listener, PlayerDialog.Listener, ControlDialog.Listener, FlagAdapter.OnClickListener, EpisodeAdapter.OnClickListener, QualityAdapter.OnClickListener, QuickAdapter.OnClickListener, ParseAdapter.OnClickListener, SubtitleCallback, CastDialog.Listener, InfoDialog.Listener {
private ActivityVideoBinding mBinding;
private ViewGroup.LayoutParams mFrameParams;
@@ -916,11 +917,8 @@ public class VideoActivity extends BaseActivity implements Clock.Callback, Custo
}
private void onPlayer() {
- mPlayers.togglePlayer();
- setPlayerView();
- setDecodeView();
- setR1Callback();
- onRefresh();
+ PlayerDialog.create().select(mPlayers.getPlayer()).title(getName()).show(this);
+ hideControl();
}
private void onDecode() {
@@ -1762,6 +1760,20 @@ public class VideoActivity extends BaseActivity implements Clock.Callback, Custo
setRedirect(true);
}
+ @Override
+ public void onPlayerClick(Integer item) {
+ mPlayers.setPlayer(item);
+ setPlayerView();
+ setDecodeView();
+ setR1Callback();
+ onRefresh();
+ }
+
+ @Override
+ public void onPlayerShare(String title) {
+ this.onShare(title);
+ }
+
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
diff --git a/app/src/mobile/res/drawable/ic_action_share.xml b/app/src/mobile/res/drawable/ic_action_share.xml
new file mode 100644
index 000000000..3a65b172f
--- /dev/null
+++ b/app/src/mobile/res/drawable/ic_action_share.xml
@@ -0,0 +1,10 @@
+
+
+
diff --git a/app/src/mobile/res/layout/adapter_player.xml b/app/src/mobile/res/layout/adapter_player.xml
new file mode 100644
index 000000000..848fcbeed
--- /dev/null
+++ b/app/src/mobile/res/layout/adapter_player.xml
@@ -0,0 +1,13 @@
+
+
\ No newline at end of file
diff --git a/app/src/mobile/res/layout/dialog_player.xml b/app/src/mobile/res/layout/dialog_player.xml
new file mode 100644
index 000000000..6efa4a406
--- /dev/null
+++ b/app/src/mobile/res/layout/dialog_player.xml
@@ -0,0 +1,50 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file