mirror of
https://framagit.org/tom79/fedilab-tube
synced 2025-06-05 21:09:11 +02:00
Play Minimized video when app in background
This commit is contained in:
@ -48,6 +48,7 @@ import android.widget.ScrollView;
|
||||
import android.widget.TextView;
|
||||
import android.widget.Toast;
|
||||
|
||||
import androidx.annotation.RequiresApi;
|
||||
import androidx.appcompat.app.AppCompatActivity;
|
||||
import androidx.appcompat.widget.AppCompatImageView;
|
||||
import androidx.appcompat.widget.PopupMenu;
|
||||
@ -132,6 +133,8 @@ public class PeertubeActivity extends AppCompatActivity {
|
||||
private List<PlaylistElement> playlistForVideo;
|
||||
private List<Playlist> playlists;
|
||||
private PlaylistsVM playlistsViewModel;
|
||||
private boolean playInMinimized;
|
||||
private boolean onStopCalled;
|
||||
|
||||
public static void hideKeyboard(Activity activity) {
|
||||
if (activity != null && activity.getWindow() != null) {
|
||||
@ -145,6 +148,7 @@ public class PeertubeActivity extends AppCompatActivity {
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
|
||||
SharedPreferences sharedpreferences = getSharedPreferences(Helper.APP_PREFS, MODE_PRIVATE);
|
||||
fullscreen = FullScreenMediaController.fullscreen.OFF;
|
||||
fullScreenMode = false;
|
||||
@ -169,7 +173,11 @@ public class PeertubeActivity extends AppCompatActivity {
|
||||
peertube_playlist = findViewById(R.id.peertube_playlist);
|
||||
send = findViewById(R.id.send);
|
||||
|
||||
|
||||
playInMinimized = sharedpreferences.getBoolean(getString(R.string.set_video_minimize_choice), true);
|
||||
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.N
|
||||
&& !getPackageManager().hasSystemFeature(PackageManager.FEATURE_PICTURE_IN_PICTURE)) {
|
||||
playInMinimized = false;
|
||||
}
|
||||
peertube_playlist.setVisibility(View.VISIBLE);
|
||||
peertube_bookmark.setVisibility(View.GONE);
|
||||
|
||||
@ -674,22 +682,52 @@ public class PeertubeActivity extends AppCompatActivity {
|
||||
@Override
|
||||
public void onDestroy() {
|
||||
super.onDestroy();
|
||||
if (player != null)
|
||||
if (player != null) {
|
||||
player.setPlayWhenReady(false);
|
||||
player.release();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onPause() {
|
||||
super.onPause();
|
||||
if (player != null) {
|
||||
if (player != null && !playInMinimized) {
|
||||
player.setPlayWhenReady(false);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@RequiresApi(api = Build.VERSION_CODES.N)
|
||||
@Override
|
||||
public void onUserLeaveHint() {
|
||||
if (playInMinimized) {
|
||||
enterPictureInPictureMode();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPictureInPictureModeChanged(boolean isInPictureInPictureMode, Configuration newConfig) {
|
||||
if (isInPictureInPictureMode) {
|
||||
setFullscreen(FullScreenMediaController.fullscreen.ON);
|
||||
} else {
|
||||
setFullscreen(FullScreenMediaController.fullscreen.OFF);
|
||||
if (onStopCalled) {
|
||||
finish();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onStop() {
|
||||
super.onStop();
|
||||
onStopCalled = true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onResume() {
|
||||
super.onResume();
|
||||
if (player != null) {
|
||||
onStopCalled = false;
|
||||
if (player != null && !playInMinimized) {
|
||||
player.setPlayWhenReady(true);
|
||||
}
|
||||
}
|
||||
|
@ -8,6 +8,7 @@ import androidx.fragment.app.FragmentActivity;
|
||||
import androidx.preference.ListPreference;
|
||||
import androidx.preference.PreferenceFragmentCompat;
|
||||
import androidx.preference.PreferenceScreen;
|
||||
import androidx.preference.SwitchPreference;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
@ -57,24 +58,33 @@ public class SettingsFragment extends PreferenceFragmentCompat implements Shared
|
||||
|
||||
@Override
|
||||
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
|
||||
if (key.compareTo(getString(R.string.set_video_mode_choice)) == 0) {
|
||||
ListPreference set_video_mode_choice = findPreference(getString(R.string.set_video_mode_choice));
|
||||
if (set_video_mode_choice != null && getActivity() != null) {
|
||||
SharedPreferences sharedpreferences = getActivity().getSharedPreferences(Helper.APP_PREFS, Context.MODE_PRIVATE);
|
||||
SharedPreferences.Editor editor = sharedpreferences.edit();
|
||||
switch (set_video_mode_choice.getValue()) {
|
||||
case "0":
|
||||
editor.putInt(Helper.SET_VIDEO_MODE, Helper.VIDEO_MODE_NORMAL);
|
||||
break;
|
||||
case "1":
|
||||
editor.putInt(Helper.SET_VIDEO_MODE, Helper.VIDEO_MODE_STREAMING);
|
||||
break;
|
||||
case "2":
|
||||
editor.putInt(Helper.SET_VIDEO_MODE, Helper.VIDEO_MODE_WEBVIEW);
|
||||
break;
|
||||
|
||||
if (getActivity() != null) {
|
||||
SharedPreferences sharedpreferences = getActivity().getSharedPreferences(Helper.APP_PREFS, Context.MODE_PRIVATE);
|
||||
SharedPreferences.Editor editor = sharedpreferences.edit();
|
||||
|
||||
if (key.compareTo(getString(R.string.set_video_mode_choice)) == 0) {
|
||||
ListPreference set_video_mode_choice = findPreference(getString(R.string.set_video_mode_choice));
|
||||
if (set_video_mode_choice != null) {
|
||||
switch (set_video_mode_choice.getValue()) {
|
||||
case "0":
|
||||
editor.putInt(Helper.SET_VIDEO_MODE, Helper.VIDEO_MODE_NORMAL);
|
||||
break;
|
||||
case "1":
|
||||
editor.putInt(Helper.SET_VIDEO_MODE, Helper.VIDEO_MODE_STREAMING);
|
||||
break;
|
||||
case "2":
|
||||
editor.putInt(Helper.SET_VIDEO_MODE, Helper.VIDEO_MODE_WEBVIEW);
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
editor.apply();
|
||||
}
|
||||
if (key.compareTo(getString(R.string.set_video_minimize_choice)) == 0) {
|
||||
SwitchPreference set_video_minimize_choice = findPreference(getString(R.string.set_video_minimize_choice));
|
||||
editor.putBoolean(getString(R.string.set_video_minimize_choice), set_video_minimize_choice.isChecked());
|
||||
}
|
||||
editor.apply();
|
||||
}
|
||||
}
|
||||
|
||||
@ -105,5 +115,8 @@ public class SettingsFragment extends PreferenceFragmentCompat implements Shared
|
||||
set_video_mode_choice.setValueIndex(video_mode);
|
||||
}
|
||||
|
||||
boolean minimized = sharedpref.getBoolean(getString(R.string.set_video_minimize_choice), true);
|
||||
SwitchPreference set_video_minimize_choice = findPreference(getString(R.string.set_video_minimize_choice));
|
||||
set_video_minimize_choice.setChecked(minimized);
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user