用Monotouch播放声音

Bry*_*yan 3 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();
Run Code Online (Sandbox Code Playgroud)

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

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

这是一个链接到单声道添加声音的视频. http://www.screencast.com/t/MmE0ZmFh有 什么问题?

chr*_*ntr 8

布莱恩,

通过查看您的截屏视频 - 您正在尝试播放mp3文件而不是播放文件.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();
Run Code Online (Sandbox Code Playgroud)

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

干杯,

ChrisNTR


mig*_*aza 6

你需要第一行:

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

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

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

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

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

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