gpt4 book ai didi

c# - 如何播放即使您在 Xamarin Forms 中浏览页面也能继续播放的音频文件?

转载 作者:太空宇宙 更新时间:2023-11-03 15:11:45 26 4
gpt4 key购买 nike

我正在尝试制作我自己的音乐应用程序。通过我在 iOS 中的依赖服务解决方案,我可以很好地听到 mp3,但是一旦我浏览其他页面,文件就会停止。所以我的问题是,即使我在“播放”文件后浏览不同的页面,我怎样才能让文件继续播放?

这是我的代码:我选择“轨道”的按钮。

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

接口(interface):

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();
}

}
}

因此使用当前代码。我单击启动音频文件的按钮。然后我导航到另一个页面。音频文件停止。知道我该如何解决这个问题吗?

最佳答案

我从未在 Xamarin Forms 中处理过音频,但研究过一次。

我认为来自@yanyankelevich 的带有 GitHub 链接的评论仍然会在用户离开页面时停止音频。

正如@yanyankelevich 建议的那样,使用后台服务可能是您最好的选择。一些链接(有很多代码,所以我不会在这篇文章中重复它):

iOS AVAudioPlayer (具体查看 PlayBackgroundMusic 方法和下面的其他背景相关方法)

Android Background Audio Streaming

对于一种 super 简单的方法(我不建议也从未尝试过),您是否尝试过在 Device.BeginInvokeOnMainThread() 中运行您的方法,这会引发火灾忘记了吗?

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

关于c# - 如何播放即使您在 Xamarin Forms 中浏览页面也能继续播放的音频文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40847166/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com