Cleaned up MusicService and MusicPlayerRemote even more.

This commit is contained in:
Karim Abou Zeid 2015-06-19 18:39:00 +02:00
commit 60cae85ecb
7 changed files with 200 additions and 169 deletions

View file

@ -248,11 +248,6 @@ public class MainActivity extends AbsFabActivity
return TAG;
}
@Override
protected void onResume() {
super.onResume();
updateNavigationDrawerHeader();
}
private void updateNavigationDrawerHeader() {
Song song = MusicPlayerRemote.getCurrentSong();
@ -305,6 +300,12 @@ public class MainActivity extends AbsFabActivity
updateNavigationDrawerHeader();
}
@Override
public void onServiceConnected() {
super.onServiceConnected();
updateNavigationDrawerHeader();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
if (isAlbumPage()) {
@ -411,7 +412,7 @@ public class MainActivity extends AbsFabActivity
MusicPlayerRemote.openQueue(SearchQueryHelper.getSongs(this, intent.getExtras()), 0, true);
}
if (uri != null && uri.toString().length() > 0) {
MusicPlayerRemote.playFile(uri);
MusicPlayerRemote.playFile(uri.toString());
handled = true;
} else if (MediaStore.Audio.Playlists.CONTENT_TYPE.equals(mimeType)) {
final int id = (int) parseIdFromIntent(intent, "playlistId", "playlist");

View file

@ -20,6 +20,7 @@ import com.kabouzeid.gramophone.dialogs.ColorChooserDialog;
import com.kabouzeid.gramophone.helper.PlayingNotificationHelper;
import com.kabouzeid.gramophone.model.UIPreferenceChangedEvent;
import com.kabouzeid.gramophone.prefs.ColorChooserPreference;
import com.kabouzeid.gramophone.service.MusicService;
import com.kabouzeid.gramophone.ui.activities.base.AbsBaseActivity;
import com.kabouzeid.gramophone.util.NavigationUtil;
import com.kabouzeid.gramophone.util.PreferenceUtils;
@ -146,6 +147,15 @@ public class SettingsActivity extends AbsBaseActivity implements ColorChooserDia
}
});
Preference gaplessPlayback = findPreference("gapless_playback");
gaplessPlayback.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
getActivity().sendBroadcast(new Intent(MusicService.SETTING_GAPLESS_PLAYBACK_CHANGED).putExtra(MusicService.SETTING_GAPLESS_PLAYBACK_CHANGED_VALUE_EXTRA, (boolean) newValue));
return true;
}
});
equalizer = findPreference("equalizer");
resolveEqualizer();
equalizer.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {

View file

@ -5,6 +5,7 @@ import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import com.kabouzeid.gramophone.helper.MusicPlayerRemote;
import com.kabouzeid.gramophone.service.MusicService;
import java.lang.ref.WeakReference;
@ -13,7 +14,7 @@ import java.lang.ref.WeakReference;
* @author Karim Abou Zeid (kabouzeid)
*/
public abstract class AbsPlaybackStatusActivity extends AbsBaseActivity {
private PlaybackStatus playbackStatus;
private PlaybackStatusReceiver playbackStatusReceiver;
public void onPlayingMetaChanged() {
@ -31,35 +32,45 @@ public abstract class AbsPlaybackStatusActivity extends AbsBaseActivity {
}
public void onServiceConnected() {
}
@Override
protected void onStart() {
super.onStart();
playbackStatus = new PlaybackStatus(this);
playbackStatusReceiver = new PlaybackStatusReceiver(this);
// ensures that onServiceConnected() is called even if the service is already connected and wont sent the Intent again.
if (MusicPlayerRemote.isServiceConnected()) {
onServiceConnected();
}
final IntentFilter filter = new IntentFilter();
filter.addAction(MusicService.PLAYSTATE_CHANGED);
filter.addAction(MusicService.SHUFFLEMODE_CHANGED);
filter.addAction(MusicService.REPEATMODE_CHANGED);
filter.addAction(MusicService.META_CHANGED);
filter.addAction(MusicPlayerRemote.SERVICE_BOUND);
registerReceiver(playbackStatus, filter);
registerReceiver(playbackStatusReceiver, filter);
}
@Override
protected void onStop() {
super.onStop();
try {
unregisterReceiver(playbackStatus);
unregisterReceiver(playbackStatusReceiver);
} catch (Throwable ignored) {
}
}
private static final class PlaybackStatus extends BroadcastReceiver {
private static final class PlaybackStatusReceiver extends BroadcastReceiver {
private final WeakReference<AbsPlaybackStatusActivity> reference;
public PlaybackStatus(final AbsPlaybackStatusActivity activity) {
public PlaybackStatusReceiver(final AbsPlaybackStatusActivity activity) {
reference = new WeakReference<>(activity);
}
@ -79,6 +90,9 @@ public abstract class AbsPlaybackStatusActivity extends AbsBaseActivity {
case MusicService.SHUFFLEMODE_CHANGED:
reference.get().onShuffleModeChanged();
break;
case MusicPlayerRemote.SERVICE_BOUND:
reference.get().onServiceConnected();
break;
}
}
}