我制作了一个Dependency-Service,用于在Xamarin.ios中播放音频和背景控件。
音频在后台正常执行。 但是,锁屏控制器未显示。
我不知道是什么问题。
我在“ info.plist”中注册了“ UIBackgroundMode”和“ audio” 并将AVAudioSession设置为播放。
我使用play_pause(string url)
功能播放音频和设置MPNowPlayingInfo
。
[assembly: Dependency(typeof(AudioService))]
namespace BibleHymn.iOS
{
class AudioService : IAudio
{
private bool isPlaying = false;
private bool interrupted = false;
int audioNum = 0;
AVFoundation.AVPlayer player;
public AudioService()
{
var avSession = AVAudioSession.SharedInstance();
avSession.SetCategory(AVAudioSessionCategory.Playback);
NSError activationError = null;
avSession.SetActive(true, out activationError);
}
public bool Play_Pause(string url)
{
if(player == null)
{
this.player = new AVFoundation.AVPlayer();
this.player = AVFoundation.AVPlayer.FromUrl(Foundation.NSUrl.FromString(url));
this.player.Play();
UpdateNotification();
}
isPlaying !=isPlaying;
return isPlaying;
}
public void UpdateNotification()
{
var item = new MPNowPlayingInfo
{
Title = "My Title"
};
MPNowPlayingInfoCenter.DefaultCenter.NowPlaying = item;
Device.BeginInvokeOnMainThread(() => {
UIKit.UIApplication.SharedApplication.BeginReceivingRemoteControlEvents();
});
}
}
我通过按钮控件的命令在viewModel中使用了play_pause。
像...一样初始化
public IAudio streamService = DependencyService.Get<IAudio>();
并在命令中...
streamService.Play_Pause(url);