簡體   English   中英

即使您瀏覽Xamarin Forms中的頁面,如何播放仍將繼續播放的AudioFile?

[英]How can you play an AudioFile that will keep playing even if you navigate through pages in Xamarin Forms?

我正在嘗試制作自己的音樂應用。 使用我在iOS中的依賴項服務解決方案,我可以很好地聽到mp3的聲音,但是一旦我瀏覽其他頁面,文件就會停止。 所以我的問題是,即使我“播放”文件后瀏覽不同的頁面,我如何才能使文件繼續播放?

這是我的代碼:在我選擇“曲目”的按鈕上。

async void PlayThisSongButton (object s, EventArgs e)
    {
        DependencyService.Get<IPlayerVoice>().PlayAudioFile("myfilename.mp3");
    }

接口:

public interface IPlayerVoice
{
    void PlayAudioFile(string fileName);
}

依賴服務iOS:

[assembly: Xamarin.Forms.Dependency(typeof (VoicePlayer_iOS))]

namespace myProject.iOS
{
  public class VoicePlayer_iOS : IPlayerVoice
  {
    AVAudioPlayer player;

    public VoicePlayer_iOS()
    {
    }

    public void PlayAudioFile(string fileName)
    {
        string sFilePath = NSBundle.MainBundle.PathForResource
        (Path.GetFileNameWithoutExtension(fileName), Path.GetExtension(fileName));
        var url = NSUrl.FromString(sFilePath);
        var _player = AVAudioPlayer.FromUrl(url);
        _player.FinishedPlaying += (object sender, AVStatusEventArgs e) =>
        {
            _player = null;
        };
        _player.Play();
     }

   }
}

因此,使用此當前代碼。 我單擊我啟動音頻文件的按鈕。 然后,我導航到另一個頁面。 音頻文件停止。 知道我該如何解決嗎?

我會說您需要使用MVVM或MVC並在主視圖上運行音樂。

這樣,您就可以在音樂播放的同時瀏覽該應用程序。

基本上具有主視圖,並創建一個網格,將“ browserView”放置在其中,然后將將用於該應用程序的所有常規代碼添加到瀏覽器的視圖模型中。

然后將音樂代碼添加到主視圖的視圖模型中。

只需確保添加功能即可暫停音樂。

我從未使用過Xamarin Forms中的音頻,但是曾經研究過它。

我認為,當用戶離開頁面時,來自@yanyankelevich的帶有GitHub鏈接的評論仍會停止音頻。

正如@yanyankelevich所建議的那樣,使用后台服務可能是最好的選擇。 為此的一些鏈接(有很多代碼,所以在這篇文章中我不會重復):

iOS AVAudioPlayer (具體檢查PlayBackgroundMusic方法和該方法下面的其他背景相關方法)

Android背景音頻流

對於執行此操作的超級簡單方法(我不建議也從未嘗試過),您是否嘗試過僅在Device.BeginInvokeOnMainThread()運行方法,這會引起火災而忘記了?

Device.BeginInvokeOnMainThread(() => DependencyService.Get<IPlayerVoice>().PlayAudioFile("myfilename.mp3"));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM