mirror of
https://github.com/yuliskov/SmartTube.git
synced 2026-05-08 05:49:59 -05:00
add more pip options
This commit is contained in:
+2
@@ -23,4 +23,6 @@ public interface PlaybackEngineController {
|
||||
*/
|
||||
void blockEngine(boolean block);
|
||||
boolean isEngineBlocked();
|
||||
void enablePIP(boolean enable);
|
||||
boolean isPIPEnabled();
|
||||
}
|
||||
|
||||
+25
-6
@@ -31,6 +31,7 @@ public class PlayerUiManager extends PlayerEventListenerHelper {
|
||||
private final Map<String, List<OptionItem>> mRadioCategories = new HashMap<>();
|
||||
private final Map<CharSequence, OptionItem> mSingleOptions = new HashMap<>();
|
||||
private boolean mBlockEngine;
|
||||
private boolean mEnablePIP;
|
||||
|
||||
public PlayerUiManager() {
|
||||
mHandler = new Handler(Looper.getMainLooper());
|
||||
@@ -101,7 +102,7 @@ public class PlayerUiManager extends PlayerEventListenerHelper {
|
||||
@Override
|
||||
public void onHighQualityClicked() {
|
||||
addQualityCategories();
|
||||
addBackgroundPlaybackOption();
|
||||
addBackgroundPlaybackCategory();
|
||||
|
||||
disableUiAutoHideTimeout();
|
||||
|
||||
@@ -166,15 +167,33 @@ public class PlayerUiManager extends PlayerEventListenerHelper {
|
||||
}
|
||||
|
||||
mController.blockEngine(mBlockEngine);
|
||||
mController.enablePIP(mEnablePIP);
|
||||
}
|
||||
|
||||
private void addBackgroundPlaybackOption() {
|
||||
addSingleOption(UiOptionItem.from(
|
||||
mActivity.getString(R.string.dialog_background_playback),
|
||||
private void addBackgroundPlaybackCategory() {
|
||||
String categoryTitle = mActivity.getString(R.string.category_background_playback);
|
||||
|
||||
List<OptionItem> options = new ArrayList<>();
|
||||
options.add(UiOptionItem.from(mActivity.getString(R.string.option_background_playback_off),
|
||||
optionItem -> {
|
||||
mBlockEngine = optionItem.isSelected();
|
||||
mBlockEngine = false;
|
||||
mEnablePIP = false;
|
||||
updateBackgroundPlayback();
|
||||
}, mBlockEngine));
|
||||
}, !mBlockEngine && !mEnablePIP));
|
||||
options.add(UiOptionItem.from(mActivity.getString(R.string.option_background_playback_all),
|
||||
optionItem -> {
|
||||
mBlockEngine = true;
|
||||
mEnablePIP = true;
|
||||
updateBackgroundPlayback();
|
||||
}, mEnablePIP && mBlockEngine));
|
||||
options.add(UiOptionItem.from(mActivity.getString(R.string.option_background_playback_only_audio),
|
||||
optionItem -> {
|
||||
mBlockEngine = true;
|
||||
mEnablePIP = false;
|
||||
updateBackgroundPlayback();
|
||||
}, mBlockEngine && !mEnablePIP));
|
||||
|
||||
addRadioCategory(categoryTitle, options);
|
||||
}
|
||||
|
||||
public void addSingleOption(OptionItem option) {
|
||||
|
||||
+2
-2
@@ -50,11 +50,11 @@ public class UiOptionItem implements OptionItem {
|
||||
return uiOptionItem;
|
||||
}
|
||||
|
||||
public static OptionItem from(String title, OptionCallback callback, boolean defaultValue) {
|
||||
public static OptionItem from(String title, OptionCallback callback, boolean isChecked) {
|
||||
UiOptionItem uiOptionItem = new UiOptionItem();
|
||||
|
||||
uiOptionItem.mTitle = title;
|
||||
uiOptionItem.mIsSelected = defaultValue;
|
||||
uiOptionItem.mIsSelected = isChecked;
|
||||
uiOptionItem.mCallback = callback;
|
||||
|
||||
return uiOptionItem;
|
||||
|
||||
@@ -21,6 +21,9 @@
|
||||
<string name="dialog_subtitile_default">Субтитры отключены</string>
|
||||
<string name="auto_frame_rate_enable">Автофреймрейт</string>
|
||||
<string name="auto_frame_rate_correction">Исправлять fps: %s</string>
|
||||
<string name="dialog_background_playback">Фоновое воспроизведение</string>
|
||||
<string name="category_background_playback">Фоновое воспроизведение</string>
|
||||
<string name="not_implemented">Пока не готово</string>
|
||||
<string name="option_background_playback_off">Отключен</string>
|
||||
<string name="option_background_playback_all">Видео и аудио</string>
|
||||
<string name="option_background_playback_only_audio">Только аудио</string>
|
||||
</resources>
|
||||
@@ -21,6 +21,9 @@
|
||||
<string name="dialog_subtitile_default">Disable subtitles</string>
|
||||
<string name="auto_frame_rate_enable">Auto frame rate</string>
|
||||
<string name="auto_frame_rate_correction">Fix fps: %s</string>
|
||||
<string name="dialog_background_playback">Background playback</string>
|
||||
<string name="category_background_playback">Background playback</string>
|
||||
<string name="not_implemented">Not implemented</string>
|
||||
<string name="option_background_playback_off">Disabled</string>
|
||||
<string name="option_background_playback_all">Video and audio</string>
|
||||
<string name="option_background_playback_only_audio">Only audio</string>
|
||||
</resources>
|
||||
+2
-1
@@ -10,6 +10,7 @@ import androidx.fragment.app.Fragment;
|
||||
import android.view.KeyEvent;
|
||||
import android.view.MotionEvent;
|
||||
|
||||
import com.liskovsoft.smartyoutubetv2.common.app.models.playback.controller.PlaybackEngineController;
|
||||
import com.liskovsoft.smartyoutubetv2.common.app.views.ViewManager;
|
||||
import com.liskovsoft.smartyoutubetv2.tv.R;
|
||||
import com.liskovsoft.smartyoutubetv2.tv.ui.browse.BrowseActivity;
|
||||
@@ -113,7 +114,7 @@ public class PlaybackActivity extends LeanbackActivity {
|
||||
protected void onStop() {
|
||||
super.onStop();
|
||||
|
||||
if (mPlaybackFragment.isEngineBlocked()) {
|
||||
if (mPlaybackFragment.isEngineBlocked() && mPlaybackFragment.isPIPEnabled()) {
|
||||
enterPIPMode();
|
||||
|
||||
if (mBackPressed) {
|
||||
|
||||
+13
-3
@@ -23,13 +23,12 @@ import com.google.android.exoplayer2.ext.leanback.LeanbackPlayerAdapter;
|
||||
import com.google.android.exoplayer2.trackselection.AdaptiveTrackSelection;
|
||||
import com.google.android.exoplayer2.trackselection.DefaultTrackSelector;
|
||||
import com.google.android.exoplayer2.trackselection.TrackSelection;
|
||||
import com.google.android.exoplayer2.upstream.BandwidthMeter;
|
||||
import com.google.android.exoplayer2.upstream.DefaultBandwidthMeter;
|
||||
import com.google.android.exoplayer2.util.Util;
|
||||
import com.liskovsoft.sharedutils.mylogger.Log;
|
||||
import com.liskovsoft.smartyoutubetv2.common.app.models.data.Video;
|
||||
import com.liskovsoft.smartyoutubetv2.common.app.models.data.VideoGroup;
|
||||
import com.liskovsoft.smartyoutubetv2.common.app.models.playback.controller.PlaybackController;
|
||||
import com.liskovsoft.smartyoutubetv2.common.app.models.playback.controller.PlaybackEngineController;
|
||||
import com.liskovsoft.smartyoutubetv2.common.app.models.playback.listener.PlayerEventListener;
|
||||
import com.liskovsoft.smartyoutubetv2.common.app.presenters.PlaybackPresenter;
|
||||
import com.liskovsoft.smartyoutubetv2.common.app.views.PlaybackView;
|
||||
@@ -68,6 +67,7 @@ public class PlaybackFragment extends VideoSupportFragment implements PlaybackVi
|
||||
private final boolean mEnableAnimation = true;
|
||||
private RowsSupportFragment mRowsSupportFragment;
|
||||
private boolean mBlockEngine;
|
||||
private boolean mEnablePIP;
|
||||
|
||||
@Override
|
||||
public void onCreate(Bundle savedInstanceState) {
|
||||
@@ -154,7 +154,7 @@ public class PlaybackFragment extends VideoSupportFragment implements PlaybackVi
|
||||
}
|
||||
|
||||
private void releasePlayer() {
|
||||
if (mBlockEngine) {
|
||||
if (isEngineBlocked()) {
|
||||
Log.d(TAG, "releasePlayer: Engine release is blocked. Exiting...");
|
||||
return;
|
||||
}
|
||||
@@ -415,6 +415,16 @@ public class PlaybackFragment extends VideoSupportFragment implements PlaybackVi
|
||||
return mBlockEngine;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void enablePIP(boolean enable) {
|
||||
mEnablePIP = enable;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isPIPEnabled() {
|
||||
return mEnablePIP;
|
||||
}
|
||||
|
||||
// End Engine Events
|
||||
|
||||
@Override
|
||||
|
||||
Reference in New Issue
Block a user