Added a quick toggle for remote/streaming playback mode selection.

This commit is contained in:
casey langen 2017-06-03 13:46:32 -07:00
parent 5999ba3962
commit 29eabab4c6
6 changed files with 47 additions and 0 deletions

View File

@ -109,14 +109,24 @@ public class MainActivity extends WebSocketActivityBase {
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
boolean connected = wss.getState() == WebSocketService.State.Connected;
boolean streaming = isStreamingSelected();
menu.findItem(R.id.action_playlists).setEnabled(connected);
menu.findItem(R.id.action_genres).setEnabled(connected);
menu.findItem(R.id.action_remote_toggle).setIcon(
streaming ? R.mipmap.ic_toolbar_streaming : R.mipmap.ic_toolbar_remote);
return super.onPrepareOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.action_remote_toggle:
togglePlaybackService();
return true;
case R.id.action_settings:
startActivity(SettingsActivity.getStartIntent(this));
return true;
@ -144,6 +154,28 @@ public class MainActivity extends WebSocketActivityBase {
return this.playbackEvents;
}
private boolean isStreamingSelected() {
return prefs.getBoolean(
Prefs.Key.STREAMING_PLAYBACK,
Prefs.Default.STREAMING_PLAYBACK);
}
private void togglePlaybackService() {
final boolean streaming = isStreamingSelected();
if (streaming) {
playback.stop();
}
prefs.edit().putBoolean(Prefs.Key.STREAMING_PLAYBACK, !streaming).apply();
reloadPlaybackService();
this.playback = getPlaybackService();
supportInvalidateOptionsMenu();
rebindUi();
}
private void bindCheckBoxEventListeners() {
this.shuffleCb.setOnCheckedChangeListener(shuffleListener);
this.muteCb.setOnCheckedChangeListener(muteListener);

View File

@ -107,6 +107,14 @@ public abstract class WebSocketActivityBase extends AppCompatActivity implements
}
protected void reloadPlaybackService() {
if (!paused && this.playback != null) {
this.playback.disconnect(getPlaybackServiceEventListener());
this.playback = PlaybackServiceFactory.instance(this);
this.playback.connect(getPlaybackServiceEventListener());
}
}
protected final Runner runner() {
return this.runnerDelegate.runner();
}

View File

@ -3,6 +3,12 @@
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/action_remote_toggle"
app:showAsAction="always"
android:title="@string/menu_remote_toggle"
android:icon="@mipmap/ic_toolbar_remote" />
<item
android:id="@+id/action_playlists"
app:showAsAction="never"

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

View File

@ -52,6 +52,7 @@
<string name="menu_settings">settings</string>
<string name="menu_genres">genres</string>
<string name="menu_playlists">playlists</string>
<string name="menu_remote_toggle">remote playback</string>
<string name="unknown_value">&lt;unknown&gt;</string>
<string name="settings_playback_mode">playback mode:</string>
<string name="settings_transcoder_bitrate">streaming downsampler bitrate:</string>