【发布时间】:2016-11-29 00:31:24
【问题描述】:
我正在尝试制作自己的音乐应用程序。使用我在 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();
}
}
}
因此,使用此当前代码。我点击我的按钮开始音频文件。然后我导航到另一个页面。音频文件停止。知道如何解决这个问题吗?
【问题讨论】:
-
您需要将 VoicePlayer 注册为 IOC 容器中的服务(并可能使 PlayAudioFile 异步),就像这里解释的那样:forums.xamarin.com/discussion/39064/…
-
@yanyankelevich 看了链接,我有点明白了。不知道我将如何调整我当前的代码以使其正常工作。我非常感谢一个例子
-
你去:github.com/tkowalczyk/SimpleAudioForms/tree/master/…(没有 IOC,但我相信它仍然有效)
标签: c# xamarin xamarin.forms