1
0
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:
Thomas
2020-09-19 14:56:10 +02:00
parent 645c9fa240
commit 118c2175f5
8 changed files with 114 additions and 22 deletions

View File

@ -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);
}
}

View File

@ -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);
}
}