Replaced MusicRemoteEventListener with otto bus

This commit is contained in:
Karim Abou Zeid 2015-03-11 14:25:37 +01:00
commit eaa534c276
10 changed files with 28 additions and 69 deletions

View file

@ -55,6 +55,7 @@ dependencies {
compile 'com.github.ksoichiro:android-observablescrollview:1.3.0' compile 'com.github.ksoichiro:android-observablescrollview:1.3.0'
compile 'com.mcxiaoke.volley:library:1.0.+' compile 'com.mcxiaoke.volley:library:1.0.+'
compile 'com.squareup.picasso:picasso:2.5.0' compile 'com.squareup.picasso:picasso:2.5.0'
compile 'com.squareup:otto:1.3.6'
compile 'com.afollestad:material-dialogs:0.6.3.4' compile 'com.afollestad:material-dialogs:0.6.3.4'
compile('com.crashlytics.sdk.android:crashlytics:2.2.1@aar') { compile('com.crashlytics.sdk.android:crashlytics:2.2.1@aar') {
transitive = true; transitive = true;

View file

@ -11,6 +11,8 @@ import com.android.volley.toolbox.Volley;
import com.crashlytics.android.Crashlytics; import com.crashlytics.android.Crashlytics;
import com.kabouzeid.gramophone.helper.MusicPlayerRemote; import com.kabouzeid.gramophone.helper.MusicPlayerRemote;
import com.kabouzeid.gramophone.misc.AppKeys; import com.kabouzeid.gramophone.misc.AppKeys;
import com.squareup.otto.Bus;
import com.squareup.otto.ThreadEnforcer;
import io.fabric.sdk.android.Fabric; import io.fabric.sdk.android.Fabric;
@ -20,6 +22,8 @@ import io.fabric.sdk.android.Fabric;
public class App extends Application { public class App extends Application {
private static final String TAG = App.class.getSimpleName(); private static final String TAG = App.class.getSimpleName();
public static Bus bus = new Bus(ThreadEnforcer.MAIN);
private MusicPlayerRemote playerRemote; private MusicPlayerRemote playerRemote;
private int appTheme; private int appTheme;
private SharedPreferences defaultSharedPreferences; private SharedPreferences defaultSharedPreferences;

View file

@ -8,7 +8,6 @@ import android.os.IBinder;
import android.util.Log; import android.util.Log;
import com.kabouzeid.gramophone.App; import com.kabouzeid.gramophone.App;
import com.kabouzeid.gramophone.interfaces.OnMusicRemoteEventListener;
import com.kabouzeid.gramophone.misc.AppKeys; import com.kabouzeid.gramophone.misc.AppKeys;
import com.kabouzeid.gramophone.model.MusicRemoteEvent; import com.kabouzeid.gramophone.model.MusicRemoteEvent;
import com.kabouzeid.gramophone.model.Song; import com.kabouzeid.gramophone.model.Song;
@ -22,7 +21,7 @@ import java.util.List;
/** /**
* Created by karim on 29.11.14. * Created by karim on 29.11.14.
*/ */
public class MusicPlayerRemote implements OnMusicRemoteEventListener { public class MusicPlayerRemote {
private static final String TAG = MusicPlayerRemote.class.getSimpleName(); private static final String TAG = MusicPlayerRemote.class.getSimpleName();
private App app; private App app;
@ -31,7 +30,6 @@ public class MusicPlayerRemote implements OnMusicRemoteEventListener {
private List<Song> playingQueue; private List<Song> playingQueue;
private List<Song> restoredOriginalQueue; private List<Song> restoredOriginalQueue;
private List<OnMusicRemoteEventListener> onMusicRemoteEventListeners;
private MusicService musicService; private MusicService musicService;
private Intent musicServiceIntent; private Intent musicServiceIntent;
@ -43,7 +41,6 @@ public class MusicPlayerRemote implements OnMusicRemoteEventListener {
musicService = binder.getService(); musicService = binder.getService();
musicBound = true; musicBound = true;
musicService.restorePreviousState(restoredOriginalQueue, playingQueue, position); musicService.restorePreviousState(restoredOriginalQueue, playingQueue, position);
musicService.addOnMusicRemoteEventListener(MusicPlayerRemote.this);
notifyOnMusicRemoteEventListeners(MusicRemoteEvent.SERVICE_CONNECTED); notifyOnMusicRemoteEventListeners(MusicRemoteEvent.SERVICE_CONNECTED);
} }
@ -58,7 +55,6 @@ public class MusicPlayerRemote implements OnMusicRemoteEventListener {
app = (App) context.getApplicationContext(); app = (App) context.getApplicationContext();
playingQueue = new ArrayList<>(); playingQueue = new ArrayList<>();
restoredOriginalQueue = new ArrayList<>(); restoredOriginalQueue = new ArrayList<>();
onMusicRemoteEventListeners = new ArrayList<>();
startAndBindService(); startAndBindService();
} }
@ -235,28 +231,9 @@ public class MusicPlayerRemote implements OnMusicRemoteEventListener {
} }
} }
@Override
public void onMusicRemoteEvent(MusicRemoteEvent event) {
notifyOnMusicRemoteEventListeners(event.getAction());
}
private void notifyOnMusicRemoteEventListeners(int event) { private void notifyOnMusicRemoteEventListeners(int event) {
MusicRemoteEvent musicRemoteEvent = new MusicRemoteEvent(event); MusicRemoteEvent musicRemoteEvent = new MusicRemoteEvent(event);
for (OnMusicRemoteEventListener listener : onMusicRemoteEventListeners) { App.bus.post(musicRemoteEvent);
listener.onMusicRemoteEvent(musicRemoteEvent);
}
}
public void addOnMusicRemoteEventListener(OnMusicRemoteEventListener onMusicRemoteEventListener) {
onMusicRemoteEventListeners.add(onMusicRemoteEventListener);
}
public void removeOnMusicRemoteEventListener(OnMusicRemoteEventListener onMusicRemoteEventListener) {
onMusicRemoteEventListeners.remove(onMusicRemoteEventListener);
}
public void removeAllOnMusicRemoteEventListeners() {
onMusicRemoteEventListeners.clear();
} }
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")

View file

@ -1,10 +0,0 @@
package com.kabouzeid.gramophone.interfaces;
import com.kabouzeid.gramophone.model.MusicRemoteEvent;
/**
* Created by karim on 19.12.14.
*/
public interface OnMusicRemoteEventListener {
public void onMusicRemoteEvent(MusicRemoteEvent event);
}

View file

@ -22,10 +22,10 @@ import android.preference.PreferenceManager;
import android.util.Log; import android.util.Log;
import android.widget.Toast; import android.widget.Toast;
import com.kabouzeid.gramophone.App;
import com.kabouzeid.gramophone.R; import com.kabouzeid.gramophone.R;
import com.kabouzeid.gramophone.helper.PlayingNotificationHelper; import com.kabouzeid.gramophone.helper.PlayingNotificationHelper;
import com.kabouzeid.gramophone.helper.ShuffleHelper; import com.kabouzeid.gramophone.helper.ShuffleHelper;
import com.kabouzeid.gramophone.interfaces.OnMusicRemoteEventListener;
import com.kabouzeid.gramophone.misc.AppKeys; import com.kabouzeid.gramophone.misc.AppKeys;
import com.kabouzeid.gramophone.model.MusicRemoteEvent; import com.kabouzeid.gramophone.model.MusicRemoteEvent;
import com.kabouzeid.gramophone.model.Song; import com.kabouzeid.gramophone.model.Song;
@ -64,7 +64,6 @@ public class MusicService extends Service implements MediaPlayer.OnPreparedListe
private MediaPlayer player; private MediaPlayer player;
private List<Song> playingQueue; private List<Song> playingQueue;
private List<Song> originalPlayingQueue; private List<Song> originalPlayingQueue;
private List<OnMusicRemoteEventListener> onMusicRemoteEventListeners;
private int currentSongId = -1; private int currentSongId = -1;
private int position = -1; private int position = -1;
private int shuffleMode; private int shuffleMode;
@ -87,7 +86,6 @@ public class MusicService extends Service implements MediaPlayer.OnPreparedListe
isPlayerPrepared = false; isPlayerPrepared = false;
playingQueue = new ArrayList<>(); playingQueue = new ArrayList<>();
originalPlayingQueue = new ArrayList<>(); originalPlayingQueue = new ArrayList<>();
onMusicRemoteEventListeners = new ArrayList<>();
playingNotificationHelper = new PlayingNotificationHelper(this); playingNotificationHelper = new PlayingNotificationHelper(this);
shuffleMode = PreferenceManager.getDefaultSharedPreferences(this).getInt(AppKeys.SP_SHUFFLE_MODE, 0); shuffleMode = PreferenceManager.getDefaultSharedPreferences(this).getInt(AppKeys.SP_SHUFFLE_MODE, 0);
@ -218,9 +216,7 @@ public class MusicService extends Service implements MediaPlayer.OnPreparedListe
private void notifyOnMusicRemoteEventListeners(int event) { private void notifyOnMusicRemoteEventListeners(int event) {
MusicRemoteEvent musicRemoteEvent = new MusicRemoteEvent(event); MusicRemoteEvent musicRemoteEvent = new MusicRemoteEvent(event);
for (OnMusicRemoteEventListener listener : onMusicRemoteEventListeners) { App.bus.post(musicRemoteEvent);
listener.onMusicRemoteEvent(musicRemoteEvent);
}
} }
public void saveQueues() { public void saveQueues() {
@ -615,10 +611,6 @@ public class MusicService extends Service implements MediaPlayer.OnPreparedListe
return player != null && isPlayerPrepared; return player != null && isPlayerPrepared;
} }
public void addOnMusicRemoteEventListener(OnMusicRemoteEventListener onMusicRemoteEventListener) {
onMusicRemoteEventListeners.add(onMusicRemoteEventListener);
}
public void cycleRepeatMode() { public void cycleRepeatMode() {
switch (getRepeatMode()) { switch (getRepeatMode()) {
case REPEAT_MODE_NONE: case REPEAT_MODE_NONE:

View file

@ -25,7 +25,6 @@ import com.kabouzeid.gramophone.R;
import com.kabouzeid.gramophone.adapter.songadapter.SongAdapter; import com.kabouzeid.gramophone.adapter.songadapter.SongAdapter;
import com.kabouzeid.gramophone.comparator.SongTrackNumberComparator; import com.kabouzeid.gramophone.comparator.SongTrackNumberComparator;
import com.kabouzeid.gramophone.interfaces.KabViewsDisableAble; import com.kabouzeid.gramophone.interfaces.KabViewsDisableAble;
import com.kabouzeid.gramophone.interfaces.OnMusicRemoteEventListener;
import com.kabouzeid.gramophone.loader.AlbumLoader; import com.kabouzeid.gramophone.loader.AlbumLoader;
import com.kabouzeid.gramophone.loader.AlbumSongLoader; import com.kabouzeid.gramophone.loader.AlbumSongLoader;
import com.kabouzeid.gramophone.misc.AppKeys; import com.kabouzeid.gramophone.misc.AppKeys;
@ -54,7 +53,7 @@ import java.util.List;
* *
* */ * */
public class AlbumDetailActivity extends AbsFabActivity implements OnMusicRemoteEventListener, KabViewsDisableAble { public class AlbumDetailActivity extends AbsFabActivity implements KabViewsDisableAble {
public static final String TAG = AlbumDetailActivity.class.getSimpleName(); public static final String TAG = AlbumDetailActivity.class.getSimpleName();
private static final boolean TOOLBAR_IS_STICKY = true; private static final boolean TOOLBAR_IS_STICKY = true;

View file

@ -28,7 +28,6 @@ import com.github.ksoichiro.android.observablescrollview.ScrollState;
import com.google.samples.apps.iosched.ui.widget.SlidingTabLayout; import com.google.samples.apps.iosched.ui.widget.SlidingTabLayout;
import com.kabouzeid.gramophone.R; import com.kabouzeid.gramophone.R;
import com.kabouzeid.gramophone.interfaces.KabViewsDisableAble; import com.kabouzeid.gramophone.interfaces.KabViewsDisableAble;
import com.kabouzeid.gramophone.interfaces.OnMusicRemoteEventListener;
import com.kabouzeid.gramophone.lastfm.artist.LastFMArtistImageUrlLoader; import com.kabouzeid.gramophone.lastfm.artist.LastFMArtistImageUrlLoader;
import com.kabouzeid.gramophone.loader.ArtistLoader; import com.kabouzeid.gramophone.loader.ArtistLoader;
import com.kabouzeid.gramophone.misc.AppKeys; import com.kabouzeid.gramophone.misc.AppKeys;
@ -54,7 +53,7 @@ import com.squareup.picasso.Picasso;
* *
* */ * */
public class ArtistDetailActivity extends AbsFabActivity implements OnMusicRemoteEventListener, KabViewsDisableAble, ObservableScrollViewCallbacks { public class ArtistDetailActivity extends AbsFabActivity implements KabViewsDisableAble, ObservableScrollViewCallbacks {
public static final String TAG = ArtistDetailActivity.class.getSimpleName(); public static final String TAG = ArtistDetailActivity.class.getSimpleName();
public static final String ARG_ARTIST_ID = "com.kabouzeid.gramophone.artist.id"; public static final String ARG_ARTIST_ID = "com.kabouzeid.gramophone.artist.id";

View file

@ -12,7 +12,6 @@ import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.ActionBar; import android.support.v7.app.ActionBar;
import android.support.v7.app.ActionBarDrawerToggle; import android.support.v7.app.ActionBarDrawerToggle;
import android.support.v7.widget.Toolbar; import android.support.v7.widget.Toolbar;
import android.util.Log;
import android.util.SparseArray; import android.util.SparseArray;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.Menu; import android.view.Menu;
@ -28,7 +27,6 @@ import com.kabouzeid.gramophone.R;
import com.kabouzeid.gramophone.helper.AboutDeveloperDialogHelper; import com.kabouzeid.gramophone.helper.AboutDeveloperDialogHelper;
import com.kabouzeid.gramophone.helper.PlayingQueueDialogHelper; import com.kabouzeid.gramophone.helper.PlayingQueueDialogHelper;
import com.kabouzeid.gramophone.interfaces.KabViewsDisableAble; import com.kabouzeid.gramophone.interfaces.KabViewsDisableAble;
import com.kabouzeid.gramophone.interfaces.OnMusicRemoteEventListener;
import com.kabouzeid.gramophone.misc.AppKeys; import com.kabouzeid.gramophone.misc.AppKeys;
import com.kabouzeid.gramophone.model.MusicRemoteEvent; import com.kabouzeid.gramophone.model.MusicRemoteEvent;
import com.kabouzeid.gramophone.model.Song; import com.kabouzeid.gramophone.model.Song;
@ -45,7 +43,7 @@ import com.squareup.picasso.Picasso;
public class MainActivity extends AbsFabActivity public class MainActivity extends AbsFabActivity
implements NavigationDrawerFragment.NavigationDrawerCallbacks, OnMusicRemoteEventListener, KabViewsDisableAble { implements NavigationDrawerFragment.NavigationDrawerCallbacks, KabViewsDisableAble {
public static final String TAG = MainActivity.class.getSimpleName(); public static final String TAG = MainActivity.class.getSimpleName();
private DrawerLayout drawerLayout; private DrawerLayout drawerLayout;
@ -169,7 +167,7 @@ public class MainActivity extends AbsFabActivity
toolbar.setEnabled(true); toolbar.setEnabled(true);
((MainActivityFragment) viewPagerAdapter.getItem(viewPager.getCurrentItem())).enableViews(); ((MainActivityFragment) viewPagerAdapter.getItem(viewPager.getCurrentItem())).enableViews();
} catch (NullPointerException e) { } catch (NullPointerException e) {
Log.e(TAG, "wasn't able to enable the views", e); //Log.e(TAG, "wasn't able to enable the views", e);
} }
} }
@ -179,7 +177,7 @@ public class MainActivity extends AbsFabActivity
super.disableViews(); super.disableViews();
((MainActivityFragment) viewPagerAdapter.getItem(viewPager.getCurrentItem())).disableViews(); ((MainActivityFragment) viewPagerAdapter.getItem(viewPager.getCurrentItem())).disableViews();
} catch (NullPointerException e) { } catch (NullPointerException e) {
Log.e(TAG, "wasn't able to disable the views", e); //Log.e(TAG, "wasn't able to disable the views", e);
} }
} }
@ -252,12 +250,6 @@ public class MainActivity extends AbsFabActivity
super.onConfigurationChanged(newConfig); super.onConfigurationChanged(newConfig);
} }
@Override
protected void onDestroy() {
super.onDestroy();
getApp().getMusicPlayerRemote().removeAllOnMusicRemoteEventListeners();
}
@Override @Override
public void onBackPressed() { public void onBackPressed() {
if (navigationDrawerFragment.isDrawerOpen()) { if (navigationDrawerFragment.isDrawerOpen()) {

View file

@ -3,7 +3,6 @@ package com.kabouzeid.gramophone.ui.activities;
import android.content.Intent; import android.content.Intent;
import android.graphics.Bitmap; import android.graphics.Bitmap;
import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.os.Build; import android.os.Build;
import android.os.Bundle; import android.os.Bundle;
import android.support.v4.util.Pair; import android.support.v4.util.Pair;
@ -24,7 +23,6 @@ import com.afollestad.materialdialogs.MaterialDialog;
import com.kabouzeid.gramophone.R; import com.kabouzeid.gramophone.R;
import com.kabouzeid.gramophone.helper.PlayingQueueDialogHelper; import com.kabouzeid.gramophone.helper.PlayingQueueDialogHelper;
import com.kabouzeid.gramophone.helper.SongDetailDialogHelper; import com.kabouzeid.gramophone.helper.SongDetailDialogHelper;
import com.kabouzeid.gramophone.interfaces.OnMusicRemoteEventListener;
import com.kabouzeid.gramophone.lastfm.artist.LastFMArtistImageUrlLoader; import com.kabouzeid.gramophone.lastfm.artist.LastFMArtistImageUrlLoader;
import com.kabouzeid.gramophone.loader.SongFilePathLoader; import com.kabouzeid.gramophone.loader.SongFilePathLoader;
import com.kabouzeid.gramophone.misc.AppKeys; import com.kabouzeid.gramophone.misc.AppKeys;
@ -37,13 +35,13 @@ import com.kabouzeid.gramophone.util.MusicUtil;
import com.kabouzeid.gramophone.util.Util; import com.kabouzeid.gramophone.util.Util;
import com.kabouzeid.gramophone.util.ViewUtil; import com.kabouzeid.gramophone.util.ViewUtil;
import com.nineoldandroids.view.ViewPropertyAnimator; import com.nineoldandroids.view.ViewPropertyAnimator;
import com.squareup.otto.Subscribe;
import com.squareup.picasso.Callback; import com.squareup.picasso.Callback;
import com.squareup.picasso.Picasso; import com.squareup.picasso.Picasso;
import com.squareup.picasso.Target;
import java.io.File; import java.io.File;
public class MusicControllerActivity extends AbsFabActivity implements OnMusicRemoteEventListener { public class MusicControllerActivity extends AbsFabActivity {
public static final String TAG = MusicControllerActivity.class.getSimpleName(); public static final String TAG = MusicControllerActivity.class.getSimpleName();
private static final int DEFAULT_DELAY = 350; private static final int DEFAULT_DELAY = 350;

View file

@ -8,17 +8,25 @@ import android.view.MotionEvent;
import android.view.View; import android.view.View;
import android.widget.Toast; import android.widget.Toast;
import com.kabouzeid.gramophone.App;
import com.kabouzeid.gramophone.R; import com.kabouzeid.gramophone.R;
import com.kabouzeid.gramophone.interfaces.OnMusicRemoteEventListener;
import com.kabouzeid.gramophone.misc.SmallOnGestureListener; import com.kabouzeid.gramophone.misc.SmallOnGestureListener;
import com.kabouzeid.gramophone.model.MusicRemoteEvent; import com.kabouzeid.gramophone.model.MusicRemoteEvent;
import com.melnykov.fab.FloatingActionButton; import com.melnykov.fab.FloatingActionButton;
import com.squareup.otto.Subscribe;
/** /**
* Created by karim on 22.01.15. * Created by karim on 22.01.15.
*/ */
public abstract class AbsFabActivity extends AbsBaseActivity implements OnMusicRemoteEventListener { public abstract class AbsFabActivity extends AbsBaseActivity {
public static final String TAG = AbsFabActivity.class.getSimpleName();
private FloatingActionButton fab; private FloatingActionButton fab;
private Object busEventListener = new Object() {
@Subscribe
public void onBusEvent(MusicRemoteEvent event) {
onMusicRemoteEvent(event);
}
};
@Override @Override
protected void onPostCreate(Bundle savedInstanceState) { protected void onPostCreate(Bundle savedInstanceState) {
@ -91,7 +99,7 @@ public abstract class AbsFabActivity extends AbsBaseActivity implements OnMusicR
protected void onResume() { protected void onResume() {
super.onResume(); super.onResume();
updateControllerState(); updateControllerState();
getApp().getMusicPlayerRemote().addOnMusicRemoteEventListener(this); App.bus.register(busEventListener);
} }
@Override @Override
@ -142,10 +150,9 @@ public abstract class AbsFabActivity extends AbsBaseActivity implements OnMusicR
@Override @Override
protected void onStop() { protected void onStop() {
super.onStop(); super.onStop();
getApp().getMusicPlayerRemote().removeOnMusicRemoteEventListener(this); App.bus.unregister(busEventListener);
} }
@Override
public void onMusicRemoteEvent(MusicRemoteEvent event) { public void onMusicRemoteEvent(MusicRemoteEvent event) {
switch (event.getAction()) { switch (event.getAction()) {
case MusicRemoteEvent.PLAY: case MusicRemoteEvent.PLAY: