diff options
-rw-r--r-- | res/values/strings.xml | 2 | ||||
-rw-r--r-- | res/xml/settings.xml | 7 | ||||
-rw-r--r-- | src/com/cyanogenmod/eleven/IElevenService.aidl | 1 | ||||
-rw-r--r-- | src/com/cyanogenmod/eleven/MusicPlaybackService.java | 24 | ||||
-rw-r--r-- | src/com/cyanogenmod/eleven/ui/activities/SettingsActivity.java | 4 | ||||
-rw-r--r-- | src/com/cyanogenmod/eleven/utils/MusicUtils.java | 36 | ||||
-rw-r--r-- | src/com/cyanogenmod/eleven/utils/PreferenceUtils.java | 7 |
7 files changed, 72 insertions, 9 deletions
diff --git a/res/values/strings.xml b/res/values/strings.xml index 4047af3..80d7734 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -142,6 +142,8 @@ <string name="settings_show_lyrics_summary">For songs that have an srt file</string> <string name="settings_shake_to_play">Shake to Play</string> <string name="settings_shake_to_play_summary">Shake your device to play next song</string> + <string name="settings_lockscreen_album_art">Lockscreen album art</string> + <string name="settings_lockscreen_album_art_summary">Replace lockscreen background with album art</string> <!-- App widget --> <string name="app_widget_small">Music: 4 \u00d7 1</string> diff --git a/res/xml/settings.xml b/res/xml/settings.xml index 33151a4..be29c00 100644 --- a/res/xml/settings.xml +++ b/res/xml/settings.xml @@ -58,6 +58,13 @@ android:key="shake_to_play" android:title="@string/settings_shake_to_play" android:summary="@string/settings_shake_to_play_summary"/> + + <!-- Show album art on lockscreen --> + <CheckBoxPreference + android:defaultValue="true" + android:key="lockscreen_album_art" + android:title="@string/settings_lockscreen_album_art" + android:summary="@string/settings_lockscreen_album_art_summary"/> </PreferenceCategory> <!-- Storage catetory --> <PreferenceCategory android:title="@string/settings_storage_category" > 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() @@ -2769,6 +2775,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 */ private void startShakeDetector() { @@ -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<Context, ServiceBinder>(); 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 <code>ServiceBinder</code> * * @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 @@ -275,9 +275,19 @@ 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); @@ -287,6 +297,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 */ public static void asyncNext(final Context context) { 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 |