Skip to content

Commit 4ab6eea

Browse files
committed
Change now playing artwork request handler
1 parent a50d852 commit 4ab6eea

File tree

1 file changed

+22
-16
lines changed

1 file changed

+22
-16
lines changed

src/CommunityToolkit.Maui.MediaElement/Primitives/Metadata.macios.cs

Lines changed: 22 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
using AVFoundation;
2+
using CoreGraphics;
23
using CoreMedia;
34
using Foundation;
45
using MediaPlayer;
@@ -76,32 +77,37 @@ public void SetMetadata(AVPlayerItem? playerItem, IMediaElement? mediaElement)
7677
Metadata.ClearNowPlaying();
7778
return;
7879
}
80+
81+
var proxy = new RequestHandlerProxy(mediaElement.MetadataArtworkUrl);
7982

8083
NowPlayingInfo.Title = mediaElement.MetadataTitle;
8184
NowPlayingInfo.Artist = mediaElement.MetadataArtist;
8285
NowPlayingInfo.PlaybackDuration = playerItem?.Duration.Seconds ?? 0;
8386
NowPlayingInfo.IsLiveStream = false;
8487
NowPlayingInfo.PlaybackRate = mediaElement.Speed;
8588
NowPlayingInfo.ElapsedPlaybackTime = playerItem?.CurrentTime.Seconds ?? 0;
86-
NowPlayingInfo.Artwork = new(boundsSize: new(320, 240), requestHandler: _ => GetImage(mediaElement.MetadataArtworkUrl));
89+
NowPlayingInfo.Artwork = new(new(320, 240), proxy.RequestHandler);
8790
MPNowPlayingInfoCenter.DefaultCenter.NowPlaying = NowPlayingInfo;
8891
}
8992

90-
static UIImage GetImage(string imageUri)
91-
{
92-
try
93-
{
94-
if (imageUri.StartsWith(Uri.UriSchemeHttp, StringComparison.OrdinalIgnoreCase))
95-
{
96-
return UIImage.LoadFromData(NSData.FromUrl(new NSUrl(imageUri))) ?? defaultUIImage;
97-
}
98-
return defaultUIImage;
99-
}
100-
catch
101-
{
102-
return defaultUIImage;
103-
}
104-
}
93+
sealed class RequestHandlerProxy(string metadataArtworkUrl)
94+
{
95+
public UIImage RequestHandler(CGSize size)
96+
{
97+
try
98+
{
99+
if (metadataArtworkUrl.StartsWith(Uri.UriSchemeHttp, StringComparison.OrdinalIgnoreCase))
100+
{
101+
return UIImage.LoadFromData(NSData.FromUrl(new NSUrl(metadataArtworkUrl))) ?? defaultUIImage;
102+
}
103+
return defaultUIImage;
104+
}
105+
catch
106+
{
107+
return defaultUIImage;
108+
}
109+
}
110+
}
105111

106112
MPRemoteCommandHandlerStatus SeekCommand(MPRemoteCommandEvent? commandEvent)
107113
{

0 commit comments

Comments
 (0)