mirror of
https://github.com/yuliskov/SmartTube.git
synced 2026-05-08 05:49:59 -05:00
pip fix
This commit is contained in:
+24
-1
@@ -21,6 +21,7 @@ public class ViewManager {
|
||||
private final Stack<Class<?>> mActivityStack;
|
||||
private Class<?> mRootActivity;
|
||||
private Class<?> mDefaultTop;
|
||||
private long mPrevThrottleTimeMS;
|
||||
|
||||
private ViewManager(Context context) {
|
||||
mContext = context;
|
||||
@@ -54,6 +55,10 @@ public class ViewManager {
|
||||
}
|
||||
|
||||
public void startView(Class<?> viewClass) {
|
||||
if (doThrottle()) {
|
||||
return;
|
||||
}
|
||||
|
||||
Class<?> activityClass = mViewMapping.get(viewClass);
|
||||
|
||||
if (activityClass != null) {
|
||||
@@ -62,6 +67,7 @@ public class ViewManager {
|
||||
// Fix: Calling startActivity() from outside of an Activity context requires the FLAG_ACTIVITY_NEW_TASK flag
|
||||
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
||||
|
||||
Log.d(TAG, "Launching activity view: " + activityClass.getSimpleName());
|
||||
mContext.startActivity(intent);
|
||||
} else {
|
||||
Log.e(TAG, "Activity not registered for view " + viewClass.getSimpleName());
|
||||
@@ -69,6 +75,10 @@ public class ViewManager {
|
||||
}
|
||||
|
||||
public void startParentView(Activity activity) {
|
||||
if (doThrottle()) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (activity.getIntent() != null) {
|
||||
removeTopActivity();
|
||||
|
||||
@@ -97,6 +107,10 @@ public class ViewManager {
|
||||
}
|
||||
|
||||
public void startDefaultView(Context context) {
|
||||
if (doThrottle()) {
|
||||
return;
|
||||
}
|
||||
|
||||
Class<?> lastActivity;
|
||||
|
||||
if (mDefaultTop != null) {
|
||||
@@ -107,13 +121,22 @@ public class ViewManager {
|
||||
lastActivity = mRootActivity;
|
||||
}
|
||||
|
||||
Log.d(TAG, "Starting activity: " + lastActivity.getSimpleName());
|
||||
Log.d(TAG, "Launching default activity: " + lastActivity.getSimpleName());
|
||||
|
||||
Intent intent = new Intent(context, lastActivity);
|
||||
|
||||
context.startActivity(intent);
|
||||
}
|
||||
|
||||
private boolean doThrottle() {
|
||||
long currentTimeMS = System.currentTimeMillis();
|
||||
boolean skipEvent = currentTimeMS - mPrevThrottleTimeMS < 1_000;
|
||||
|
||||
mPrevThrottleTimeMS = currentTimeMS;
|
||||
|
||||
return skipEvent;
|
||||
}
|
||||
|
||||
public void addTopActivity(@Nullable Class<?> activity) {
|
||||
if (!mActivityStack.isEmpty() && mActivityStack.peek() == activity) {
|
||||
return;
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
<string name="auto_frame_rate_correction">Исправлять fps: %s</string>
|
||||
<string name="category_background_playback">Фоновое воспроизведение</string>
|
||||
<string name="not_implemented">Пока не готово</string>
|
||||
<string name="option_background_playback_off">Отключен</string>
|
||||
<string name="option_background_playback_off">Отключено</string>
|
||||
<string name="option_background_playback_all">Видео и аудио</string>
|
||||
<string name="option_background_playback_only_audio">Только аудио</string>
|
||||
</resources>
|
||||
+5
-20
@@ -30,7 +30,6 @@ public class PlaybackActivity extends LeanbackActivity {
|
||||
private static final float GAMEPAD_TRIGGER_INTENSITY_OFF = 0.45f;
|
||||
private boolean gamepadTriggerPressed = false;
|
||||
private PlaybackFragment mPlaybackFragment;
|
||||
private boolean mBackPressed;
|
||||
|
||||
@Override
|
||||
public void onCreate(Bundle savedInstanceState) {
|
||||
@@ -105,30 +104,12 @@ public class PlaybackActivity extends LeanbackActivity {
|
||||
mPlaybackFragment.restartPlayer();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBackPressed() {
|
||||
super.onBackPressed();
|
||||
|
||||
mBackPressed = true;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onStart() {
|
||||
super.onStart();
|
||||
|
||||
mBackPressed = false;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onStop() {
|
||||
super.onStop();
|
||||
|
||||
if (mPlaybackFragment.isEngineBlocked() && mPlaybackFragment.isPIPEnabled()) {
|
||||
if (!isFinishing() && mPlaybackFragment.isEngineBlocked() && mPlaybackFragment.isPIPEnabled()) {
|
||||
enterPIPMode();
|
||||
|
||||
if (mBackPressed) {
|
||||
ViewManager.instance(this).startParentView(this);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -141,6 +122,10 @@ public class PlaybackActivity extends LeanbackActivity {
|
||||
|
||||
@Override
|
||||
public void finish() {
|
||||
if (mPlaybackFragment.isEngineBlocked() && mPlaybackFragment.isPIPEnabled()) {
|
||||
enterPIPMode();
|
||||
}
|
||||
|
||||
ViewManager.instance(this).startParentView(this);
|
||||
|
||||
//Intent intent = new Intent(this, BrowseActivity.class);
|
||||
|
||||
Reference in New Issue
Block a user