使用 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 ();

SystemSoundMonoTouch.AudioToolbox 中定义。请务必同时查看MonoTouch Play System Sound 和MonoTouch: Playing sound

【讨论】:

非常适合我,但必须使用 "com.apple.UIKit" 而不是 "com.Apple.UIKit"

以上是关于使用 Monotouch 播放默认 iOS 系统声音的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 MonoTouch 在 iPhone 上播放视频?

Monotouch:使用 iPhone 模拟器播放背景音频

MonoTouch 5.0:获取 MonoDevelop 以使用 iOS 5 SDK/模拟器

Monotouch:尝试从使用 AVAudioPlayer 动态生成的文件中播放音频

MonoTouch:播放声音

iOS开发之音频播放录音