使用Monotouch播放默认的iOS系统声音

时间:2013-11-25 12:50:10

标签: ios xamarin.ios xamarin audiotoolbox

我想在我的应用程序中按下按钮时弹奏键盘“点击”声音。 如何使用Monotouch访问此声音片段?我不想使用AudioToolbox SystemSound.FromFile()传递我自己的声音。到目前为止,我所有的搜索都使用了'AudioServicesCreateSystemSoundID'导致了这个解决方案或Objective-C代码,我无法转换为C#。

2 个答案:

答案 0 :(得分: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 SoundMonoTouch: Playing sound

答案 1 :(得分:2)

对于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完成) ()。