如何通过xamarin.ios

时间:2018-12-28 04:58:54

标签: ios xamarin xamarin.ios avfoundation avaudiosession

我制作了一个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);

1 个答案:

答案 0 :(得分:0)

您需要通过以下屏幕快照在info.plist中注册对音频的后台支持

enter image description here 您还导入了Mediaplayer.framework