mirror of
https://github.com/yuliskov/SmartTube.git
synced 2026-05-03 11:29:40 -05:00
crash fix
This commit is contained in:
+17
-9
@@ -5,6 +5,7 @@ import android.os.Handler;
|
||||
import android.os.Looper;
|
||||
import com.liskovsoft.mediaserviceinterfaces.MediaItemManager;
|
||||
import com.liskovsoft.mediaserviceinterfaces.MediaService;
|
||||
import com.liskovsoft.mediaserviceinterfaces.data.MediaItem;
|
||||
import com.liskovsoft.mediaserviceinterfaces.data.MediaItemMetadata;
|
||||
import com.liskovsoft.sharedutils.helpers.KeyHelpers;
|
||||
import com.liskovsoft.sharedutils.helpers.MessageHelpers;
|
||||
@@ -22,6 +23,7 @@ import io.reactivex.Observable;
|
||||
import io.reactivex.schedulers.Schedulers;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.concurrent.Callable;
|
||||
|
||||
public class PlayerUiManager extends PlayerEventListenerHelper implements MetadataListener {
|
||||
private static final String TAG = PlayerUiManager.class.getSimpleName();
|
||||
@@ -163,7 +165,9 @@ public class PlayerUiManager extends PlayerEventListenerHelper implements Metada
|
||||
|
||||
@Override
|
||||
public void onSubscribeClicked(boolean subscribed) {
|
||||
if (mController.getVideo() == null) {
|
||||
Video video = mController.getVideo();
|
||||
|
||||
if (video == null || video.mediaItem == null) {
|
||||
Log.e(TAG, "Seems that video isn't initialized yet. Cancelling...");
|
||||
return;
|
||||
}
|
||||
@@ -174,9 +178,9 @@ public class PlayerUiManager extends PlayerEventListenerHelper implements Metada
|
||||
Observable<Void> observable;
|
||||
|
||||
if (subscribed) {
|
||||
observable = mediaItemManager.subscribeObserve(mController.getVideo().mediaItem);
|
||||
observable = mediaItemManager.subscribeObserve(video.mediaItem);
|
||||
} else {
|
||||
observable = mediaItemManager.unsubscribeObserve(mController.getVideo().mediaItem);
|
||||
observable = mediaItemManager.unsubscribeObserve(video.mediaItem);
|
||||
}
|
||||
|
||||
observable
|
||||
@@ -186,7 +190,9 @@ public class PlayerUiManager extends PlayerEventListenerHelper implements Metada
|
||||
|
||||
@Override
|
||||
public void onThumbsDownClicked(boolean thumbsDown) {
|
||||
if (mController.getVideo() == null) {
|
||||
Video video = mController.getVideo();
|
||||
|
||||
if (video == null || video.mediaItem == null) {
|
||||
Log.e(TAG, "Seems that video isn't initialized yet. Cancelling...");
|
||||
return;
|
||||
}
|
||||
@@ -197,9 +203,9 @@ public class PlayerUiManager extends PlayerEventListenerHelper implements Metada
|
||||
Observable<Void> observable;
|
||||
|
||||
if (thumbsDown) {
|
||||
observable = mediaItemManager.setDislikeObserve(mController.getVideo().mediaItem);
|
||||
observable = mediaItemManager.setDislikeObserve(video.mediaItem);
|
||||
} else {
|
||||
observable = mediaItemManager.removeDislikeObserve(mController.getVideo().mediaItem);
|
||||
observable = mediaItemManager.removeDislikeObserve(video.mediaItem);
|
||||
}
|
||||
|
||||
observable
|
||||
@@ -209,7 +215,9 @@ public class PlayerUiManager extends PlayerEventListenerHelper implements Metada
|
||||
|
||||
@Override
|
||||
public void onThumbsUpClicked(boolean thumbsUp) {
|
||||
if (mController.getVideo() == null) {
|
||||
Video video = mController.getVideo();
|
||||
|
||||
if (video == null || video.mediaItem == null) {
|
||||
Log.e(TAG, "Seems that video isn't initialized yet. Cancelling...");
|
||||
return;
|
||||
}
|
||||
@@ -220,9 +228,9 @@ public class PlayerUiManager extends PlayerEventListenerHelper implements Metada
|
||||
Observable<Void> observable;
|
||||
|
||||
if (thumbsUp) {
|
||||
observable = mediaItemManager.setLikeObserve(mController.getVideo().mediaItem);
|
||||
observable = mediaItemManager.setLikeObserve(video.mediaItem);
|
||||
} else {
|
||||
observable = mediaItemManager.removeLikeObserve(mController.getVideo().mediaItem);
|
||||
observable = mediaItemManager.removeLikeObserve(video.mediaItem);
|
||||
}
|
||||
|
||||
observable
|
||||
|
||||
+1
-13
@@ -64,7 +64,7 @@ public abstract class LeanbackActivity extends FragmentActivity {
|
||||
protected void onResume() {
|
||||
super.onResume();
|
||||
|
||||
// While entering/exiting PIP mode only Pause/Resume is called
|
||||
// PIP fix: While entering/exiting PIP mode only Pause/Resume is called
|
||||
|
||||
mModeSyncManager.restore(this);
|
||||
|
||||
@@ -72,18 +72,6 @@ public abstract class LeanbackActivity extends FragmentActivity {
|
||||
mViewManager.addTop(this);
|
||||
}
|
||||
|
||||
//@Override
|
||||
//public void onPictureInPictureModeChanged(boolean isInPictureInPictureMode) {
|
||||
// super.onPictureInPictureModeChanged(isInPictureInPictureMode);
|
||||
//
|
||||
// // While entering/exiting PIP mode only Pause/Resume is called
|
||||
//
|
||||
// if (!isInPictureInPictureMode) {
|
||||
// mModeSyncManager.restore(this);
|
||||
// mViewManager.addTop(this); // user makes pip activity fullscreen
|
||||
// }
|
||||
//}
|
||||
|
||||
@Override
|
||||
protected void onStop() {
|
||||
super.onStop();
|
||||
|
||||
+30
-16
@@ -76,26 +76,38 @@ public class PlaybackActivity extends LeanbackActivity {
|
||||
// More: https://medium.com/s23nyc-tech/drop-in-android-video-exoplayer2-with-picture-in-picture-e2d4f8c1eb30
|
||||
@SuppressWarnings("deprecation")
|
||||
private void enterPIPMode() {
|
||||
Log.d(TAG, "Entering PIP mode...");
|
||||
// NOTE: When exiting PIP mode onPause is called immediately after onResume
|
||||
|
||||
if (Build.VERSION.SDK_INT >= 24 && getPackageManager().hasSystemFeature(PackageManager.FEATURE_PICTURE_IN_PICTURE)) {
|
||||
//videoPosition = player.currentPosition
|
||||
//playerView.useController = false
|
||||
if (Build.VERSION.SDK_INT >= 26) {
|
||||
PictureInPictureParams.Builder params = new PictureInPictureParams.Builder();
|
||||
enterPictureInPictureMode(params.build());
|
||||
} else {
|
||||
enterPictureInPictureMode();
|
||||
// Also, avoid enter pip on stop!
|
||||
// More info: https://developer.android.com/guide/topics/ui/picture-in-picture#continuing_playback
|
||||
|
||||
if (wannaEnterToPIP()) {
|
||||
Log.d(TAG, "Entering PIP mode...");
|
||||
|
||||
try {
|
||||
if (Build.VERSION.SDK_INT >= 26) {
|
||||
PictureInPictureParams.Builder params = new PictureInPictureParams.Builder();
|
||||
enterPictureInPictureMode(params.build());
|
||||
} else {
|
||||
enterPictureInPictureMode();
|
||||
}
|
||||
} catch (Exception e) {
|
||||
// Device doesn't support picture-in-picture mode
|
||||
Log.e(TAG, e.getMessage());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private boolean wannaEnterToPIP() {
|
||||
boolean pipIsSupported = Build.VERSION.SDK_INT >= 24 && getPackageManager().hasSystemFeature(PackageManager.FEATURE_PICTURE_IN_PICTURE);
|
||||
|
||||
return pipIsSupported && !isInPictureInPictureMode() && mPlaybackFragment.isPIPEnabled();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPictureInPictureModeChanged(boolean isInPictureInPictureMode) {
|
||||
super.onPictureInPictureModeChanged(isInPictureInPictureMode);
|
||||
|
||||
mPlaybackFragment.blockEngine(isInPictureInPictureMode);
|
||||
|
||||
mPlaybackFragment.restartEngine();
|
||||
}
|
||||
|
||||
@@ -107,14 +119,16 @@ public class PlaybackActivity extends LeanbackActivity {
|
||||
// More info: https://developer.android.com/guide/topics/ui/picture-in-picture#continuing_playback
|
||||
|
||||
// User pressed back.
|
||||
if (wannaEnterToPIP()) {
|
||||
enterPIPMode();
|
||||
}
|
||||
enterPIPMode();
|
||||
|
||||
super.finish();
|
||||
}
|
||||
|
||||
private boolean wannaEnterToPIP() {
|
||||
return !isInPictureInPictureMode() && mPlaybackFragment.isPIPEnabled();
|
||||
public boolean isInPIPMode() {
|
||||
if (Build.VERSION.SDK_INT < 24) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return isInPictureInPictureMode();
|
||||
}
|
||||
}
|
||||
|
||||
+5
-2
@@ -490,11 +490,14 @@ public class PlaybackFragment extends VideoSupportFragment implements PlaybackVi
|
||||
|
||||
@Override
|
||||
public boolean isInPIPMode() {
|
||||
if (getActivity() == null) {
|
||||
PlaybackActivity playbackActivity = (PlaybackActivity) getActivity();
|
||||
|
||||
if (playbackActivity == null) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return getActivity().isInPictureInPictureMode();
|
||||
// Old api fix
|
||||
return playbackActivity.isInPIPMode();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
+6
-4
@@ -131,9 +131,11 @@ public class AppSettingsFragment extends LeanbackSettingsFragment
|
||||
PreferenceScreen screen = getPreferenceManager().createPreferenceScreen(mExtractedContext);
|
||||
screen.setTitle(mTitle);
|
||||
|
||||
for (SettingsCategory category : mCategories) {
|
||||
if (category.items != null) {
|
||||
screen.addPreference(mManager.createPreference(category));
|
||||
if (mCategories != null) {
|
||||
for (SettingsCategory category : mCategories) {
|
||||
if (category.items != null) {
|
||||
screen.addPreference(mManager.createPreference(category));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -144,7 +146,7 @@ public class AppSettingsFragment extends LeanbackSettingsFragment
|
||||
|
||||
private void setSingleListAsRoot(PreferenceScreen screen) {
|
||||
// auto expand single list preference
|
||||
if (mCategories.size() == 1) {
|
||||
if (mCategories.size() == 1 && screen.getPreferenceCount() > 0) {
|
||||
onDisplayPreferenceDialog(screen.getPreference(0));
|
||||
|
||||
getFragmentManager().addOnBackStackChangedListener(() -> {
|
||||
|
||||
Reference in New Issue
Block a user