用Monotouch播放声音

时间:2009-11-18 17:40:11

标签: iphone audio xamarin.ios

无论我尝试什么(build - > content,NSUrl,filename),我都会收到'null exception':当我尝试在monotouch中播放.caf声音文件时找不到文件。

//var path = NSBundle.MainBundle.PathForResource("MatchGame", "caf"); 
//var gameSong = SystemSound.FromFile( new NSUrl(path, false));
var gameSong = SystemSound.FromFile("MatchGame.caf");
gameSong.PlaySystemSound();

我还尝试使用文件夹名称“images / MatchGame.caf”进行组合,并将MatchGame.caf移动到根文件夹中。

我错过了什么?非常感谢。

这是一个在monotouch中添加声音的视频链接。 http://www.screencast.com/t/MmE0ZmFh出了什么问题?

2 个答案:

答案 0 :(得分:8)

布赖恩,

从你的截屏视频看 - 你正试图播放一个mp3文件而不是一个caf文件。 Mp3文件的编码方式不同,不会使用那里的SystemSound类(我不记得你是否可以在Obj-C中执行此操作。)

您将要使用AVFoundation命名空间和AVAudioPlayer类。

using Monotouch.AVFoundation;

var mediaFile = NSUrl.FromFilename("myMp3.mp3");
var audioPlayer = AVAudioPlayer.FromUrl(mediaFile);
audioPlayer.FinishedPlaying += delegate { audioPlayer.Dispose(); };
audioPlayer.Play();

您可能需要调整上面的代码 - 我没有MonoDevelop,但这可以帮助您更进一步。

干杯,

ChrisNTR

答案 1 :(得分:6)

你需要第一行:

var path = NSBundle.MainBundle.PathForResource(“MatchGame”,“caf”);

然后确保您的音频文件包含在应用程序中,方法是确保您的CAF文件在“属性”窗格中标记为“内容”,否则文件不会复制到生成的应用程序包(您的.app)< / p>

您可以按照此处记录的步骤进行操作(它们适用于图像,但应用于音频文件):

http://wiki.monotouch.net/HowTo/Images/Add_an_Image_to_your_Project

此外,这是您应该存储文件的好资源:

http://wiki.monotouch.net/HowTo/Files/HowTo%3a_Store_Files