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.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;

View file

@ -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;

View file

@ -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<Song> playingQueue;
private List<Song> restoredOriginalQueue;
private List<OnMusicRemoteEventListener> 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")

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.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<Song> playingQueue;
private List<Song> originalPlayingQueue;
private List<OnMusicRemoteEventListener> 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:

View file

@ -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;

View file

@ -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";

View file

@ -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()) {

View file

@ -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;

View file

@ -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: