From 8efb73a39e14b780cd7486d47502e7e3370fbd2a Mon Sep 17 00:00:00 2001 From: Martin Fietz Date: Mon, 14 Sep 2015 21:49:43 +0200 Subject: [PATCH] Set lockscreen background, set media session and playback state --- app/src/main/AndroidManifest.xml | 5 ++ app/src/main/res/xml/preferences.xml | 6 ++ .../core/preferences/UserPreferences.java | 10 +++ .../playback/MediaButtonIntentReceiver.java | 5 +- .../playback/PlaybackServiceMediaPlayer.java | 71 ++++++++++++++++--- core/src/main/res/values/strings.xml | 5 +- 6 files changed, 86 insertions(+), 16 deletions(-) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 117a008a8..a94f9ff95 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -325,6 +325,11 @@ android:scheme="package"/> + + + + + + { + Playable p = this.media; + MediaMetadataCompat.Builder builder = new MediaMetadataCompat.Builder(); + builder.putString(MediaMetadataCompat.METADATA_KEY_ARTIST, p.getFeedTitle()); + builder.putString(MediaMetadataCompat.METADATA_KEY_TITLE, p.getEpisodeTitle()); + builder.putLong(MediaMetadataCompat.METADATA_KEY_DURATION, p.getDuration()); + builder.putString(MediaMetadataCompat.METADATA_KEY_DISPLAY_TITLE, p.getEpisodeTitle()); + builder.putString(MediaMetadataCompat.METADATA_KEY_ALBUM, p.getFeedTitle()); + if (p.getImageUri() != null) { + if (UserPreferences.setLockscreenBackground()) { + builder.putString(MediaMetadataCompat.METADATA_KEY_ART_URI, p.getImageUri().toString()); + try { + Bitmap art = Glide.with(context) + .load(p.getImageUri()) + .asBitmap() + .diskCacheStrategy(ApGlideSettings.AP_DISK_CACHE_STRATEGY) + .into(Target.SIZE_ORIGINAL, Target.SIZE_ORIGINAL) + .get(); + builder.putBitmap(MediaMetadataCompat.METADATA_KEY_ART, art); + } catch (Exception e) { + Log.e(TAG, Log.getStackTraceString(e)); + } + } + } + mediaSession.setMetadata(builder.build()); + }); } @@ -812,7 +849,12 @@ public class PlaybackServiceMediaPlayer { } else { state = PlaybackStateCompat.STATE_NONE; } - sessionState.setState(state, PlaybackStateCompat.PLAYBACK_POSITION_UNKNOWN, getPlaybackSpeed()); + sessionState.setState(state, getPosition(), getPlaybackSpeed()); + sessionState.setActions(PlaybackStateCompat.ACTION_PLAY_PAUSE + | PlaybackStateCompat.ACTION_REWIND + | PlaybackStateCompat.ACTION_FAST_FORWARD + | PlaybackStateCompat.ACTION_SKIP_TO_NEXT); + mediaSession.setPlaybackState(sessionState.build()); callback.statusChanged(new PSMPInfo(playerStatus, media)); } @@ -1218,7 +1260,14 @@ public class PlaybackServiceMediaPlayer { stop(); return true; } + case KeyEvent.KEYCODE_MEDIA_NEXT: + { + Log.d(TAG, "Received next event from RemoteControlClient"); + endPlayback(); + return true; + } default: + Log.d(TAG, "Unhandled key code: " + event.getKeyCode()); break; } } diff --git a/core/src/main/res/values/strings.xml b/core/src/main/res/values/strings.xml index 3682d4307..7c38374a9 100644 --- a/core/src/main/res/values/strings.xml +++ b/core/src/main/res/values/strings.xml @@ -1,8 +1,7 @@ + tools:ignore="MissingTranslation"> AntennaPod @@ -335,6 +334,8 @@ Always expand the notification to show playback buttons. Persistent Playback Controls Keep notification and lockscreen controls when playback is paused. + Lockscreen Background + Set the lockscreen background to the current episode\'s image. Show Download Report If downloads fail, generate a report that shows the details of the failure. Android versions before 4.1 do not support expanded notifications.