我正在使用monotouch构建应用程序。基本上我需要在应用程序加载后立即播放mp3。 在main.cs上,我在推送主控制器之前添加了这个片段:
AVAudioPlayer player = new AVAudioPlayer();
NSUrl mediaFile = NSUrl.FromFilename("Content/Audio/music1.mp3");
player = AVAudioPlayer.FromUrl(mediaFile);
player.Delegate = new PlayerDelegate();
if(player.PrepareToPlay()){
player.Play();
}
但是当我启动应用程序时,我可以听到大约半秒钟的声音然后什么都没有。 这段代码是正确的还是有问题?
由于
答案 0 :(得分:7)
如果没有更多的上下文,很难提供答案,比如更多代码:-)
我怀疑当方法(它是AVAudioPlayer
?)返回时,垃圾收集器(GC)可以收集您的FinishedLaunching
(如果用作局部变量)。
如果是这种情况,那么将推广您的本地player
变量放入字段中将确保将引用保留到AVAudioPlayer
实例,并且应该允许它在不进行播放的情况下播放中断(或崩溃)。
如果我错了,请编辑您的问题并向我们提供更多背景信息,我们应该能够为您提供进一步的帮助。
答案 1 :(得分:0)
尝试注册AVAudioPlayerDelegate并在audioPlayerEndInterruption方法中重新开始播放音乐。
答案 2 :(得分:0)
现在真的很容易:
//enable audio
AudioSession.Initialize();
//load the sound
sound = SystemSound.FromFile("Sounds/rev.wav");
sound.PlaySystemSound();