使用 Monotouch 播放默认 iOS 系统声音
Posted
技术标签:
【中文标题】使用 Monotouch 播放默认 iOS 系统声音【英文标题】:Play default iOS system sound with Monotouch 【发布时间】:2013-11-25 12:50:09 【问题描述】:我想在我的应用中按下按钮时播放键盘“点击”的声音。 如何使用 Monotouch 访问此声音剪辑?我不想使用 AudioToolbox SystemSound.FromFile() 传递我自己的声音。到目前为止,我所有的搜索都导致了这个解决方案或使用“AudioservicesCreateSystemSoundID”的 Objective-C 代码,我无法将其转换为 C#。
【问题讨论】:
***.com/questions/7831671/… 我正在寻找一个可以使用的 C# 示例 API 是 1:1。我保证,唯一的区别是语法。 【参考方案1】:对于 iOS 7.0 及更高版本,Stephane Delcroix 的回答似乎不再适用了......
但是你可以很容易地找到这个好项目中所有声音的路径: https://github.com/TUNER88/iOSSystemSoundsLibrary
这是我在 iOS 7 下使用的代码(注意,它可能不适用于模拟器!)
private const string NotificationSoundPath = @"/System/Library/Audio/UISounds/New/Fanfare.caf";
public static void TriggerSoundAndViber()
SystemSound notificationSound = SystemSound.FromFile(NotificationSoundPath);
notificationSound.AddSystemSoundCompletion(SystemSound.Vibrate.PlaySystemSound);
notificationSound.PlaySystemSound();
上面答案中的 using() 构造在我的情况下也造成了麻烦......它似乎过早地释放了声音,我只能在 PlaySystemSound 上有一个断点听到它(即使这样也没有用 viber 完成) ()。
【讨论】:
【参考方案2】:嗯,这不是Playing system sound without importing your own 中代码的 1:1 端口,但这应该可以工作:
var path = NSBundle.FromIdentifier ("com.Apple.UIKit").PathForResource ("Tock", "aiff");
using (var systemSound = new SystemSound (NSUrl.FromFilename (path)))
systemSound.PlaySystemSound ();
SystemSound
在MonoTouch.AudioToolbox
中定义。请务必同时查看MonoTouch Play System Sound 和MonoTouch: Playing sound
【讨论】:
非常适合我,但必须使用"com.apple.UIKit"
而不是 "com.Apple.UIKit"
以上是关于使用 Monotouch 播放默认 iOS 系统声音的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 MonoTouch 在 iPhone 上播放视频?
MonoTouch 5.0:获取 MonoDevelop 以使用 iOS 5 SDK/模拟器