This commit is contained in:
Yuriy Liskov
2020-09-21 06:37:30 +03:00
parent 352b795097
commit cfd31f47a8
12 changed files with 38 additions and 28 deletions
@@ -1,7 +1,7 @@
package com.liskovsoft.smartyoutubetv2.common.app.models.playback;
import com.liskovsoft.smartyoutubetv2.common.app.models.data.Video;
import com.liskovsoft.smartyoutubetv2.common.app.models.playback.controller.PlayerController;
import com.liskovsoft.smartyoutubetv2.common.app.models.playback.controller.PlaybackController;
import com.liskovsoft.smartyoutubetv2.common.app.models.playback.managers.AutoFrameRateManager;
import com.liskovsoft.smartyoutubetv2.common.app.models.playback.managers.HistoryUpdater;
import com.liskovsoft.smartyoutubetv2.common.app.models.playback.managers.PlayerUiManager;
@@ -43,7 +43,7 @@ public class MainPlayerEventBridge implements PlayerEventListener {
}
@Override
public void setController(PlayerController controller) {
public void setController(PlaybackController controller) {
process(listener -> listener.setController(controller));
}
@@ -3,17 +3,17 @@ package com.liskovsoft.smartyoutubetv2.common.app.models.playback;
import android.app.Activity;
import androidx.fragment.app.Fragment;
import com.liskovsoft.smartyoutubetv2.common.app.models.data.Video;
import com.liskovsoft.smartyoutubetv2.common.app.models.playback.controller.PlayerController;
import com.liskovsoft.smartyoutubetv2.common.app.models.playback.controller.PlaybackController;
import com.liskovsoft.smartyoutubetv2.common.app.models.playback.listener.PlayerEventListener;
import com.liskovsoft.smartyoutubetv2.common.autoframerate.FormatItem;
public abstract class PlayerEventListenerHelper implements PlayerEventListener {
protected PlayerController mController;
protected PlaybackController mController;
protected Activity mActivity;
protected Activity mParentActivity;
@Override
public void setController(PlayerController controller) {
public void setController(PlaybackController controller) {
mController = controller;
mActivity = ((Fragment) controller).getActivity();
}
@@ -4,7 +4,7 @@ import com.liskovsoft.smartyoutubetv2.common.app.models.data.Video;
// is paused, position, tracks (audio, video, subs), codecs, aspect, speed
// title, subtitle (description), subscribed/liked nums, published date, toggle buttons, simple buttons
public interface PlayerController extends PlayerEngineController, PlayerUiController {
public interface PlaybackController extends PlaybackEngineController, PlaybackUiController {
void setVideo(Video item);
Video getVideo();
}
@@ -5,7 +5,7 @@ import com.liskovsoft.smartyoutubetv2.common.autoframerate.FormatItem;
import java.io.InputStream;
import java.util.List;
public interface PlayerEngineController {
public interface PlaybackEngineController {
void openDash(InputStream dashManifest);
void openHls(String hlsPlaylistUrl);
long getPositionMs();
@@ -2,7 +2,7 @@ package com.liskovsoft.smartyoutubetv2.common.app.models.playback.controller;
import com.liskovsoft.smartyoutubetv2.common.app.models.data.VideoGroup;
public interface PlayerUiController {
public interface PlaybackUiController {
void updateSuggestions(VideoGroup group);
void resetSuggestedPosition();
void clearSuggestions();
@@ -1,12 +1,12 @@
package com.liskovsoft.smartyoutubetv2.common.app.models.playback.listener;
import com.liskovsoft.smartyoutubetv2.common.app.models.data.Video;
import com.liskovsoft.smartyoutubetv2.common.app.models.playback.controller.PlayerController;
import com.liskovsoft.smartyoutubetv2.common.app.models.playback.controller.PlaybackController;
// is paused, position, tracks (audio, video, subs), codecs, aspect, speed
// title, subtitle (description), subscribed/liked nums, published date, toggle buttons, simple buttons
public interface PlayerEventListener extends PlayerUiEventListener, PlayerEngineEventListener, ViewEventListener {
void openVideo(Video item);
void setController(PlayerController controller);
void setController(PlaybackController controller);
void setParentView(Object parentView);
}
@@ -2,7 +2,7 @@ package com.liskovsoft.smartyoutubetv2.common.app.models.playback.managers;
import com.liskovsoft.smartyoutubetv2.common.R;
import com.liskovsoft.smartyoutubetv2.common.app.models.playback.PlayerEventListenerHelper;
import com.liskovsoft.smartyoutubetv2.common.app.models.playback.controller.PlayerController;
import com.liskovsoft.smartyoutubetv2.common.app.models.playback.controller.PlaybackController;
import com.liskovsoft.smartyoutubetv2.common.app.models.playback.ui.OptionItem;
import com.liskovsoft.smartyoutubetv2.common.app.models.playback.ui.UiOptionItem;
import com.liskovsoft.smartyoutubetv2.common.autoframerate.AutoFrameRateHelper;
@@ -22,7 +22,7 @@ public class AutoFrameRateManager extends PlayerEventListenerHelper {
}
@Override
public void setController(PlayerController controller) {
public void setController(PlaybackController controller) {
super.setController(controller);
if (!mRunOnce) {
@@ -32,9 +32,9 @@ public class AutoFrameRateManager extends PlayerEventListenerHelper {
String title = mActivity.getString(R.string.auto_frame_rate_enable);
String fpsCorrection = mActivity.getString(R.string.auto_frame_rate_correction, "(30 => 29.97)");
mUiManager.addHQSwitch(title,
UiOptionItem.from(title, this::onAfrChange, mEnabled));
UiOptionItem.from(title, this::onAfrOptionClick, mEnabled));
mUiManager.addHQSwitch(title,
UiOptionItem.from(fpsCorrection, this::onFpsCorrection, mCorrectionEnabled)
UiOptionItem.from(fpsCorrection, this::onFpsCorrectionClick, mCorrectionEnabled)
);
mRunOnce = true;
@@ -55,7 +55,7 @@ public class AutoFrameRateManager extends PlayerEventListenerHelper {
}
}
private void onAfrChange(OptionItem optionItem) {
private void onAfrOptionClick(OptionItem optionItem) {
mEnabled = optionItem.isSelected();
if (mEnabled) {
@@ -65,6 +65,11 @@ public class AutoFrameRateManager extends PlayerEventListenerHelper {
}
}
private void onFpsCorrectionClick(OptionItem optionItem) {
mCorrectionEnabled = optionItem.isSelected();
mAutoFrameRateHelper.setFpsCorrectionEnabled(mCorrectionEnabled);
}
private void restoreAfr() {
mAutoFrameRateHelper.restoreOriginalState();
mParentAutoFrameRateHelper.restoreOriginalState();
@@ -74,9 +79,4 @@ public class AutoFrameRateManager extends PlayerEventListenerHelper {
mAutoFrameRateHelper.apply(track);
mParentAutoFrameRateHelper.apply(track);
}
private void onFpsCorrection(OptionItem optionItem) {
mCorrectionEnabled = optionItem.isSelected();
mAutoFrameRateHelper.setFpsCorrectionEnabled(mCorrectionEnabled);
}
}
@@ -2,12 +2,11 @@ package com.liskovsoft.smartyoutubetv2.common.app.models.playback.managers;
import android.os.Handler;
import android.os.Looper;
import androidx.core.util.Pair;
import com.liskovsoft.sharedutils.helpers.KeyHelpers;
import com.liskovsoft.sharedutils.mylogger.Log;
import com.liskovsoft.smartyoutubetv2.common.R;
import com.liskovsoft.smartyoutubetv2.common.app.models.playback.PlayerEventListenerHelper;
import com.liskovsoft.smartyoutubetv2.common.app.models.playback.controller.PlayerController;
import com.liskovsoft.smartyoutubetv2.common.app.models.playback.controller.PlaybackController;
import com.liskovsoft.smartyoutubetv2.common.app.models.playback.ui.OptionItem;
import com.liskovsoft.smartyoutubetv2.common.app.models.playback.ui.UiOptionItem;
import com.liskovsoft.smartyoutubetv2.common.app.presenters.VideoSettingsPresenter;
@@ -36,7 +35,7 @@ public class PlayerUiManager extends PlayerEventListenerHelper {
}
@Override
public void setController(PlayerController controller) {
public void setController(PlaybackController controller) {
super.setController(controller);
mSettingsPresenter = VideoSettingsPresenter.instance(mActivity);
}
@@ -1,9 +1,9 @@
package com.liskovsoft.smartyoutubetv2.common.app.views;
import com.liskovsoft.smartyoutubetv2.common.app.models.playback.controller.PlayerController;
import com.liskovsoft.smartyoutubetv2.common.app.models.playback.controller.PlaybackController;
import com.liskovsoft.smartyoutubetv2.common.app.models.playback.listener.PlayerEventListener;
public interface PlaybackView {
void setEventListener(PlayerEventListener stateBridge);
PlayerController getController();
PlaybackController getController();
}
@@ -109,7 +109,9 @@ public class ViewManager {
try {
Log.d(TAG, "Launching parent activity...");
setDefault(null); // current activity is finished, so do reset
activity.startActivity(new Intent(activity, parentActivity));
Intent intent = new Intent(activity, parentActivity);
//intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
activity.startActivity(intent);
} catch (ActivityNotFoundException e) {
e.printStackTrace();
Log.e(TAG, "Parent activity not found.");
@@ -5,6 +5,7 @@ import androidx.fragment.app.Fragment;
import android.view.KeyEvent;
import android.view.MotionEvent;
import com.liskovsoft.smartyoutubetv2.common.app.views.ViewManager;
import com.liskovsoft.smartyoutubetv2.tv.R;
import com.liskovsoft.smartyoutubetv2.tv.ui.common.LeanbackActivity;
@@ -66,4 +67,9 @@ public class PlaybackActivity extends LeanbackActivity {
}
return super.onGenericMotionEvent(event);
}
@Override
public void finish() {
ViewManager.instance(this).startParentView(this);
}
}
@@ -29,6 +29,7 @@ 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.listener.PlayerEventListener;
import com.liskovsoft.smartyoutubetv2.common.app.presenters.PlaybackPresenter;
import com.liskovsoft.smartyoutubetv2.common.app.views.PlaybackView;
@@ -50,7 +51,7 @@ import java.util.Map;
* Plays selected video, loads playlist and related videos, and delegates playback to
* {@link VideoPlayerGlue}.
*/
public class PlaybackFragment extends VideoSupportFragment implements PlaybackView, com.liskovsoft.smartyoutubetv2.common.app.models.playback.controller.PlayerController {
public class PlaybackFragment extends VideoSupportFragment implements PlaybackView, PlaybackController {
private static final String TAG = PlaybackFragment.class.getSimpleName();
private static final int UPDATE_DELAY = 16;
private VideoPlayerGlue mPlayerGlue;
@@ -409,7 +410,7 @@ public class PlaybackFragment extends VideoSupportFragment implements PlaybackVi
}
@Override
public com.liskovsoft.smartyoutubetv2.common.app.models.playback.controller.PlayerController getController() {
public PlaybackController getController() {
return this;
}
@@ -423,6 +424,8 @@ public class PlaybackFragment extends VideoSupportFragment implements PlaybackVi
public void onDestroy() {
super.onDestroy();
Log.d(TAG, "Destroying PlaybackFragment...");
// Fix situations when engine didn't properly destroyed.
// E.g. after closing dialogs.
unblockEngine();