From e8e1310e734b467430ad51951ce1538f510a155a Mon Sep 17 00:00:00 2001 From: Mikalacki Sava Date: Wed, 4 Mar 2015 16:18:14 +0100 Subject: Eleven: Show/Hide album art on lockscreen Added preference option to show/hide album art on lockscreen. Change-Id: Iea2173288fc279f15abe6675a0ffd582e35ad321 --- src/com/cyanogenmod/eleven/IElevenService.aidl | 1 + .../cyanogenmod/eleven/MusicPlaybackService.java | 24 ++++++++++++++- .../eleven/ui/activities/SettingsActivity.java | 4 ++- src/com/cyanogenmod/eleven/utils/MusicUtils.java | 36 +++++++++++++++++----- .../cyanogenmod/eleven/utils/PreferenceUtils.java | 7 +++++ 5 files changed, 63 insertions(+), 9 deletions(-) (limited to 'src') diff --git a/src/com/cyanogenmod/eleven/IElevenService.aidl b/src/com/cyanogenmod/eleven/IElevenService.aidl index 21ac3ae..fb4d6ce 100644 --- a/src/com/cyanogenmod/eleven/IElevenService.aidl +++ b/src/com/cyanogenmod/eleven/IElevenService.aidl @@ -49,5 +49,6 @@ interface IElevenService int getMediaMountedCount(); int getAudioSessionId(); void setShakeToPlayEnabled(boolean enabled); + void setLockscreenAlbumArt(boolean enabled); } diff --git a/src/com/cyanogenmod/eleven/MusicPlaybackService.java b/src/com/cyanogenmod/eleven/MusicPlaybackService.java index 6703dbf..e420f6d 100644 --- a/src/com/cyanogenmod/eleven/MusicPlaybackService.java +++ b/src/com/cyanogenmod/eleven/MusicPlaybackService.java @@ -524,6 +524,11 @@ public class MusicPlaybackService extends Service { */ private ShakeDetector mShakeDetector; + /** + * Switch for displaying album art on lockscreen + */ + private boolean mShowAlbumArtOnLockscreen; + private ShakeDetector.Listener mShakeDetectorListener=new ShakeDetector.Listener() { @Override @@ -1526,7 +1531,8 @@ public class MusicPlaybackService extends Service { .putLong(MediaMetadata.METADATA_KEY_TRACK_NUMBER, getQueuePosition() + 1) .putLong(MediaMetadata.METADATA_KEY_NUM_TRACKS, getQueue().length) .putString(MediaMetadata.METADATA_KEY_GENRE, getGenreName()) - .putBitmap(MediaMetadata.METADATA_KEY_ALBUM_ART, albumArt) + .putBitmap(MediaMetadata.METADATA_KEY_ALBUM_ART, + mShowAlbumArtOnLockscreen ? albumArt : null) .build()); mSession.setPlaybackState(new PlaybackState.Builder() @@ -2768,6 +2774,14 @@ public class MusicPlaybackService extends Service { } } + /** + * Called to set visibility of album art on lockscreen + */ + public void setLockscreenAlbumArt(boolean enabled) { + mShowAlbumArtOnLockscreen = enabled; + notifyChange(META_CHANGED); + } + /** * Called to start listening to shakes */ @@ -3707,6 +3721,14 @@ public class MusicPlaybackService extends Service { mService.get().setShakeToPlayEnabled(enabled); } + /** + * {@inheritDoc} + */ + @Override + public void setLockscreenAlbumArt(boolean enabled) { + mService.get().setLockscreenAlbumArt(enabled); + } + } } diff --git a/src/com/cyanogenmod/eleven/ui/activities/SettingsActivity.java b/src/com/cyanogenmod/eleven/ui/activities/SettingsActivity.java index 14209a3..856e185 100644 --- a/src/com/cyanogenmod/eleven/ui/activities/SettingsActivity.java +++ b/src/com/cyanogenmod/eleven/ui/activities/SettingsActivity.java @@ -105,8 +105,10 @@ public class SettingsActivity extends PreferenceActivity implements OnSharedPref @Override public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) { - if(key.equals(PreferenceUtils.SHAKE_TO_PLAY)){ + if (key.equals(PreferenceUtils.SHAKE_TO_PLAY)) { MusicUtils.setShakeToPlayEnabled(sharedPreferences.getBoolean(key, false)); + } else if (key.equals(PreferenceUtils.SHOW_ALBUM_ART_ON_LOCKSCREEN)) { + MusicUtils.setShowAlbumArtOnLockscreen(sharedPreferences.getBoolean(key, true)); } } } diff --git a/src/com/cyanogenmod/eleven/utils/MusicUtils.java b/src/com/cyanogenmod/eleven/utils/MusicUtils.java index 252f869..53aa949 100644 --- a/src/com/cyanogenmod/eleven/utils/MusicUtils.java +++ b/src/com/cyanogenmod/eleven/utils/MusicUtils.java @@ -87,8 +87,6 @@ public final class MusicUtils { public static final String MUSIC_ONLY_SELECTION = MediaStore.Audio.AudioColumns.IS_MUSIC + "=1" + " AND " + MediaStore.Audio.AudioColumns.TITLE + " != ''"; //$NON-NLS-2$ - private static boolean sShakeToPlayEnabled; - static { mConnectionMap = new WeakHashMap(); sEmptyList = new long[0]; @@ -109,10 +107,10 @@ public final class MusicUtils { if (realActivity == null) { realActivity = (Activity)context; } - sShakeToPlayEnabled = PreferenceUtils.getInstance(context).getShakeToPlay(); final ContextWrapper contextWrapper = new ContextWrapper(realActivity); contextWrapper.startService(new Intent(contextWrapper, MusicPlaybackService.class)); - final ServiceBinder binder = new ServiceBinder(callback); + final ServiceBinder binder = new ServiceBinder(callback, + contextWrapper.getApplicationContext()); if (contextWrapper.bindService( new Intent().setClass(contextWrapper, MusicPlaybackService.class), binder, 0)) { mConnectionMap.put(contextWrapper, binder); @@ -141,14 +139,16 @@ public final class MusicUtils { public static final class ServiceBinder implements ServiceConnection { private final ServiceConnection mCallback; + private final Context mContext; /** * Constructor of ServiceBinder * * @param context The {@link ServiceConnection} to use */ - public ServiceBinder(final ServiceConnection callback) { + public ServiceBinder(final ServiceConnection callback, final Context context) { mCallback = callback; + mContext = context; } @Override @@ -157,7 +157,7 @@ public final class MusicUtils { if (mCallback != null) { mCallback.onServiceConnected(className, service); } - MusicUtils.setShakeToPlayEnabled(sShakeToPlayEnabled); + MusicUtils.initPlaybackServiceWithSettings(mContext); } @Override @@ -274,10 +274,20 @@ public final class MusicUtils { } } + /** + * Initialize playback service with values from Settings + */ + public static void initPlaybackServiceWithSettings(final Context context) { + MusicUtils.setShakeToPlayEnabled( + PreferenceUtils.getInstance(context).getShakeToPlay()); + MusicUtils.setShowAlbumArtOnLockscreen( + PreferenceUtils.getInstance(context).getShowAlbumArtOnLockscreen()); + } + /** * Set shake to play status */ - public static void setShakeToPlayEnabled(boolean enabled) { + public static void setShakeToPlayEnabled(final boolean enabled) { try { if (mService != null) { mService.setShakeToPlayEnabled(enabled); @@ -286,6 +296,18 @@ public final class MusicUtils { } } + /** + * Set show album art on lockscreen + */ + public static void setShowAlbumArtOnLockscreen(final boolean enabled) { + try { + if (mService != null) { + mService.setLockscreenAlbumArt(enabled); + } + } catch (final RemoteException ignored) { + } + } + /** * Changes to the next track asynchronously */ diff --git a/src/com/cyanogenmod/eleven/utils/PreferenceUtils.java b/src/com/cyanogenmod/eleven/utils/PreferenceUtils.java index e03cf2d..3932d12 100644 --- a/src/com/cyanogenmod/eleven/utils/PreferenceUtils.java +++ b/src/com/cyanogenmod/eleven/utils/PreferenceUtils.java @@ -81,6 +81,9 @@ public final class PreferenceUtils { // shake to play flag public static final String SHAKE_TO_PLAY = "shake_to_play"; + // show/hide album art on lockscreen + public static final String SHOW_ALBUM_ART_ON_LOCKSCREEN = "lockscreen_album_art"; + private static PreferenceUtils sInstance; private final SharedPreferences mPreferences; @@ -338,4 +341,8 @@ public final class PreferenceUtils { public boolean getShakeToPlay() { return mPreferences.getBoolean(SHAKE_TO_PLAY, false); } + + public boolean getShowAlbumArtOnLockscreen() { + return mPreferences.getBoolean(SHOW_ALBUM_ART_ON_LOCKSCREEN, true); + } } \ No newline at end of file -- cgit v1.2.3