как управлять фоновым звуком из Dependecy-сервиса в xamarin.ios - PullRequest
0 голосов
/ 28 декабря 2018

Я сделал Dependency-Service для воспроизведения звука и управления фоном в Xamarin.ios.

Звук хорошо выполнялся в фоновом режиме.но контроллер блокировки экрана не показывался.

Я не знаю, в чем проблема.

Я зарегистрировал «UIBackgroundMode» и «audio» в «info.plist» и установил 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();
              });
        }
}

Я использовал play_pause из viewModel через команду кнопки управления.

init like...

 public IAudio streamService = DependencyService.Get<IAudio>();

и в команде ...

streamService.Play_Pause(url);

1 Ответ

0 голосов
/ 28 декабря 2018

Вам необходимо зарегистрировать фоновую поддержку аудио в info.plist, сделав следующий снимок экрана

enter image description here Также вы импортировали Mediaplayer.framework

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...