首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >切换到iOS 5后无法播放系统声音

切换到iOS 5后无法播放系统声音
EN

Stack Overflow用户
提问于 2011-10-22 01:46:40
回答 4查看 8.9K关注 0票数 11

这就是我是如何在iOS 4中演奏一声的效果的。

代码语言:javascript
复制
SystemSoundId beepOnSoundId;

CFURLRef soundUrl = CFBundleCopyResourceURL(
    CFBundleGetMainBundle(), 
    CFSTR("beep"), 
    CFSTR("wav"), 
    NULL
);

// soundUrl logged:
// file://localhost/var/mobile/Applications/ ... beep.wav

AudioServicesCreateSystemSoundID(soundUrl, &beepOnSoundId);

// beepOnSoundId logged: 4097

AudioServicesPlaySystemSound(beepOnSoundId);

当我将我的设备升级到iOS 5时,它停止了工作。我什么也没听到。我注销了所有变量,没有一个是零或0。

在破坏我的声音播放代码的iOS 5中,API是如何改变的?

更新

问题可能是因为我在播放声音时运行了一个AVCaptureSession。iOS 5不知何故不再让你这么做了。当我从摄像机里录东西的时候,我需要播放一声“哔”声。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-10-25 08:26:40

如果您正在运行bug report,则此AVCaptureSession可能与您的问题相关。

在iOS 5下,当使用AudioServicesPlaySystemSound调用时,当有一个活动的AVCaptureSession和一个音频设备活动时,它将无法工作。

票数 13
EN

Stack Overflow用户

发布于 2011-10-28 19:26:17

一个问题可能是,在ios 5中,当您调用AudioServicesPlaySystemSound时,如果有一个活动的AVCaptureSession而音频设备处于活动状态,它就会停止工作。

还要检查文件中导入的名称,确保所有视图控制器中都有音频工具箱导入。我还去找了一个向导,给你买了这个:)我会把网站的名字放在最下面

步骤1:导入AudioToolbox框架,首先将音频工具箱框架导入应用程序,以便使系统声音服务对您的代码可用。为此,在Xcode中的project窗格中选择“PhoneAppSkin”项目,然后在“目标”下选择“PhoneAppSkin”,最后选择“构建阶段”选项卡。这样做之后,您的屏幕应该如下所示:

接下来,单击“”下拉列表,然后单击“+”符号将一个新框架添加到我们项目的链接阶段。

最后,在弹出窗口中找到“AudioToolbox”框架,然后单击“Add”。

接下来,打开PhoneViewController.h文件,并添加实际将Audio Toolbox框架导入到类中所需的行:

代码语言:javascript
复制
#import <UIKit/UIKit.h>
#import <AudioToolbox/AudioToolbox.h>

音频工具箱函数现在应该可以工作了

我从以下网站获得图片:http://mobile.tutsplus.com/tutorials/iphone/ios-sdk_playing-systemsoundid/

票数 10
EN

Stack Overflow用户

发布于 2011-10-28 18:28:53

我有几乎相同的代码,它在iOS5中为我工作,视频和音频媒体会话。如果函数中的所有代码都可以播放声音,那么问题可能是在播放声音之前就将SystemSoundID对象释放,或者问题可能与URL有关。但我想这是第一次。

请参阅,以下代码工作:

SystemSoundID声明位于对象的标题中,该对象的生存期足够长,足以播放声音。

代码语言:javascript
复制
    SystemSoundID soundID;

AudioServicesCreateSystemSoundID处于对象初始化阶段。

代码语言:javascript
复制
    AudioServicesCreateSystemSoundID((CFURLRef)[NSURL fileURLWithPath:[[NSBundle mainBundle] 
                                                                   pathForResource: @"sound" ofType:@"wav"]], &soundID);

然后,您可以在对象内部的任何地方使用AudioServicesPlaySystemSound

代码语言:javascript
复制
    AudioServicesPlaySystemSound(soundID);

试着把这些代码放在合适的地方,你应该能听到声音。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7856896

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档