我正在开发一个用 Xamarin.iOS/Forms 编写的播放音乐的应用程序。我们希望能够从应用程序或正在播放的信息中心控制歌曲/歌曲列表的播放。一切都按预期工作,除了当用户从应用程序中按下播放/暂停时,我无法以编程方式控制信息中心播放/暂停按钮的状态。我从几个快速示例中了解到,您应该能够通过将 MPNowPlayingInfo.PlaybackRate 设置为 1.0d 表示播放或 0.0d 表示暂停来设置状态。这是应用程序中的一些代码。
当一首新歌开始播放时,我使用以下代码添加歌曲:
_nowPlayingInfo = new MPNowPlayingInfo();
_nowPlayingInfo.Artist = songDetails.Artist;
_nowPlayingInfo.Title = songDetails.Title;
_nowPlayingInfo.PlaybackDuration = durationSeconds;
_nowPlayingInfo.PlaybackRate = 0.0d;
var data = NSData.FromUrl(new NSUrl(songDetails.Album2xUrl));
var image = new UIImage(data:data);
_nowPlayingInfo.Artwork = new MPMediaItemArtwork(image);
MPNowPlayingInfoCenter.DefaultCenter.NowPlaying = _nowPlayingInfo;
一切都按预期工作,除了播放/暂停按钮的初始状态显示暂停按钮并且 PlaybackRate 设置为 0.0d 我希望它显示播放按钮。
随着歌曲的播放,我使用以下代码更新:
_nowPlayingInfo.ElapsedPlaybackTime = elapsedSeconds;
MPNowPlayingInfoCenter.DefaultCenter.NowPlaying = _nowPlayingInfo;
这按预期工作。
当播放/暂停状态从应用程序内更新时,我尝试使用以下代码更新信息中心的播放/暂停按钮:我在许多快速示例中找到了它,但这对播放/暂停按钮没有影响:
if (isPlaying)
_nowPlayingInfo.PlaybackRate = 1.0d;
else
_nowPlayingInfo.PlaybackRate = 0.0d;
MPNowPlayingInfoCenter.DefaultCenter.NowPlaying = _nowPlayingInfo;
Console.WriteLine($"---- {MPNowPlayingInfoCenter.DefaultCenter.NowPlaying.PlaybackRate}");
我可以从控制台看到 PlaybackRate 设置为预期值,但更改该值对信息中心的播放/暂停状态没有影响。
还有其他人在 Xamarin.iOS 中遇到过这个问题吗?有没有不同的方法来更新播放/暂停按钮的状态?
我正在使用 Xamarin.iOS 版本:16.1.1.27,Xcode 14.2,并在 iOS 16.3.1 设备上进行测试。