Open mini player if player running on app open
This commit is contained in:
parent
00a178f7d3
commit
5a87cfc25d
|
@ -69,6 +69,7 @@ import org.schabi.newpipe.fragments.detail.VideoDetailFragment;
|
||||||
import org.schabi.newpipe.fragments.list.search.SearchFragment;
|
import org.schabi.newpipe.fragments.list.search.SearchFragment;
|
||||||
import org.schabi.newpipe.player.VideoPlayer;
|
import org.schabi.newpipe.player.VideoPlayer;
|
||||||
import org.schabi.newpipe.player.event.OnKeyDownListener;
|
import org.schabi.newpipe.player.event.OnKeyDownListener;
|
||||||
|
import org.schabi.newpipe.player.helper.PlayerHolder;
|
||||||
import org.schabi.newpipe.player.playqueue.PlayQueue;
|
import org.schabi.newpipe.player.playqueue.PlayQueue;
|
||||||
import org.schabi.newpipe.report.ErrorActivity;
|
import org.schabi.newpipe.report.ErrorActivity;
|
||||||
import org.schabi.newpipe.util.Constants;
|
import org.schabi.newpipe.util.Constants;
|
||||||
|
@ -152,7 +153,7 @@ public class MainActivity extends AppCompatActivity {
|
||||||
if (DeviceUtils.isTv(this)) {
|
if (DeviceUtils.isTv(this)) {
|
||||||
FocusOverlayView.setupFocusObserver(this);
|
FocusOverlayView.setupFocusObserver(this);
|
||||||
}
|
}
|
||||||
setupBroadcastReceiver();
|
openMiniPlayerUponPlayerStarted();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void setupDrawer() throws Exception {
|
private void setupDrawer() throws Exception {
|
||||||
|
@ -809,26 +810,30 @@ public class MainActivity extends AppCompatActivity {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void setupBroadcastReceiver() {
|
private void openMiniPlayerIfMissing() {
|
||||||
|
final Fragment fragmentPlayer = getSupportFragmentManager()
|
||||||
|
.findFragmentById(R.id.fragment_player_holder);
|
||||||
|
if (fragmentPlayer == null) {
|
||||||
|
// We still don't have a fragment attached to the activity. It can happen when a user
|
||||||
|
// started popup or background players without opening a stream inside the fragment.
|
||||||
|
// Adding it in a collapsed state (only mini player will be visible).
|
||||||
|
NavigationHelper.showMiniPlayer(getSupportFragmentManager());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void openMiniPlayerUponPlayerStarted() {
|
||||||
|
if (PlayerHolder.isPlayerOpen()) {
|
||||||
|
// no need for a broadcast receiver if the player is already open
|
||||||
|
openMiniPlayerIfMissing();
|
||||||
|
} else {
|
||||||
|
// listen for player intents being sent around
|
||||||
broadcastReceiver = new BroadcastReceiver() {
|
broadcastReceiver = new BroadcastReceiver() {
|
||||||
@Override
|
@Override
|
||||||
public void onReceive(final Context context, final Intent intent) {
|
public void onReceive(final Context context, final Intent intent) {
|
||||||
if (intent.getAction().equals(VideoDetailFragment.ACTION_PLAYER_STARTED)) {
|
if (intent.getAction().equals(VideoDetailFragment.ACTION_PLAYER_STARTED)) {
|
||||||
final Fragment fragmentPlayer = getSupportFragmentManager()
|
openMiniPlayerIfMissing();
|
||||||
.findFragmentById(R.id.fragment_player_holder);
|
// At this point the player is added 100%, we can unregister. Other actions
|
||||||
if (fragmentPlayer == null) {
|
// are useless since the fragment will not be removed after that.
|
||||||
/*
|
|
||||||
* We still don't have a fragment attached to the activity.
|
|
||||||
* It can happen when a user started popup or background players
|
|
||||||
* without opening a stream inside the fragment.
|
|
||||||
* Adding it in a collapsed state (only mini player will be visible)
|
|
||||||
* */
|
|
||||||
NavigationHelper.showMiniPlayer(getSupportFragmentManager());
|
|
||||||
}
|
|
||||||
/*
|
|
||||||
* At this point the player is added 100%, we can unregister.
|
|
||||||
* Other actions are useless since the fragment will not be removed after that
|
|
||||||
* */
|
|
||||||
unregisterReceiver(broadcastReceiver);
|
unregisterReceiver(broadcastReceiver);
|
||||||
broadcastReceiver = null;
|
broadcastReceiver = null;
|
||||||
}
|
}
|
||||||
|
@ -838,6 +843,7 @@ public class MainActivity extends AppCompatActivity {
|
||||||
intentFilter.addAction(VideoDetailFragment.ACTION_PLAYER_STARTED);
|
intentFilter.addAction(VideoDetailFragment.ACTION_PLAYER_STARTED);
|
||||||
registerReceiver(broadcastReceiver, intentFilter);
|
registerReceiver(broadcastReceiver, intentFilter);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private boolean bottomSheetHiddenOrCollapsed() {
|
private boolean bottomSheetHiddenOrCollapsed() {
|
||||||
final FrameLayout bottomSheetLayout = findViewById(R.id.fragment_player_holder);
|
final FrameLayout bottomSheetLayout = findViewById(R.id.fragment_player_holder);
|
||||||
|
|
|
@ -56,6 +56,10 @@ public final class PlayerHolder {
|
||||||
return player.isPlaying();
|
return player.isPlaying();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static boolean isPlayerOpen() {
|
||||||
|
return player != null;
|
||||||
|
}
|
||||||
|
|
||||||
public static void setListener(final PlayerServiceExtendedEventListener newListener) {
|
public static void setListener(final PlayerServiceExtendedEventListener newListener) {
|
||||||
listener = newListener;
|
listener = newListener;
|
||||||
// Force reload data from service
|
// Force reload data from service
|
||||||
|
|
Loading…
Reference in New Issue