add more pip options

This commit is contained in:
Yuriy Liskov
2020-09-24 02:28:06 +03:00
parent 9fb8277b70
commit 5e166a6384
7 changed files with 52 additions and 14 deletions
@@ -23,4 +23,6 @@ public interface PlaybackEngineController {
*/
void blockEngine(boolean block);
boolean isEngineBlocked();
void enablePIP(boolean enable);
boolean isPIPEnabled();
}
@@ -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) {
@@ -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;
+4 -1
View File
@@ -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>
+4 -1
View File
@@ -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>
@@ -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) {
@@ -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