mirror of
				https://github.com/TeamNewPipe/NewPipe
				synced 2025-10-31 07:13:00 +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:
		| @@ -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> | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 John Zhen Mo
					John Zhen Mo