diff --git a/app/build.gradle b/app/build.gradle index e09395cff..468006578 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -17,8 +17,8 @@ android { resValue "string", "app_name", "NewPipe" minSdkVersion 19 targetSdkVersion 29 - versionCode 978 - versionName "0.21.12" + versionCode 979 + versionName "0.21.13" multiDexEnabled true diff --git a/app/src/main/java/org/schabi/newpipe/App.java b/app/src/main/java/org/schabi/newpipe/App.java index b44f7517d..3785249b4 100644 --- a/app/src/main/java/org/schabi/newpipe/App.java +++ b/app/src/main/java/org/schabi/newpipe/App.java @@ -254,4 +254,5 @@ public class App extends MultiDexApplication { protected boolean isDisposedRxExceptionsReported() { return false; } + } diff --git a/app/src/main/java/org/schabi/newpipe/CheckForNewAppVersion.java b/app/src/main/java/org/schabi/newpipe/CheckForNewAppVersion.java index 64874cd93..9c392be1e 100644 --- a/app/src/main/java/org/schabi/newpipe/CheckForNewAppVersion.java +++ b/app/src/main/java/org/schabi/newpipe/CheckForNewAppVersion.java @@ -235,6 +235,23 @@ public final class CheckForNewAppVersion extends IntentService { } } + /** + * Start a new service which + * checks if all conditions for performing a version check are met, + * fetches the API endpoint {@link #NEWPIPE_API_URL} containing info + * about the latest NewPipe version + * and displays a notification about ana available update. + *
+ * Following conditions need to be met, before data is request from the server: + * + * Must not be executed when the app is in background. + */ public static void startNewVersionCheckService() { final Intent intent = new Intent(App.getApp().getApplicationContext(), CheckForNewAppVersion.class); diff --git a/app/src/main/java/org/schabi/newpipe/MainActivity.java b/app/src/main/java/org/schabi/newpipe/MainActivity.java index 18ab69b7b..2a8872e26 100644 --- a/app/src/main/java/org/schabi/newpipe/MainActivity.java +++ b/app/src/main/java/org/schabi/newpipe/MainActivity.java @@ -21,6 +21,7 @@ package org.schabi.newpipe; import static org.schabi.newpipe.CheckForNewAppVersion.startNewVersionCheckService; +import static org.schabi.newpipe.util.Localization.assureCorrectAppLanguage; import android.content.BroadcastReceiver; import android.content.Context; @@ -93,8 +94,6 @@ import java.util.ArrayList; import java.util.List; import java.util.Objects; -import static org.schabi.newpipe.util.Localization.assureCorrectAppLanguage; - public class MainActivity extends AppCompatActivity { private static final String TAG = "MainActivity"; @SuppressWarnings("ConstantConditions") @@ -165,8 +164,14 @@ public class MainActivity extends AppCompatActivity { FocusOverlayView.setupFocusObserver(this); } openMiniPlayerUponPlayerStarted(); + } - // Check for new version + @Override + protected void onPostCreate(final Bundle savedInstanceState) { + super.onPostCreate(savedInstanceState); + // Start the service which is checking all conditions + // and eventually searching for a new version. + // The service searching for a new NewPipe version must not be started in background. startNewVersionCheckService(); } diff --git a/app/src/main/java/org/schabi/newpipe/fragments/detail/VideoDetailFragment.java b/app/src/main/java/org/schabi/newpipe/fragments/detail/VideoDetailFragment.java index 5a30ea0f3..437cb2fdb 100644 --- a/app/src/main/java/org/schabi/newpipe/fragments/detail/VideoDetailFragment.java +++ b/app/src/main/java/org/schabi/newpipe/fragments/detail/VideoDetailFragment.java @@ -1181,7 +1181,7 @@ public final class VideoDetailFragment addVideoPlayerView(); final Intent playerIntent = NavigationHelper.getPlayerIntent(requireContext(), - MainPlayer.class, queue, autoPlayEnabled); + MainPlayer.class, queue, true, autoPlayEnabled); ContextCompat.startForegroundService(activity, playerIntent); } diff --git a/app/src/main/java/org/schabi/newpipe/util/NavigationHelper.java b/app/src/main/java/org/schabi/newpipe/util/NavigationHelper.java index afa826677..cb796a7a6 100644 --- a/app/src/main/java/org/schabi/newpipe/util/NavigationHelper.java +++ b/app/src/main/java/org/schabi/newpipe/util/NavigationHelper.java @@ -77,7 +77,8 @@ public final class NavigationHelper { @NonNull public static Intent getPlayerIntent(@NonNull final Context context, @NonNull final Class targetClazz, - @Nullable final PlayQueue playQueue) { + @Nullable final PlayQueue playQueue, + final boolean resumePlayback) { final Intent intent = new Intent(context, targetClazz); if (playQueue != null) { @@ -87,6 +88,7 @@ public final class NavigationHelper { } } intent.putExtra(Player.PLAYER_TYPE, MainPlayer.PlayerType.VIDEO.ordinal()); + intent.putExtra(Player.RESUME_PLAYBACK, resumePlayback); return intent; } @@ -95,8 +97,9 @@ public final class NavigationHelper { public static Intent getPlayerIntent(@NonNull final Context context, @NonNull final Class targetClazz, @Nullable final PlayQueue playQueue, + final boolean resumePlayback, final boolean playWhenReady) { - return getPlayerIntent(context, targetClazz, playQueue) + return getPlayerIntent(context, targetClazz, playQueue, resumePlayback) .putExtra(Player.PLAY_WHEN_READY, playWhenReady); } @@ -104,7 +107,14 @@ public final class NavigationHelper { public static Intent getPlayerEnqueueIntent(@NonNull final Context context, @NonNull final Class targetClazz, @Nullable final PlayQueue playQueue) { - return getPlayerIntent(context, targetClazz, playQueue) + // when enqueueing `resumePlayback` is always `false` since: + // - if there is a video already playing, the value of `resumePlayback` just doesn't make + // any difference. + // - if there is nothing already playing, it is useful for the enqueue action to have a + // slightly different behaviour than the normal play action: the latter resumes playback, + // the former doesn't. (note that enqueue can be triggered when nothing is playing only + // by long pressing the video detail fragment, playlist or channel controls + return getPlayerIntent(context, targetClazz, playQueue, false) .putExtra(Player.ENQUEUE, true); } @@ -112,7 +122,8 @@ public final class NavigationHelper { public static Intent getPlayerEnqueueNextIntent(@NonNull final Context context, @NonNull final Class targetClazz, @Nullable final PlayQueue playQueue) { - return getPlayerIntent(context, targetClazz, playQueue) + // see comment in `getPlayerEnqueueIntent` as to why `resumePlayback` is false + return getPlayerIntent(context, targetClazz, playQueue, false) .putExtra(Player.ENQUEUE_NEXT, true); } diff --git a/fastlane/metadata/android/en-US/changelogs/979.txt b/fastlane/metadata/android/en-US/changelogs/979.txt new file mode 100644 index 000000000..520d92993 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/979.txt @@ -0,0 +1,2 @@ +- Fixed resuming playback +- Improvements to ensure that the service which determines if NewPipe should check for a new version checks is not started in background \ No newline at end of file