iOS 7 无法播放系统声音

Posted

技术标签:

【中文标题】iOS 7 无法播放系统声音【英文标题】:Unable to play system sound iOS 7 【发布时间】:2014-03-18 11:27:54 【问题描述】:

在我的应用程序中,当它接收到特定频率的信号时,我会播放系统声音。为了检测频率,我使用了PitchDetector。然后我上网查看如何播放ios系统声音,我找到了this。我想播放叫sms_alert_circles.caf的声音,所以在方法- (void)viewDidLoad中我写了这段代码:

NSURL *fileURL = [NSURL URLWithString:@"/System/Library/Audio/UISounds/Modern/sms_alert_circles.caf"];
SystemSoundID soundID;
AudioServicesCreateSystemSoundID((__bridge_retained CFURLRef)fileURL,&soundID);

然后在检测音频信号频率的方法中我放了这段代码:

AudioServicesPlaySystemSound(soundID);

但如果我尝试在我的 iPhone 上运行此代码,则什么也没有发生。它识别频率,但不执行声音,我的代码有什么问题?你能帮帮我吗?

显然我打开了设备的声音

【问题讨论】:

检查手机的硬静音按钮 我现在编辑了问题并且声音已打开(静音按钮已关闭) 您是否在录制音频或语音之类的内容? 你能确认你用来创建fileURL对象的路径实际上是有权限读取的文件吗?我的理解是,从 iOS4 开始,您必须提供自己的声音文件。除非设备被越狱,否则我不相信您可以访问该文件。 @iTroyd23:我正在使用麦克风来检测音频信号 【参考方案1】:

也许你的路径是错误的,它应该是应用程序包内文件的路径。

将您的 sms_alert_circles.caf 文件添加到您的 xcode 项目中。检查文件是否在项目“构建阶段”的“复制捆绑资源”列表中。然后更改以下行:

NSURL *fileURL = [NSURL URLWithString:@"/System/Library/Audio/UISounds/Modern/sms_alert_circles.caf"];

NSString *soundPath = [[NSBundle mainBundle]
                           pathForResource:@"sms_alert_circles.caf"
                           ofType:nil];
NSURL *fileURL = [NSURL URLWithString:soundPath];

您也可以尝试使用AKSystemSound 库通过几乎一行代码播放声音。

【讨论】:

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

为啥录屏没声音

iOS - 系统声音未播放

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

在 iOS 中播放系统声音

捕获音频/视频后无法播放系统声音

iOS 10 中新的键盘点击的系统声音 ID 是啥?