diff --git a/app/src/main/java/org/schabi/newpipe/player/BasePlayer.java b/app/src/main/java/org/schabi/newpipe/player/BasePlayer.java index 0e4d07179..d6a656a29 100644 --- a/app/src/main/java/org/schabi/newpipe/player/BasePlayer.java +++ b/app/src/main/java/org/schabi/newpipe/player/BasePlayer.java @@ -98,35 +98,54 @@ public abstract class BasePlayer implements Player.EventListener, PlaybackListener, ImageLoadingListener { public static final boolean DEBUG = !BuildConfig.BUILD_TYPE.equals("release"); - @NonNull public static final String TAG = "BasePlayer"; + @NonNull + public static final String TAG = "BasePlayer"; - @NonNull final protected Context context; + @NonNull + final protected Context context; - @NonNull final protected BroadcastReceiver broadcastReceiver; - @NonNull final protected IntentFilter intentFilter; + @NonNull + final protected BroadcastReceiver broadcastReceiver; + @NonNull + final protected IntentFilter intentFilter; - @NonNull final protected HistoryRecordManager recordManager; + @NonNull + final protected HistoryRecordManager recordManager; - @NonNull final protected CustomTrackSelector trackSelector; - @NonNull final protected PlayerDataSource dataSource; + @NonNull + final protected CustomTrackSelector trackSelector; + @NonNull + final protected PlayerDataSource dataSource; - @NonNull final private LoadControl loadControl; - @NonNull final private RenderersFactory renderFactory; + @NonNull + final private LoadControl loadControl; + @NonNull + final private RenderersFactory renderFactory; - @NonNull final private SerialDisposable progressUpdateReactor; - @NonNull final private CompositeDisposable databaseUpdateReactor; + @NonNull + final private SerialDisposable progressUpdateReactor; + @NonNull + final private CompositeDisposable databaseUpdateReactor; /*////////////////////////////////////////////////////////////////////////// // Intent //////////////////////////////////////////////////////////////////////////*/ - @NonNull public static final String REPEAT_MODE = "repeat_mode"; - @NonNull public static final String PLAYBACK_PITCH = "playback_pitch"; - @NonNull public static final String PLAYBACK_SPEED = "playback_speed"; - @NonNull public static final String PLAYBACK_SKIP_SILENCE = "playback_skip_silence"; - @NonNull public static final String PLAYBACK_QUALITY = "playback_quality"; - @NonNull public static final String PLAY_QUEUE_KEY = "play_queue_key"; - @NonNull public static final String APPEND_ONLY = "append_only"; - @NonNull public static final String SELECT_ON_APPEND = "select_on_append"; + @NonNull + public static final String REPEAT_MODE = "repeat_mode"; + @NonNull + public static final String PLAYBACK_PITCH = "playback_pitch"; + @NonNull + public static final String PLAYBACK_SPEED = "playback_speed"; + @NonNull + public static final String PLAYBACK_SKIP_SILENCE = "playback_skip_silence"; + @NonNull + public static final String PLAYBACK_QUALITY = "playback_quality"; + @NonNull + public static final String PLAY_QUEUE_KEY = "play_queue_key"; + @NonNull + public static final String APPEND_ONLY = "append_only"; + @NonNull + public static final String SELECT_ON_APPEND = "select_on_append"; /*////////////////////////////////////////////////////////////////////////// // Playback @@ -137,13 +156,18 @@ public abstract class BasePlayer implements protected PlayQueue playQueue; protected PlayQueueAdapter playQueueAdapter; - @Nullable protected MediaSourceManager playbackManager; + @Nullable + protected MediaSourceManager playbackManager; - @Nullable private PlayQueueItem currentItem; - @Nullable private MediaSourceTag currentMetadata; - @Nullable private Bitmap currentThumbnail; + @Nullable + private PlayQueueItem currentItem; + @Nullable + private MediaSourceTag currentMetadata; + @Nullable + private Bitmap currentThumbnail; - @Nullable protected Toast errorToast; + @Nullable + protected Toast errorToast; /*////////////////////////////////////////////////////////////////////////// // Player @@ -213,7 +237,8 @@ public abstract class BasePlayer implements registerBroadcastReceiver(); } - public void initListeners() {} + public void initListeners() { + } public void handleIntent(Intent intent) { if (DEBUG) Log.d(TAG, "handleIntent() called with: intent = [" + intent + "]"); @@ -297,7 +322,6 @@ public abstract class BasePlayer implements databaseUpdateReactor.clear(); progressUpdateReactor.set(null); - simpleExoPlayer = null; } /*////////////////////////////////////////////////////////////////////////// @@ -425,13 +449,15 @@ public abstract class BasePlayer implements if (!isProgressLoopRunning()) startProgressLoop(); } - public void onBuffering() {} + public void onBuffering() { + } public void onPaused() { if (isProgressLoopRunning()) stopProgressLoop(); } - public void onPausedSeek() {} + public void onPausedSeek() { + } public void onCompleted() { if (DEBUG) Log.d(TAG, "onCompleted() called"); @@ -602,19 +628,19 @@ public abstract class BasePlayer implements /** * Processes the exceptions produced by {@link com.google.android.exoplayer2.ExoPlayer ExoPlayer}. * There are multiple types of errors:

- * + *

* {@link ExoPlaybackException#TYPE_SOURCE TYPE_SOURCE}:

- * + *

* {@link ExoPlaybackException#TYPE_UNEXPECTED TYPE_UNEXPECTED}:

* If a runtime error occurred, then we can try to recover it by restarting the playback * after setting the timestamp recovery.

- * + *

* {@link ExoPlaybackException#TYPE_RENDERER TYPE_RENDERER}:

* If the renderer failed, treat the error as unrecoverable. * * @see #processSourceError(IOException) * @see Player.EventListener#onPlayerError(ExoPlaybackException) - * */ + */ @Override public void onPlayerError(ExoPlaybackException error) { if (DEBUG) Log.d(TAG, "ExoPlayer - onPlayerError() called with: " + @@ -900,8 +926,8 @@ public abstract class BasePlayer implements if (DEBUG) Log.d(TAG, "onPlayPrevious() called"); /* If current playback has run for PLAY_PREV_ACTIVATION_LIMIT_MILLIS milliseconds, - * restart current track. Also restart the track if the current track - * is the first in a queue.*/ + * restart current track. Also restart the track if the current track + * is the first in a queue.*/ if (simpleExoPlayer.getCurrentPosition() > PLAY_PREV_ACTIVATION_LIMIT_MILLIS || playQueue.getIndex() == 0) { seekToDefault(); @@ -1010,8 +1036,8 @@ public abstract class BasePlayer implements try { metadata = (MediaSourceTag) simpleExoPlayer.getCurrentTag(); } catch (IndexOutOfBoundsException | ClassCastException error) { - if(DEBUG) Log.d(TAG, "Could not update metadata: " + error.getMessage()); - if(DEBUG) error.printStackTrace(); + if (DEBUG) Log.d(TAG, "Could not update metadata: " + error.getMessage()); + if (DEBUG) error.printStackTrace(); return; } @@ -1075,7 +1101,9 @@ public abstract class BasePlayer implements currentThumbnail; } - /** Checks if the current playback is a livestream AND is playing at or beyond the live edge */ + /** + * Checks if the current playback is a livestream AND is playing at or beyond the live edge + */ @SuppressWarnings("BooleanMethodIsAlwaysInverted") public boolean isLiveEdge() { if (simpleExoPlayer == null || !isLive()) return false; @@ -1099,8 +1127,8 @@ public abstract class BasePlayer implements } catch (@NonNull IndexOutOfBoundsException ignored) { // Why would this even happen =( // But lets log it anyway. Save is save - if(DEBUG) Log.d(TAG, "Could not update metadata: " + ignored.getMessage()); - if(DEBUG) ignored.printStackTrace(); + if (DEBUG) Log.d(TAG, "Could not update metadata: " + ignored.getMessage()); + if (DEBUG) ignored.printStackTrace(); return false; } } diff --git a/app/src/main/java/org/schabi/newpipe/util/ListHelper.java b/app/src/main/java/org/schabi/newpipe/util/ListHelper.java index 871d0578f..8fc423837 100644 --- a/app/src/main/java/org/schabi/newpipe/util/ListHelper.java +++ b/app/src/main/java/org/schabi/newpipe/util/ListHelper.java @@ -110,7 +110,8 @@ public final class ListHelper { : context.getString(R.string.best_resolution_key); String maxResolution = getResolutionLimit(context); - if (maxResolution != null && compareVideoStreamResolution(maxResolution, resolution) < 1){ + if (maxResolution != null && (resolution.equals(context.getString(R.string.best_resolution_key)) + || compareVideoStreamResolution(maxResolution, resolution) < 1)) { resolution = maxResolution; } return resolution; diff --git a/app/src/main/java/us/shandian/giga/ui/adapter/MissionAdapter.java b/app/src/main/java/us/shandian/giga/ui/adapter/MissionAdapter.java index d5555c2be..bca8796b5 100644 --- a/app/src/main/java/us/shandian/giga/ui/adapter/MissionAdapter.java +++ b/app/src/main/java/us/shandian/giga/ui/adapter/MissionAdapter.java @@ -96,12 +96,12 @@ public class MissionAdapter extends RecyclerView.Adapter - - - + diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index 842042e16..3fad6b288 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -508,4 +508,21 @@ Сетка Автоматически + Менять яркость плеера жестом + Жест яркости + Загрузка на внешний накопитель невозможна. Сбросить расположение папки загрузки? + Внешний накопитель недоступен + Вкладки, видимые на главной странице + По умолчанию + Хотите восстановить умолчания? + Ошибка чтения сохранённых вкладок. Используются вкладки по умолчанию + Выбор + Количество подписчиков недоступно + Переключить вид + Выберите вкладку + Новая вкладка + Отписаться + Менять громкость плеера жестом + Жест громкости +