From a4f873173a05745abf14b9ccdb4c2d44ab9410eb Mon Sep 17 00:00:00 2001 From: daneren2005 Date: Tue, 26 Nov 2013 13:53:35 -0800 Subject: #176 Added KitKat RCC for star editing --- .../dsub/util/compat/RemoteControlClientKK.java | 73 ++++++++++++++++++++++ 1 file changed, 73 insertions(+) create mode 100644 src/github/daneren2005/dsub/util/compat/RemoteControlClientKK.java (limited to 'src') diff --git a/src/github/daneren2005/dsub/util/compat/RemoteControlClientKK.java b/src/github/daneren2005/dsub/util/compat/RemoteControlClientKK.java new file mode 100644 index 00000000..06329c15 --- /dev/null +++ b/src/github/daneren2005/dsub/util/compat/RemoteControlClientKK.java @@ -0,0 +1,73 @@ +package github.daneren2005.dsub.util.compat; + +import github.daneren2005.dsub.domain.MusicDirectory; +import github.daneren2005.dsub.util.ImageLoader; +import android.annotation.TargetApi; +import android.app.PendingIntent; +import android.content.ComponentName; +import android.content.Context; +import android.content.Intent; +import android.media.AudioManager; +import android.media.MediaMetadataRetriever; +import android.media.Rating; +import android.media.RemoteControlClient; +import github.daneren2005.dsub.activity.SubsonicActivity; +import github.daneren2005.dsub.service.DownloadService; +import github.daneren2005.dsub.service.MusicService; +import github.daneren2005.dsub.service.MusicServiceFactory; +import github.daneren2005.dsub.util.SilentBackgroundTask; +import github.daneren2005.dsub.util.Util; +import java.io.File; + +@TargetApi(19) +public class RemoteControlClientKK extends RemoteControlClientJB { + @Override + public void register(final Context context, final ComponentName mediaButtonReceiverComponent) { + super.register(context, mediaButtonReceiverComponent); + + mRemoteControl.setMetadataUpdateListener(new RemoteControlClient.onMetadataUpdateListener() { + @Override + public void onMetadataUpdate(int key, Object newValue) { + if(key == MediaMetadataEditor.RATING_KEY_BY_USER) { + Rating rating = (Rating) newValue; + setStarred(currentSong, rating.hasHeart()); + } + } + }); + } + + @Override + protected void updateMetadata(final MusicDirectory.Entry currentSong, final RemoteControlClient.MetadataEditor editor) { + super.updateMetadata(currentSong, editor); + editor.putObject(MediaMetadataEditor.RATING_KEY_BY_USER, Rating.newHeartRating(currentSong.isStarred())); + editor.addEditableKey(MediaMetadataEditor.RATING_KEY_BY_USER); + } + + @Override + protected int getTransportFlags() { + return super.getTransportFlags() | RemoteControlClient.FLAG_KEY_MEDIA_RATING; + } + + private void setStarred(final MusicDirectory.Entry entry, final boolean starred) { + entry.setStarred(starred); + + new SilentBackgroundTask(context) { + @Override + protected Void doInBackground() throws Throwable { + MusicService musicService = MusicServiceFactory.getMusicService(context); + musicService.setStarred(entry.getId(), starred, context, null); + + // Make sure to clear parent cache + String s = Util.getRestUrl(context, null) + entry.getParent(); + String parentCache = "directory-" + s.hashCode() + ".ser"; + File file = new File(context.getCacheDir(), parentCache); + file.delete(); + } + + @Override + protected void done(Void result) { + + } + }.execute(); + } +} -- cgit v1.2.3