From eaa534c2764f973e2ee8abd523bd45969f7879f2 Mon Sep 17 00:00:00 2001 From: Karim Abou Zeid Date: Wed, 11 Mar 2015 14:25:37 +0100 Subject: [PATCH] Replaced MusicRemoteEventListener with otto bus --- app/build.gradle | 1 + .../java/com/kabouzeid/gramophone/App.java | 4 +++ .../gramophone/helper/MusicPlayerRemote.java | 27 ++----------------- .../OnMusicRemoteEventListener.java | 10 ------- .../gramophone/service/MusicService.java | 12 ++------- .../ui/activities/AlbumDetailActivity.java | 3 +-- .../ui/activities/ArtistDetailActivity.java | 3 +-- .../ui/activities/MainActivity.java | 14 +++------- .../activities/MusicControllerActivity.java | 6 ++--- .../ui/activities/base/AbsFabActivity.java | 17 ++++++++---- 10 files changed, 28 insertions(+), 69 deletions(-) delete mode 100644 app/src/main/java/com/kabouzeid/gramophone/interfaces/OnMusicRemoteEventListener.java diff --git a/app/build.gradle b/app/build.gradle index 130f7203..89c9ec51 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -55,6 +55,7 @@ dependencies { compile 'com.github.ksoichiro:android-observablescrollview:1.3.0' compile 'com.mcxiaoke.volley:library:1.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.crashlytics.sdk.android:crashlytics:2.2.1@aar') { transitive = true; diff --git a/app/src/main/java/com/kabouzeid/gramophone/App.java b/app/src/main/java/com/kabouzeid/gramophone/App.java index 7f516126..e9a81444 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/App.java +++ b/app/src/main/java/com/kabouzeid/gramophone/App.java @@ -11,6 +11,8 @@ import com.android.volley.toolbox.Volley; import com.crashlytics.android.Crashlytics; import com.kabouzeid.gramophone.helper.MusicPlayerRemote; import com.kabouzeid.gramophone.misc.AppKeys; +import com.squareup.otto.Bus; +import com.squareup.otto.ThreadEnforcer; import io.fabric.sdk.android.Fabric; @@ -20,6 +22,8 @@ import io.fabric.sdk.android.Fabric; public class App extends Application { private static final String TAG = App.class.getSimpleName(); + public static Bus bus = new Bus(ThreadEnforcer.MAIN); + private MusicPlayerRemote playerRemote; private int appTheme; private SharedPreferences defaultSharedPreferences; diff --git a/app/src/main/java/com/kabouzeid/gramophone/helper/MusicPlayerRemote.java b/app/src/main/java/com/kabouzeid/gramophone/helper/MusicPlayerRemote.java index 16f07504..f476bb85 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/helper/MusicPlayerRemote.java +++ b/app/src/main/java/com/kabouzeid/gramophone/helper/MusicPlayerRemote.java @@ -8,7 +8,6 @@ import android.os.IBinder; import android.util.Log; import com.kabouzeid.gramophone.App; -import com.kabouzeid.gramophone.interfaces.OnMusicRemoteEventListener; import com.kabouzeid.gramophone.misc.AppKeys; import com.kabouzeid.gramophone.model.MusicRemoteEvent; import com.kabouzeid.gramophone.model.Song; @@ -22,7 +21,7 @@ import java.util.List; /** * Created by karim on 29.11.14. */ -public class MusicPlayerRemote implements OnMusicRemoteEventListener { +public class MusicPlayerRemote { private static final String TAG = MusicPlayerRemote.class.getSimpleName(); private App app; @@ -31,7 +30,6 @@ public class MusicPlayerRemote implements OnMusicRemoteEventListener { private List playingQueue; private List restoredOriginalQueue; - private List onMusicRemoteEventListeners; private MusicService musicService; private Intent musicServiceIntent; @@ -43,7 +41,6 @@ public class MusicPlayerRemote implements OnMusicRemoteEventListener { musicService = binder.getService(); musicBound = true; musicService.restorePreviousState(restoredOriginalQueue, playingQueue, position); - musicService.addOnMusicRemoteEventListener(MusicPlayerRemote.this); notifyOnMusicRemoteEventListeners(MusicRemoteEvent.SERVICE_CONNECTED); } @@ -58,7 +55,6 @@ public class MusicPlayerRemote implements OnMusicRemoteEventListener { app = (App) context.getApplicationContext(); playingQueue = new ArrayList<>(); restoredOriginalQueue = new ArrayList<>(); - onMusicRemoteEventListeners = new ArrayList<>(); startAndBindService(); } @@ -235,28 +231,9 @@ public class MusicPlayerRemote implements OnMusicRemoteEventListener { } } - @Override - public void onMusicRemoteEvent(MusicRemoteEvent event) { - notifyOnMusicRemoteEventListeners(event.getAction()); - } - private void notifyOnMusicRemoteEventListeners(int event) { MusicRemoteEvent musicRemoteEvent = new MusicRemoteEvent(event); - for (OnMusicRemoteEventListener listener : onMusicRemoteEventListeners) { - listener.onMusicRemoteEvent(musicRemoteEvent); - } - } - - public void addOnMusicRemoteEventListener(OnMusicRemoteEventListener onMusicRemoteEventListener) { - onMusicRemoteEventListeners.add(onMusicRemoteEventListener); - } - - public void removeOnMusicRemoteEventListener(OnMusicRemoteEventListener onMusicRemoteEventListener) { - onMusicRemoteEventListeners.remove(onMusicRemoteEventListener); - } - - public void removeAllOnMusicRemoteEventListeners() { - onMusicRemoteEventListeners.clear(); + App.bus.post(musicRemoteEvent); } @SuppressWarnings("unchecked") diff --git a/app/src/main/java/com/kabouzeid/gramophone/interfaces/OnMusicRemoteEventListener.java b/app/src/main/java/com/kabouzeid/gramophone/interfaces/OnMusicRemoteEventListener.java deleted file mode 100644 index 7456e47f..00000000 --- a/app/src/main/java/com/kabouzeid/gramophone/interfaces/OnMusicRemoteEventListener.java +++ /dev/null @@ -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); -} diff --git a/app/src/main/java/com/kabouzeid/gramophone/service/MusicService.java b/app/src/main/java/com/kabouzeid/gramophone/service/MusicService.java index 1c9c906d..91551ed3 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/service/MusicService.java +++ b/app/src/main/java/com/kabouzeid/gramophone/service/MusicService.java @@ -22,10 +22,10 @@ import android.preference.PreferenceManager; import android.util.Log; import android.widget.Toast; +import com.kabouzeid.gramophone.App; import com.kabouzeid.gramophone.R; import com.kabouzeid.gramophone.helper.PlayingNotificationHelper; import com.kabouzeid.gramophone.helper.ShuffleHelper; -import com.kabouzeid.gramophone.interfaces.OnMusicRemoteEventListener; import com.kabouzeid.gramophone.misc.AppKeys; import com.kabouzeid.gramophone.model.MusicRemoteEvent; import com.kabouzeid.gramophone.model.Song; @@ -64,7 +64,6 @@ public class MusicService extends Service implements MediaPlayer.OnPreparedListe private MediaPlayer player; private List playingQueue; private List originalPlayingQueue; - private List onMusicRemoteEventListeners; private int currentSongId = -1; private int position = -1; private int shuffleMode; @@ -87,7 +86,6 @@ public class MusicService extends Service implements MediaPlayer.OnPreparedListe isPlayerPrepared = false; playingQueue = new ArrayList<>(); originalPlayingQueue = new ArrayList<>(); - onMusicRemoteEventListeners = new ArrayList<>(); playingNotificationHelper = new PlayingNotificationHelper(this); 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) { MusicRemoteEvent musicRemoteEvent = new MusicRemoteEvent(event); - for (OnMusicRemoteEventListener listener : onMusicRemoteEventListeners) { - listener.onMusicRemoteEvent(musicRemoteEvent); - } + App.bus.post(musicRemoteEvent); } public void saveQueues() { @@ -615,10 +611,6 @@ public class MusicService extends Service implements MediaPlayer.OnPreparedListe return player != null && isPlayerPrepared; } - public void addOnMusicRemoteEventListener(OnMusicRemoteEventListener onMusicRemoteEventListener) { - onMusicRemoteEventListeners.add(onMusicRemoteEventListener); - } - public void cycleRepeatMode() { switch (getRepeatMode()) { case REPEAT_MODE_NONE: diff --git a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/AlbumDetailActivity.java b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/AlbumDetailActivity.java index 14c6fd3e..8d67b0e4 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/AlbumDetailActivity.java +++ b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/AlbumDetailActivity.java @@ -25,7 +25,6 @@ import com.kabouzeid.gramophone.R; import com.kabouzeid.gramophone.adapter.songadapter.SongAdapter; import com.kabouzeid.gramophone.comparator.SongTrackNumberComparator; import com.kabouzeid.gramophone.interfaces.KabViewsDisableAble; -import com.kabouzeid.gramophone.interfaces.OnMusicRemoteEventListener; import com.kabouzeid.gramophone.loader.AlbumLoader; import com.kabouzeid.gramophone.loader.AlbumSongLoader; 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(); private static final boolean TOOLBAR_IS_STICKY = true; diff --git a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/ArtistDetailActivity.java b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/ArtistDetailActivity.java index dfeb2664..0e4f537b 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/ArtistDetailActivity.java +++ b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/ArtistDetailActivity.java @@ -28,7 +28,6 @@ import com.github.ksoichiro.android.observablescrollview.ScrollState; import com.google.samples.apps.iosched.ui.widget.SlidingTabLayout; import com.kabouzeid.gramophone.R; import com.kabouzeid.gramophone.interfaces.KabViewsDisableAble; -import com.kabouzeid.gramophone.interfaces.OnMusicRemoteEventListener; import com.kabouzeid.gramophone.lastfm.artist.LastFMArtistImageUrlLoader; import com.kabouzeid.gramophone.loader.ArtistLoader; 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 ARG_ARTIST_ID = "com.kabouzeid.gramophone.artist.id"; diff --git a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/MainActivity.java b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/MainActivity.java index 7142b622..46d1b9fc 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/MainActivity.java +++ b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/MainActivity.java @@ -12,7 +12,6 @@ import android.support.v4.widget.DrawerLayout; import android.support.v7.app.ActionBar; import android.support.v7.app.ActionBarDrawerToggle; import android.support.v7.widget.Toolbar; -import android.util.Log; import android.util.SparseArray; import android.view.LayoutInflater; import android.view.Menu; @@ -28,7 +27,6 @@ import com.kabouzeid.gramophone.R; import com.kabouzeid.gramophone.helper.AboutDeveloperDialogHelper; import com.kabouzeid.gramophone.helper.PlayingQueueDialogHelper; import com.kabouzeid.gramophone.interfaces.KabViewsDisableAble; -import com.kabouzeid.gramophone.interfaces.OnMusicRemoteEventListener; import com.kabouzeid.gramophone.misc.AppKeys; import com.kabouzeid.gramophone.model.MusicRemoteEvent; import com.kabouzeid.gramophone.model.Song; @@ -45,7 +43,7 @@ import com.squareup.picasso.Picasso; public class MainActivity extends AbsFabActivity - implements NavigationDrawerFragment.NavigationDrawerCallbacks, OnMusicRemoteEventListener, KabViewsDisableAble { + implements NavigationDrawerFragment.NavigationDrawerCallbacks, KabViewsDisableAble { public static final String TAG = MainActivity.class.getSimpleName(); private DrawerLayout drawerLayout; @@ -169,7 +167,7 @@ public class MainActivity extends AbsFabActivity toolbar.setEnabled(true); ((MainActivityFragment) viewPagerAdapter.getItem(viewPager.getCurrentItem())).enableViews(); } 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(); ((MainActivityFragment) viewPagerAdapter.getItem(viewPager.getCurrentItem())).disableViews(); } 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); } - @Override - protected void onDestroy() { - super.onDestroy(); - getApp().getMusicPlayerRemote().removeAllOnMusicRemoteEventListeners(); - } - @Override public void onBackPressed() { if (navigationDrawerFragment.isDrawerOpen()) { diff --git a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/MusicControllerActivity.java b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/MusicControllerActivity.java index 72dbabaf..b75d06a0 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/MusicControllerActivity.java +++ b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/MusicControllerActivity.java @@ -3,7 +3,6 @@ package com.kabouzeid.gramophone.ui.activities; import android.content.Intent; import android.graphics.Bitmap; import android.graphics.drawable.BitmapDrawable; -import android.graphics.drawable.Drawable; import android.os.Build; import android.os.Bundle; import android.support.v4.util.Pair; @@ -24,7 +23,6 @@ import com.afollestad.materialdialogs.MaterialDialog; import com.kabouzeid.gramophone.R; import com.kabouzeid.gramophone.helper.PlayingQueueDialogHelper; import com.kabouzeid.gramophone.helper.SongDetailDialogHelper; -import com.kabouzeid.gramophone.interfaces.OnMusicRemoteEventListener; import com.kabouzeid.gramophone.lastfm.artist.LastFMArtistImageUrlLoader; import com.kabouzeid.gramophone.loader.SongFilePathLoader; 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.ViewUtil; import com.nineoldandroids.view.ViewPropertyAnimator; +import com.squareup.otto.Subscribe; import com.squareup.picasso.Callback; import com.squareup.picasso.Picasso; -import com.squareup.picasso.Target; import java.io.File; -public class MusicControllerActivity extends AbsFabActivity implements OnMusicRemoteEventListener { +public class MusicControllerActivity extends AbsFabActivity { public static final String TAG = MusicControllerActivity.class.getSimpleName(); private static final int DEFAULT_DELAY = 350; diff --git a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/base/AbsFabActivity.java b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/base/AbsFabActivity.java index 93fe8746..28913d9d 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/base/AbsFabActivity.java +++ b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/base/AbsFabActivity.java @@ -8,17 +8,25 @@ import android.view.MotionEvent; import android.view.View; import android.widget.Toast; +import com.kabouzeid.gramophone.App; import com.kabouzeid.gramophone.R; -import com.kabouzeid.gramophone.interfaces.OnMusicRemoteEventListener; import com.kabouzeid.gramophone.misc.SmallOnGestureListener; import com.kabouzeid.gramophone.model.MusicRemoteEvent; import com.melnykov.fab.FloatingActionButton; +import com.squareup.otto.Subscribe; /** * 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 Object busEventListener = new Object() { + @Subscribe + public void onBusEvent(MusicRemoteEvent event) { + onMusicRemoteEvent(event); + } + }; @Override protected void onPostCreate(Bundle savedInstanceState) { @@ -91,7 +99,7 @@ public abstract class AbsFabActivity extends AbsBaseActivity implements OnMusicR protected void onResume() { super.onResume(); updateControllerState(); - getApp().getMusicPlayerRemote().addOnMusicRemoteEventListener(this); + App.bus.register(busEventListener); } @Override @@ -142,10 +150,9 @@ public abstract class AbsFabActivity extends AbsBaseActivity implements OnMusicR @Override protected void onStop() { super.onStop(); - getApp().getMusicPlayerRemote().removeOnMusicRemoteEventListener(this); + App.bus.unregister(busEventListener); } - @Override public void onMusicRemoteEvent(MusicRemoteEvent event) { switch (event.getAction()) { case MusicRemoteEvent.PLAY: