From 9de67792c7b99eb36d4092e8c896b7254490152c Mon Sep 17 00:00:00 2001 From: Adrian Ulrich Date: Mon, 5 Oct 2015 21:27:59 +0200 Subject: [PATCH] automatic playlist creation support --- res/values/translatable.xml | 8 ++++++ res/xml/preference_misc.xml | 12 +++++++++ .../android/vanilla/PlaybackService.java | 25 +++++++++++++++++-- .../android/vanilla/PrefKeys.java | 1 + 4 files changed, 44 insertions(+), 2 deletions(-) diff --git a/res/values/translatable.xml b/res/values/translatable.xml index ec2fc91d..35180651 100644 --- a/res/values/translatable.xml +++ b/res/values/translatable.xml @@ -299,4 +299,12 @@ THE SOFTWARE. Filebrowser home Filebrowser starts at this directory Select + + + Automatic playlist creation + Automatically create a + %s \'Top %.0f\' playlist + Do not create an automatic playlist + Top %d + diff --git a/res/xml/preference_misc.xml b/res/xml/preference_misc.xml index 66b2a6ae..e2f09765 100644 --- a/res/xml/preference_misc.xml +++ b/res/xml/preference_misc.xml @@ -22,6 +22,7 @@ THE SOFTWARE. --> + list = sActivities; @@ -1362,10 +1371,10 @@ public final class PlaybackService extends Service public void onCompletion(MediaPlayer player) { - // Count this song as played Song song = mTimeline.getSong(0); - mHandler.sendMessage(mHandler.obtainMessage(MSG_UPDATE_PLAYCOUNTS, song)); + // Count this song as played + mHandler.sendMessageDelayed(mHandler.obtainMessage(MSG_UPDATE_PLAYCOUNTS, song), 2500); if (finishAction(mState) == SongTimeline.FINISH_REPEAT_CURRENT) { setCurrentSong(0); @@ -1545,6 +1554,18 @@ public final class PlaybackService extends Service case MSG_UPDATE_PLAYCOUNTS: Song song = (Song)message.obj; mPlayCounts.countSong(song); + + // Update the playcounts playlist in ~20% of all cases if enabled + if (mAutoPlPlaycounts > 0 && Math.random() > 0.8) { + ContentResolver resolver = getContentResolver(); + // Add an invisible whitespace to adjust our sorting + String playlistName = "\u200B"+getString(R.string.autoplaylist_playcounts_name, mAutoPlPlaycounts); + long id = Playlist.createPlaylist(resolver, playlistName); + ArrayList items = mPlayCounts.getTopSongs(mAutoPlPlaycounts); + Playlist.addToPlaylist(resolver, id, items); + } + + break; default: return false; diff --git a/src/ch/blinkenlights/android/vanilla/PrefKeys.java b/src/ch/blinkenlights/android/vanilla/PrefKeys.java index 3fd6850a..53377b5c 100644 --- a/src/ch/blinkenlights/android/vanilla/PrefKeys.java +++ b/src/ch/blinkenlights/android/vanilla/PrefKeys.java @@ -67,4 +67,5 @@ public class PrefKeys { public static final String USE_DARK_THEME = "use_dark_theme"; public static final String FILESYSTEM_BROWSE_START = "filesystem_browse_start"; public static final String VOLUME_DURING_DUCKING = "volume_during_ducking"; + public static final String AUTOPLAYLIST_PLAYCOUNTS = "playcounts_autoplaylist"; }