mirror of
https://github.com/TeamNewPipe/NewPipe
synced 2025-01-11 09:50:32 +00:00
-Expanded minimize to exit to allow resuming on background player.
-Modified minimize to exit toggle to selection dialog.
This commit is contained in:
parent
4fc37a7321
commit
e1df4757e4
@ -213,12 +213,7 @@ public final class MainVideoPlayer extends AppCompatActivity
|
|||||||
|
|
||||||
isInMultiWindow = false;
|
isInMultiWindow = false;
|
||||||
|
|
||||||
if (playerImpl == null) return;
|
if (playerImpl != null) playerImpl.terminate();
|
||||||
if (PlayerHelper.isMinimizeOnExitEnabled(this)) {
|
|
||||||
playerImpl.onFullScreenButtonClicked();
|
|
||||||
} else {
|
|
||||||
playerImpl.destroy();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*//////////////////////////////////////////////////////////////////////////
|
/*//////////////////////////////////////////////////////////////////////////
|
||||||
@ -448,6 +443,20 @@ public final class MainVideoPlayer extends AppCompatActivity
|
|||||||
switchPopupButton.setOnClickListener(this);
|
switchPopupButton.setOnClickListener(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void terminate() {
|
||||||
|
switch (PlayerHelper.getMinimizeOnExitAction(context)) {
|
||||||
|
case PlayerHelper.MinimizeMode.MINIMIZE_ON_EXIT_MODE_BACKGROUND:
|
||||||
|
onPlayBackgroundButtonClicked();
|
||||||
|
break;
|
||||||
|
case PlayerHelper.MinimizeMode.MINIMIZE_ON_EXIT_MODE_POPUP:
|
||||||
|
onFullScreenButtonClicked();
|
||||||
|
break;
|
||||||
|
case PlayerHelper.MinimizeMode.MINIMIZE_ON_EXIT_MODE_NONE:
|
||||||
|
destroy();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/*//////////////////////////////////////////////////////////////////////////
|
/*//////////////////////////////////////////////////////////////////////////
|
||||||
// ExoPlayer Video Listener
|
// ExoPlayer Video Listener
|
||||||
//////////////////////////////////////////////////////////////////////////*/
|
//////////////////////////////////////////////////////////////////////////*/
|
||||||
|
@ -4,6 +4,7 @@ import android.content.Context;
|
|||||||
import android.content.SharedPreferences;
|
import android.content.SharedPreferences;
|
||||||
import android.os.Build;
|
import android.os.Build;
|
||||||
import android.preference.PreferenceManager;
|
import android.preference.PreferenceManager;
|
||||||
|
import android.support.annotation.IntDef;
|
||||||
import android.support.annotation.NonNull;
|
import android.support.annotation.NonNull;
|
||||||
import android.support.annotation.Nullable;
|
import android.support.annotation.Nullable;
|
||||||
import android.view.accessibility.CaptioningManager;
|
import android.view.accessibility.CaptioningManager;
|
||||||
@ -28,6 +29,7 @@ import org.schabi.newpipe.player.playqueue.PlayQueue;
|
|||||||
import org.schabi.newpipe.player.playqueue.PlayQueueItem;
|
import org.schabi.newpipe.player.playqueue.PlayQueueItem;
|
||||||
import org.schabi.newpipe.player.playqueue.SinglePlayQueue;
|
import org.schabi.newpipe.player.playqueue.SinglePlayQueue;
|
||||||
|
|
||||||
|
import java.lang.annotation.Retention;
|
||||||
import java.text.DecimalFormat;
|
import java.text.DecimalFormat;
|
||||||
import java.text.NumberFormat;
|
import java.text.NumberFormat;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
@ -42,6 +44,8 @@ import java.util.concurrent.TimeUnit;
|
|||||||
import static com.google.android.exoplayer2.ui.AspectRatioFrameLayout.RESIZE_MODE_FILL;
|
import static com.google.android.exoplayer2.ui.AspectRatioFrameLayout.RESIZE_MODE_FILL;
|
||||||
import static com.google.android.exoplayer2.ui.AspectRatioFrameLayout.RESIZE_MODE_FIT;
|
import static com.google.android.exoplayer2.ui.AspectRatioFrameLayout.RESIZE_MODE_FIT;
|
||||||
import static com.google.android.exoplayer2.ui.AspectRatioFrameLayout.RESIZE_MODE_ZOOM;
|
import static com.google.android.exoplayer2.ui.AspectRatioFrameLayout.RESIZE_MODE_ZOOM;
|
||||||
|
import static java.lang.annotation.RetentionPolicy.SOURCE;
|
||||||
|
import static org.schabi.newpipe.player.helper.PlayerHelper.MinimizeMode.*;
|
||||||
|
|
||||||
public class PlayerHelper {
|
public class PlayerHelper {
|
||||||
private PlayerHelper() {}
|
private PlayerHelper() {}
|
||||||
@ -51,6 +55,14 @@ public class PlayerHelper {
|
|||||||
private static final NumberFormat speedFormatter = new DecimalFormat("0.##x");
|
private static final NumberFormat speedFormatter = new DecimalFormat("0.##x");
|
||||||
private static final NumberFormat pitchFormatter = new DecimalFormat("##%");
|
private static final NumberFormat pitchFormatter = new DecimalFormat("##%");
|
||||||
|
|
||||||
|
@Retention(SOURCE)
|
||||||
|
@IntDef({MINIMIZE_ON_EXIT_MODE_NONE, MINIMIZE_ON_EXIT_MODE_BACKGROUND,
|
||||||
|
MINIMIZE_ON_EXIT_MODE_POPUP})
|
||||||
|
public @interface MinimizeMode {
|
||||||
|
int MINIMIZE_ON_EXIT_MODE_NONE = 0;
|
||||||
|
int MINIMIZE_ON_EXIT_MODE_BACKGROUND = 1;
|
||||||
|
int MINIMIZE_ON_EXIT_MODE_POPUP = 2;
|
||||||
|
}
|
||||||
////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////
|
||||||
// Exposed helpers
|
// Exposed helpers
|
||||||
////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////
|
||||||
@ -173,8 +185,20 @@ public class PlayerHelper {
|
|||||||
return isAutoQueueEnabled(context, false);
|
return isAutoQueueEnabled(context, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean isMinimizeOnExitEnabled(@NonNull final Context context) {
|
@MinimizeMode
|
||||||
return isMinimizeOnExitEnabled(context, false);
|
public static int getMinimizeOnExitAction(@NonNull final Context context) {
|
||||||
|
final String defaultAction = context.getString(R.string.minimize_on_exit_none_key);
|
||||||
|
final String popupAction = context.getString(R.string.minimize_on_exit_popup_key);
|
||||||
|
final String backgroundAction = context.getString(R.string.minimize_on_exit_background_key);
|
||||||
|
|
||||||
|
final String action = getMinimizeOnExitAction(context, defaultAction);
|
||||||
|
if (action.equals(popupAction)) {
|
||||||
|
return MINIMIZE_ON_EXIT_MODE_POPUP;
|
||||||
|
} else if (action.equals(backgroundAction)) {
|
||||||
|
return MINIMIZE_ON_EXIT_MODE_BACKGROUND;
|
||||||
|
} else {
|
||||||
|
return MINIMIZE_ON_EXIT_MODE_NONE;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@NonNull
|
@NonNull
|
||||||
@ -326,7 +350,9 @@ public class PlayerHelper {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static boolean isMinimizeOnExitEnabled(@NonNull final Context context, final boolean b) {
|
private static String getMinimizeOnExitAction(@NonNull final Context context,
|
||||||
return getPreferences(context).getBoolean(context.getString(R.string.minimize_on_exit_key), b);
|
final String key) {
|
||||||
|
return getPreferences(context).getString(context.getString(R.string.minimize_on_exit_key),
|
||||||
|
key);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -24,7 +24,22 @@
|
|||||||
<string name="auto_queue_key" translatable="false">auto_queue_key</string>
|
<string name="auto_queue_key" translatable="false">auto_queue_key</string>
|
||||||
<string name="screen_brightness_key" translatable="false">screen_brightness_key</string>
|
<string name="screen_brightness_key" translatable="false">screen_brightness_key</string>
|
||||||
<string name="screen_brightness_timestamp_key" translatable="false">screen_brightness_timestamp_key</string>
|
<string name="screen_brightness_timestamp_key" translatable="false">screen_brightness_timestamp_key</string>
|
||||||
|
|
||||||
<string name="minimize_on_exit_key" translatable="false">minimize_on_exit_key</string>
|
<string name="minimize_on_exit_key" translatable="false">minimize_on_exit_key</string>
|
||||||
|
<string name="minimize_on_exit_value" translatable="false">@string/minimize_on_exit_none_key</string>
|
||||||
|
<string name="minimize_on_exit_none_key" translatable="false">minimize_on_exit_none_key</string>
|
||||||
|
<string name="minimize_on_exit_background_key" translatable="false">minimize_on_exit_background_key</string>
|
||||||
|
<string name="minimize_on_exit_popup_key" translatable="false">minimize_on_exit_popup_key</string>
|
||||||
|
<string-array name="minimize_on_exit_action_key" translatable="false">
|
||||||
|
<item>@string/minimize_on_exit_none_key</item>
|
||||||
|
<item>@string/minimize_on_exit_background_key</item>
|
||||||
|
<item>@string/minimize_on_exit_popup_key</item>
|
||||||
|
</string-array>
|
||||||
|
<string-array name="minimize_on_exit_action_description" translatable="false">
|
||||||
|
<item>@string/minimize_on_exit_none_description</item>
|
||||||
|
<item>@string/minimize_on_exit_background_description</item>
|
||||||
|
<item>@string/minimize_on_exit_popup_description</item>
|
||||||
|
</string-array>
|
||||||
|
|
||||||
<string name="default_resolution_key" translatable="false">default_resolution</string>
|
<string name="default_resolution_key" translatable="false">default_resolution</string>
|
||||||
<string name="default_resolution_value" translatable="false">360p</string>
|
<string name="default_resolution_value" translatable="false">360p</string>
|
||||||
|
@ -74,8 +74,6 @@
|
|||||||
<string name="popup_remember_size_pos_summary">Remember last size and position of popup</string>
|
<string name="popup_remember_size_pos_summary">Remember last size and position of popup</string>
|
||||||
<string name="use_inexact_seek_title">Use fast inexact seek</string>
|
<string name="use_inexact_seek_title">Use fast inexact seek</string>
|
||||||
<string name="use_inexact_seek_summary">Inexact seek allows the player to seek to positions faster with reduced precision</string>
|
<string name="use_inexact_seek_summary">Inexact seek allows the player to seek to positions faster with reduced precision</string>
|
||||||
<string name="minimize_on_exit_title">Minimize on exit</string>
|
|
||||||
<string name="minimize_on_exit_summary">Experimental. Switch to play on popup player when exiting main video player</string>
|
|
||||||
<string name="download_thumbnail_title">Load thumbnails</string>
|
<string name="download_thumbnail_title">Load thumbnails</string>
|
||||||
<string name="download_thumbnail_summary">Disable to stop all thumbnails from loading and save on data and memory usage. Changing this will clear both in-memory and on-disk image cache.</string>
|
<string name="download_thumbnail_summary">Disable to stop all thumbnails from loading and save on data and memory usage. Changing this will clear both in-memory and on-disk image cache.</string>
|
||||||
<string name="thumbnail_cache_wipe_complete_notice">Image cache wiped</string>
|
<string name="thumbnail_cache_wipe_complete_notice">Image cache wiped</string>
|
||||||
@ -506,4 +504,11 @@
|
|||||||
<item>144p</item>
|
<item>144p</item>
|
||||||
</string-array>
|
</string-array>
|
||||||
|
|
||||||
|
<!-- Minimize to exit action -->
|
||||||
|
<string name="minimize_on_exit_title">Minimize on exit</string>
|
||||||
|
<string name="minimize_on_exit_summary">Action when exiting main video player — %s</string>
|
||||||
|
<string name="minimize_on_exit_none_description">None</string>
|
||||||
|
<string name="minimize_on_exit_background_description">Minimize to background player</string>
|
||||||
|
<string name="minimize_on_exit_popup_description">Minimize to popup player</string>
|
||||||
|
|
||||||
</resources>
|
</resources>
|
||||||
|
@ -90,6 +90,14 @@
|
|||||||
android:summary="@string/preferred_open_action_settings_summary"
|
android:summary="@string/preferred_open_action_settings_summary"
|
||||||
android:title="@string/preferred_open_action_settings_title"/>
|
android:title="@string/preferred_open_action_settings_title"/>
|
||||||
|
|
||||||
|
<ListPreference
|
||||||
|
android:defaultValue="@string/minimize_on_exit_value"
|
||||||
|
android:entries="@array/minimize_on_exit_action_description"
|
||||||
|
android:entryValues="@array/minimize_on_exit_action_key"
|
||||||
|
android:key="@string/minimize_on_exit_key"
|
||||||
|
android:summary="@string/minimize_on_exit_summary"
|
||||||
|
android:title="@string/minimize_on_exit_title"/>
|
||||||
|
|
||||||
<SwitchPreference
|
<SwitchPreference
|
||||||
android:defaultValue="false"
|
android:defaultValue="false"
|
||||||
android:key="@string/resume_on_audio_focus_gain_key"
|
android:key="@string/resume_on_audio_focus_gain_key"
|
||||||
@ -113,11 +121,5 @@
|
|||||||
android:key="@string/use_inexact_seek_key"
|
android:key="@string/use_inexact_seek_key"
|
||||||
android:summary="@string/use_inexact_seek_summary"
|
android:summary="@string/use_inexact_seek_summary"
|
||||||
android:title="@string/use_inexact_seek_title"/>
|
android:title="@string/use_inexact_seek_title"/>
|
||||||
|
|
||||||
<SwitchPreference
|
|
||||||
android:defaultValue="false"
|
|
||||||
android:key="@string/minimize_on_exit_key"
|
|
||||||
android:title="@string/minimize_on_exit_title"
|
|
||||||
android:summary="@string/minimize_on_exit_summary"/>
|
|
||||||
</PreferenceCategory>
|
</PreferenceCategory>
|
||||||
</PreferenceScreen>
|
</PreferenceScreen>
|
||||||
|
Loading…
Reference in New Issue
Block a user