Skip to content

Commit

Permalink
add play behind option
Browse files Browse the repository at this point in the history
  • Loading branch information
yuliskov committed Nov 22, 2020
1 parent 1103ad8 commit b476290
Show file tree
Hide file tree
Showing 23 changed files with 92 additions and 28 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,8 @@ public interface PlaybackEngineController {
void enablePIP(boolean enable);
boolean isPIPEnabled();
boolean isInPIPMode();
void enablePlayBehind(boolean enable);
boolean isPlayBehindEnabled();
boolean hasNoMedia();
void setSpeed(float speed);
float getSpeed();
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package com.liskovsoft.smartyoutubetv2.common.app.models.playback.managers;

import android.os.Build;
import com.liskovsoft.smartyoutubetv2.common.R;
import com.liskovsoft.smartyoutubetv2.common.app.models.playback.PlayerEventListenerHelper;
import com.liskovsoft.smartyoutubetv2.common.app.models.playback.controller.PlaybackEngineController;
Expand All @@ -25,6 +26,7 @@ public class HqDialogManager extends PlayerEventListenerHelper {
private final Map<CharSequence, OptionItem> mSingleOptions = new LinkedHashMap<>();
private boolean mEnableBackgroundAudio;
private boolean mEnablePIP;
private boolean mEnablePlayBehind;
private final List<Runnable> mHideListeners = new ArrayList<>();
private final StateUpdater mStateUpdater;

Expand All @@ -48,9 +50,9 @@ public void onHighQualityClicked() {
mSettingsPresenter.clear();

addQualityCategories();
addBackgroundPlaybackCategory();
addVideoBufferCategory();
addPresetsCategory();
addBackgroundPlaybackCategory();

internalStuff();

Expand Down Expand Up @@ -109,7 +111,7 @@ private void onDialogHide() {
}

private void updateBackgroundPlayback() {
if (mEnableBackgroundAudio || mEnablePIP) {
if (mEnableBackgroundAudio || mEnablePIP || mEnablePlayBehind) {
// return to the player regardless the last activity user watched in moment exiting to HOME
ViewManager.instance(mActivity).blockTop(mActivity);
} else {
Expand All @@ -118,6 +120,7 @@ private void updateBackgroundPlayback() {

mController.blockEngine(mEnableBackgroundAudio);
mController.enablePIP(mEnablePIP);
mController.enablePlayBehind(mEnablePlayBehind);
}

private void addBackgroundPlaybackCategory() {
Expand All @@ -128,20 +131,32 @@ private void addBackgroundPlaybackCategory() {
optionItem -> {
mEnableBackgroundAudio = false;
mEnablePIP = false;
mEnablePlayBehind = false;
updateBackgroundPlayback();
}, !mEnableBackgroundAudio && !mEnablePIP));
options.add(UiOptionItem.from(mActivity.getString(R.string.option_background_playback_all),
}, !mEnableBackgroundAudio && !mEnablePIP && !mEnablePlayBehind));
if (Build.VERSION.SDK_INT >= 21 && Build.VERSION.SDK_INT < 26) { // useful only for pre-Oreo UI
options.add(UiOptionItem.from(mActivity.getString(R.string.option_background_playback_behind) + " (Android 5,6,7)",
optionItem -> {
mEnableBackgroundAudio = false;
mEnablePIP = false;
mEnablePlayBehind = true;
updateBackgroundPlayback();
}, mEnablePlayBehind && !mEnablePIP && !mEnableBackgroundAudio));
}
options.add(UiOptionItem.from(mActivity.getString(R.string.option_background_playback_pip),
optionItem -> {
mEnableBackgroundAudio = false;
mEnablePIP = true;
mEnablePlayBehind = false;
updateBackgroundPlayback();
}, mEnablePIP && !mEnableBackgroundAudio));
}, mEnablePIP && !mEnableBackgroundAudio && !mEnablePlayBehind));
options.add(UiOptionItem.from(mActivity.getString(R.string.option_background_playback_only_audio),
optionItem -> {
mEnableBackgroundAudio = true;
mEnablePIP = false;
mEnablePlayBehind = false;
updateBackgroundPlayback();
}, mEnableBackgroundAudio && !mEnablePIP));
}, mEnableBackgroundAudio && !mEnablePIP && !mEnablePlayBehind));

addRadioCategory(categoryTitle, options);
}
Expand Down
2 changes: 1 addition & 1 deletion common/src/main/res/values-ar/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@
<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_pip">الفيديو والصوت</string>
<string name="option_background_playback_only_audio">الصوت فقط</string>
<string name="playback_settings">إعدادات التشغيل</string>
<string name="video_speed">سرعة الفيديو</string>
Expand Down
2 changes: 1 addition & 1 deletion common/src/main/res/values-cs/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@
<string name="category_background_playback">Přehrávání na pozadí</string>
<string name="not_implemented">Není implementováno</string>
<string name="option_background_playback_off">Zakázáno</string>
<string name="option_background_playback_all">Video a zvuk</string>
<string name="option_background_playback_pip">Video a zvuk</string>
<string name="option_background_playback_only_audio">Pouze audio</string>
<string name="playback_settings">Nastavení přehrávání</string>
<string name="video_speed">Rychlost videa</string>
Expand Down
2 changes: 1 addition & 1 deletion common/src/main/res/values-de/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@
<string name="category_background_playback">Hintergrund-Wiedergabe</string>
<string name="not_implemented">Nicht implementiert</string>
<string name="option_background_playback_off">Deaktiviert</string>
<string name="option_background_playback_all">Video und Audio</string>
<string name="option_background_playback_pip">Video und Audio</string>
<string name="option_background_playback_only_audio">Nur Audio</string>
<string name="playback_settings">Wiedergabe-Einstellungen</string>
<string name="video_speed">Video-Geschwindigkeit</string>
Expand Down
2 changes: 1 addition & 1 deletion common/src/main/res/values-es/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@
<string name="category_background_playback">Reproducción de fondo</string>
<string name="not_implemented">No se ha implementado</string>
<string name="option_background_playback_off">Deshabilitado</string>
<string name="option_background_playback_all">Vídeo y audio</string>
<string name="option_background_playback_pip">Vídeo y audio</string>
<string name="option_background_playback_only_audio">Sólo audio</string>
<string name="playback_settings">Configuración de reproducción</string>
<string name="video_speed">Velocidad de vídeo</string>
Expand Down
2 changes: 1 addition & 1 deletion common/src/main/res/values-fr/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@
<string name="category_background_playback">Lecture en arriére-plan</string>
<string name="not_implemented">Non exécutable</string>
<string name="option_background_playback_off">Désactivé</string>
<string name="option_background_playback_all">Vidéo et audio</string>
<string name="option_background_playback_pip">Vidéo et audio</string>
<string name="option_background_playback_only_audio">Uniquement l\'audio</string>
<string name="playback_settings">Paramétres de lecture</string>
<string name="video_speed">Vitesse de la vidéo</string>
Expand Down
2 changes: 1 addition & 1 deletion common/src/main/res/values-he/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@
<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_pip">וידאו ושמע</string>
<string name="option_background_playback_only_audio">רק שמע</string>
<string name="playback_settings">הגדרות השמעה</string>
<string name="video_speed">מהירות הוידאו</string>
Expand Down
2 changes: 1 addition & 1 deletion common/src/main/res/values-it/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@
<string name="category_background_playback">Riproduzione in background</string>
<string name="not_implemented">Non implementato</string>
<string name="option_background_playback_off">Disabilitato</string>
<string name="option_background_playback_all">Video e audio</string>
<string name="option_background_playback_pip">Video e audio</string>
<string name="option_background_playback_only_audio">Solo audio</string>
<string name="playback_settings">Impostazioni di riproduzione</string>
<string name="video_speed">Velocità video</string>
Expand Down
2 changes: 1 addition & 1 deletion common/src/main/res/values-nl/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@
<string name="category_background_playback">Afspelen op achtergrond</string>
<string name="not_implemented">Niet geïmplementeerd</string>
<string name="option_background_playback_off">Uit</string>
<string name="option_background_playback_all">Video en audio</string>
<string name="option_background_playback_pip">Video en audio</string>
<string name="option_background_playback_only_audio">Audio</string>
<string name="playback_settings">HQ instellingen</string>
<string name="video_speed">Video snelheid</string>
Expand Down
2 changes: 1 addition & 1 deletion common/src/main/res/values-no/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@
<string name="category_background_playback">Bakgrunnsavspilling</string>
<string name="not_implemented">Ikke implementert</string>
<string name="option_background_playback_off">Deaktivert</string>
<string name="option_background_playback_all">Video og lyd</string>
<string name="option_background_playback_pip">Video og lyd</string>
<string name="option_background_playback_only_audio">Bare lyd</string>
<string name="playback_settings">Avspillingsinnstillinger</string>
<string name="video_speed">Videohastighet</string>
Expand Down
2 changes: 1 addition & 1 deletion common/src/main/res/values-pl/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@
<string name="category_background_playback">Odtwarzanie w tle</string>
<string name="not_implemented">Nie zaimplementowano</string>
<string name="option_background_playback_off">Wyłączone</string>
<string name="option_background_playback_all">Wideo i audio</string>
<string name="option_background_playback_pip">Wideo i audio</string>
<string name="option_background_playback_only_audio">Tylko dźwięk</string>
<string name="playback_settings">Ustawienia odtwarzania</string>
<string name="video_speed">Prędkość wideo</string>
Expand Down
2 changes: 1 addition & 1 deletion common/src/main/res/values-pt/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@
<string name="category_background_playback">Reprodução de fundo</string>
<string name="not_implemented">Não implementado</string>
<string name="option_background_playback_off">Desativado</string>
<string name="option_background_playback_all">Video e audio</string>
<string name="option_background_playback_pip">Video e audio</string>
<string name="option_background_playback_only_audio">Apenas áudio</string>
<string name="playback_settings">Playback settings</string>
<string name="video_speed">Velocidade do vídeo</string>
Expand Down
2 changes: 1 addition & 1 deletion common/src/main/res/values-ro/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@
<string name="category_background_playback">Redare în fundal</string>
<string name="not_implemented">Neimplementat</string>
<string name="option_background_playback_off">Oprit</string>
<string name="option_background_playback_all">Video și audio</string>
<string name="option_background_playback_pip">Video și audio</string>
<string name="option_background_playback_only_audio">Doar audio</string>
<string name="playback_settings">Setări redare</string>
<string name="video_speed">Viteză de redare</string>
Expand Down
3 changes: 2 additions & 1 deletion common/src/main/res/values-ru/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@
<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_pip">Картинка в картинке</string>
<string name="option_background_playback_only_audio">Только аудио</string>
<string name="playback_settings">Настройки воспроизведения</string>
<string name="video_speed">Скорость видео</string>
Expand Down Expand Up @@ -102,4 +102,5 @@
<string name="settings_search">Поиск</string>
<string name="dialog_search">Поиск</string>
<string name="instant_voice_search">Сразу запускать голосовой поиск</string>
<string name="option_background_playback_behind">Играть позади</string>
</resources>
2 changes: 1 addition & 1 deletion common/src/main/res/values-tr/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@
<string name="category_background_playback">Arkaplanda Oynatma</string>
<string name="not_implemented">Uygulanmadı</string>
<string name="option_background_playback_off">Devredışı</string>
<string name="option_background_playback_all">Video ve Ses</string>
<string name="option_background_playback_pip">Video ve Ses</string>
<string name="option_background_playback_only_audio">Yanlızca Ses</string>
<string name="playback_settings">Oynatma Ayarları</string>
<string name="video_speed">Video Hızı</string>
Expand Down
3 changes: 2 additions & 1 deletion common/src/main/res/values-uk/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@
<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_pip">Картинка в картинці</string>
<string name="option_background_playback_only_audio">Тільки аудіо</string>
<string name="playback_settings">Налаштування відтворення</string>
<string name="video_speed">Швидкість відео</string>
Expand Down Expand Up @@ -102,4 +102,5 @@
<string name="settings_search">Пошук</string>
<string name="dialog_search">Пошук</string>
<string name="instant_voice_search">Відразу запускати голосови пошук</string>
<string name="option_background_playback_behind">Грати позаду</string>
</resources>
2 changes: 1 addition & 1 deletion common/src/main/res/values-vi/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@
<string name="category_background_playback">Chạy ngầm</string>
<string name="not_implemented">Không thực hiện được</string>
<string name="option_background_playback_off">Đã tắt</string>
<string name="option_background_playback_all">Video và âm thanh</string>
<string name="option_background_playback_pip">Video và âm thanh</string>
<string name="option_background_playback_only_audio">Chỉ âm thanh</string>
<string name="playback_settings">Cài đặt phát lại</string>
<string name="video_speed">Tốc độ video</string>
Expand Down
2 changes: 1 addition & 1 deletion common/src/main/res/values-zh-rTW/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@
<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_pip">畫面與聲音</string>
<string name="option_background_playback_only_audio">只有聲音</string>
<string name="playback_settings">重播設定</string>
<string name="video_speed">播放速度</string>
Expand Down
2 changes: 1 addition & 1 deletion common/src/main/res/values-zh/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@
<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_pip">画面与声音</string>
<string name="option_background_playback_only_audio">只有声音</string>
<string name="playback_settings">重播设置</string>
<string name="video_speed">播放速度</string>
Expand Down
3 changes: 2 additions & 1 deletion common/src/main/res/values/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@
<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_pip">Picture in picture</string>
<string name="option_background_playback_only_audio">Only audio</string>
<string name="playback_settings">Playback settings</string>
<string name="video_speed">Video speed</string>
Expand Down Expand Up @@ -102,4 +102,5 @@
<string name="settings_search">Search</string>
<string name="dialog_search">Search</string>
<string name="instant_voice_search">Instant voice search</string>
<string name="option_background_playback_behind">Play behind</string>
</resources>
Original file line number Diff line number Diff line change
Expand Up @@ -112,7 +112,7 @@ private void enterPIPMode() {
}

private boolean wannaEnterToPIP() {
return !isInPictureInPictureMode() && mPlaybackFragment.isPIPEnabled();
return mPlaybackFragment.isPIPEnabled() && !isInPictureInPictureMode() && !mPlaybackFragment.isPlayBehindEnabled();
}

@Override
Expand Down Expand Up @@ -142,4 +142,39 @@ public boolean isInPIPMode() {

return isInPictureInPictureMode();
}

@SuppressWarnings("deprecation")
private void enterBackgroundPlayMode() {
if (Build.VERSION.SDK_INT >= 21 && Build.VERSION.SDK_INT < 26) {
if (mPlaybackFragment.isPlaying()) {
// Argument equals true to notify the system that the activity
// wishes to be visible behind other translucent activities
if (!requestVisibleBehind(true)) {
// App-specific method to stop playback and release resources
// because call to requestVisibleBehind(true) failed
mPlaybackFragment.onDestroy();
}
} else {
// Argument equals false because the activity is not playing
requestVisibleBehind(false);
}
}
}

@SuppressWarnings("deprecation")
@Override
public void onVisibleBehindCanceled() {
// App-specific method to stop playback and release resources
mPlaybackFragment.onDestroy();
super.onVisibleBehindCanceled();
}

@Override
public void onUserLeaveHint () {
if (mPlaybackFragment.isPlayBehindEnabled()) {
enterBackgroundPlayMode();
} else if (mPlaybackFragment.isPIPEnabled() && !mPlaybackFragment.isControlsShown()) {
enterPIPMode();
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -24,10 +24,8 @@
import com.google.android.exoplayer2.DefaultRenderersFactory;
import com.google.android.exoplayer2.SimpleExoPlayer;
import com.google.android.exoplayer2.ext.leanback.LeanbackPlayerAdapter;
import com.google.android.exoplayer2.trackselection.AdaptiveTrackSelection;
import com.google.android.exoplayer2.trackselection.AdaptiveTrackSelection.Factory;
import com.google.android.exoplayer2.trackselection.DefaultTrackSelector;
import com.google.android.exoplayer2.trackselection.TrackSelection;
import com.google.android.exoplayer2.util.Util;
import com.liskovsoft.sharedutils.helpers.Helpers;
import com.liskovsoft.sharedutils.helpers.MessageHelpers;
Expand Down Expand Up @@ -81,6 +79,7 @@ public class PlaybackFragment extends VideoEventsOverrideFragment implements Pla
private final boolean mIsAnimationEnabled = true;
private boolean mIsEngineBlocked;
private boolean mIsPIPEnabled;
private boolean mIsPlayBehindEnabled;

@Override
public void onCreate(Bundle savedInstanceState) {
Expand Down Expand Up @@ -596,6 +595,16 @@ public boolean isInPIPMode() {
return playbackActivity.isInPIPMode();
}

@Override
public void enablePlayBehind(boolean enable) {
mIsPlayBehindEnabled = enable;
}

@Override
public boolean isPlayBehindEnabled() {
return mIsPlayBehindEnabled;
}

@Override
public boolean hasNoMedia() {
return mExoPlayerController.hasNoMedia();
Expand Down

0 comments on commit b476290

Please sign in to comment.