Added basic cast button to AudioPlayerFragment
This commit is contained in:
parent
11536361c5
commit
982ce61b3f
@ -429,6 +429,7 @@ public class AudioPlayerFragment extends Fragment implements
|
|||||||
|
|
||||||
public void setupOptionsMenu() {
|
public void setupOptionsMenu() {
|
||||||
if (toolbar.getMenu().size() == 0) {
|
if (toolbar.getMenu().size() == 0) {
|
||||||
|
//toolbar.inflateMenu(R.menu.cast_enabled);
|
||||||
toolbar.inflateMenu(R.menu.mediaplayer);
|
toolbar.inflateMenu(R.menu.mediaplayer);
|
||||||
}
|
}
|
||||||
if (controller == null) {
|
if (controller == null) {
|
||||||
@ -443,6 +444,18 @@ public class AudioPlayerFragment extends Fragment implements
|
|||||||
|
|
||||||
toolbar.getMenu().findItem(R.id.set_sleeptimer_item).setVisible(!controller.sleepTimerActive());
|
toolbar.getMenu().findItem(R.id.set_sleeptimer_item).setVisible(!controller.sleepTimerActive());
|
||||||
toolbar.getMenu().findItem(R.id.disable_sleeptimer_item).setVisible(controller.sleepTimerActive());
|
toolbar.getMenu().findItem(R.id.disable_sleeptimer_item).setVisible(controller.sleepTimerActive());
|
||||||
|
|
||||||
|
/*MenuItem mediaRouteButton = toolbar.getMenu().findItem(R.id.media_route_menu_item);
|
||||||
|
SwitchableMediaRouteActionProvider mediaRouteActionProvider =
|
||||||
|
CastManager.getInstance().addMediaRouterButton(mediaRouteButton);
|
||||||
|
CastEnabledActivity.CastButtonVisibilityManager castButtonVisibilityManager =
|
||||||
|
new CastEnabledActivity.CastButtonVisibilityManager(CastManager.getInstance());
|
||||||
|
castButtonVisibilityManager.setMenu(toolbar.getMenu());
|
||||||
|
castButtonVisibilityManager.setPrefEnabled(UserPreferences.isCastEnabled());
|
||||||
|
castButtonVisibilityManager.mediaRouteActionProvider = mediaRouteActionProvider;
|
||||||
|
castButtonVisibilityManager.setResumed(true);
|
||||||
|
castButtonVisibilityManager.requestCastButton(MenuItem.SHOW_AS_ACTION_ALWAYS);
|
||||||
|
mediaRouteActionProvider.setEnabled(castButtonVisibilityManager.shouldEnable());*/
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -31,9 +31,8 @@ public abstract class CastEnabledActivity extends AppCompatActivity
|
|||||||
|
|
||||||
private CastConsumer castConsumer;
|
private CastConsumer castConsumer;
|
||||||
private CastManager castManager;
|
private CastManager castManager;
|
||||||
|
|
||||||
private SwitchableMediaRouteActionProvider mediaRouteActionProvider;
|
private SwitchableMediaRouteActionProvider mediaRouteActionProvider;
|
||||||
private final CastButtonVisibilityManager castButtonVisibilityManager = new CastButtonVisibilityManager();
|
private CastButtonVisibilityManager castButtonVisibilityManager;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onCreate(Bundle savedInstanceState) {
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
@ -59,6 +58,7 @@ public abstract class CastEnabledActivity extends AppCompatActivity
|
|||||||
};
|
};
|
||||||
castManager = CastManager.getInstance();
|
castManager = CastManager.getInstance();
|
||||||
castManager.addCastConsumer(castConsumer);
|
castManager.addCastConsumer(castConsumer);
|
||||||
|
castButtonVisibilityManager = new CastButtonVisibilityManager(castManager);
|
||||||
castButtonVisibilityManager.setPrefEnabled(UserPreferences.isCastEnabled());
|
castButtonVisibilityManager.setPrefEnabled(UserPreferences.isCastEnabled());
|
||||||
onCastConnectionChanged(castManager.isConnected());
|
onCastConnectionChanged(castManager.isConnected());
|
||||||
}
|
}
|
||||||
@ -103,6 +103,7 @@ public abstract class CastEnabledActivity extends AppCompatActivity
|
|||||||
}
|
}
|
||||||
mediaRouteActionProvider = castManager.addMediaRouterButton(mediaRouteButton);
|
mediaRouteActionProvider = castManager.addMediaRouterButton(mediaRouteButton);
|
||||||
if (mediaRouteActionProvider != null) {
|
if (mediaRouteActionProvider != null) {
|
||||||
|
castButtonVisibilityManager.mediaRouteActionProvider = mediaRouteActionProvider;
|
||||||
mediaRouteActionProvider.setEnabled(castButtonVisibilityManager.shouldEnable());
|
mediaRouteActionProvider.setEnabled(castButtonVisibilityManager.shouldEnable());
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
@ -162,13 +163,19 @@ public abstract class CastEnabledActivity extends AppCompatActivity
|
|||||||
castButtonVisibilityManager.requestCastButton(showAsAction);
|
castButtonVisibilityManager.requestCastButton(showAsAction);
|
||||||
}
|
}
|
||||||
|
|
||||||
private class CastButtonVisibilityManager {
|
public static class CastButtonVisibilityManager {
|
||||||
|
private final CastManager castManager;
|
||||||
private volatile boolean prefEnabled = false;
|
private volatile boolean prefEnabled = false;
|
||||||
private volatile boolean viewRequested = false;
|
private volatile boolean viewRequested = false;
|
||||||
private volatile boolean resumed = false;
|
private volatile boolean resumed = false;
|
||||||
private volatile boolean connected = false;
|
private volatile boolean connected = false;
|
||||||
private volatile int showAsAction = MenuItem.SHOW_AS_ACTION_IF_ROOM;
|
private volatile int showAsAction = MenuItem.SHOW_AS_ACTION_IF_ROOM;
|
||||||
private Menu menu;
|
private Menu menu;
|
||||||
|
public SwitchableMediaRouteActionProvider mediaRouteActionProvider;
|
||||||
|
|
||||||
|
public CastButtonVisibilityManager(CastManager castManager) {
|
||||||
|
this.castManager = castManager;
|
||||||
|
}
|
||||||
|
|
||||||
public synchronized void setPrefEnabled(boolean newValue) {
|
public synchronized void setPrefEnabled(boolean newValue) {
|
||||||
if (prefEnabled != newValue && resumed && (viewRequested || connected)) {
|
if (prefEnabled != newValue && resumed && (viewRequested || connected)) {
|
||||||
|
@ -1218,7 +1218,6 @@ public class PlaybackService extends MediaBrowserServiceCompat {
|
|||||||
notificationBuilder.setCasting(isCasting);
|
notificationBuilder.setCasting(isCasting);
|
||||||
notificationBuilder.updatePosition(getCurrentPosition(), getCurrentPlaybackSpeed());
|
notificationBuilder.updatePosition(getCurrentPosition(), getCurrentPlaybackSpeed());
|
||||||
|
|
||||||
Log.d(TAG, "setupNotification: startForeground" + playerStatus);
|
|
||||||
NotificationManagerCompat notificationManager = NotificationManagerCompat.from(this);
|
NotificationManagerCompat notificationManager = NotificationManagerCompat.from(this);
|
||||||
notificationManager.notify(NOTIFICATION_ID, notificationBuilder.build());
|
notificationManager.notify(NOTIFICATION_ID, notificationBuilder.build());
|
||||||
startForegroundIfPlaying(playerStatus);
|
startForegroundIfPlaying(playerStatus);
|
||||||
@ -1236,10 +1235,12 @@ public class PlaybackService extends MediaBrowserServiceCompat {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void startForegroundIfPlaying(@NonNull PlayerStatus status) {
|
private void startForegroundIfPlaying(@NonNull PlayerStatus status) {
|
||||||
|
Log.d(TAG, "startForegroundIfPlaying: " + status);
|
||||||
if (stateManager.hasReceivedValidStartCommand()) {
|
if (stateManager.hasReceivedValidStartCommand()) {
|
||||||
if (isCasting || status == PlayerStatus.PLAYING || status == PlayerStatus.PREPARING
|
if (isCasting || status == PlayerStatus.PLAYING || status == PlayerStatus.PREPARING
|
||||||
|| status == PlayerStatus.SEEKING) {
|
|| status == PlayerStatus.SEEKING) {
|
||||||
stateManager.startForeground(NOTIFICATION_ID, notificationBuilder.build());
|
stateManager.startForeground(NOTIFICATION_ID, notificationBuilder.build());
|
||||||
|
Log.d(TAG, "foreground");
|
||||||
} else {
|
} else {
|
||||||
stateManager.stopForeground(false);
|
stateManager.stopForeground(false);
|
||||||
NotificationManagerCompat notificationManager = NotificationManagerCompat.from(this);
|
NotificationManagerCompat notificationManager = NotificationManagerCompat.from(this);
|
||||||
@ -1781,6 +1782,7 @@ public class PlaybackService extends MediaBrowserServiceCompat {
|
|||||||
@Override
|
@Override
|
||||||
public void setIsCasting(boolean isCasting) {
|
public void setIsCasting(boolean isCasting) {
|
||||||
PlaybackService.isCasting = isCasting;
|
PlaybackService.isCasting = isCasting;
|
||||||
|
stateManager.validStartCommandWasReceived();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
Loading…
x
Reference in New Issue
Block a user