用monotouch播放mp3

时间:2011-10-12 20:13:22

标签: c# iphone .net xamarin.ios avaudioplayer

我正在使用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();
}

但是当我启动应用程序时,我可以听到大约半秒钟的声音然后什么都没有。 这段代码是正确的还是有问题?

由于

3 个答案:

答案 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();