如何以编程方式控制 MPNowPlayingInfoCenter (Xamarin.iOS) 中的播放/暂停按钮

问题描述 投票:0回答:0

我正在开发一个用 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 设备上进行测试。

xamarin.ios
© www.soinside.com 2019 - 2024. All rights reserved.