这就是我是如何在iOS 4中演奏一声的效果的。
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不知何故不再让你这么做了。当我从摄像机里录东西的时候,我需要播放一声“哔”声。
发布于 2011-10-25 08:26:40
如果您正在运行bug report,则此AVCaptureSession可能与您的问题相关。
在iOS 5下,当使用AudioServicesPlaySystemSound调用时,当有一个活动的AVCaptureSession和一个音频设备活动时,它将无法工作。
发布于 2011-10-28 19:26:17
一个问题可能是,在ios 5中,当您调用AudioServicesPlaySystemSound时,如果有一个活动的AVCaptureSession而音频设备处于活动状态,它就会停止工作。
还要检查文件中导入的名称,确保所有视图控制器中都有音频工具箱导入。我还去找了一个向导,给你买了这个:)我会把网站的名字放在最下面
步骤1:导入AudioToolbox框架,首先将音频工具箱框架导入应用程序,以便使系统声音服务对您的代码可用。为此,在Xcode中的project窗格中选择“PhoneAppSkin”项目,然后在“目标”下选择“PhoneAppSkin”,最后选择“构建阶段”选项卡。这样做之后,您的屏幕应该如下所示:

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

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

接下来,打开PhoneViewController.h文件,并添加实际将Audio Toolbox框架导入到类中所需的行:
#import <UIKit/UIKit.h>
#import <AudioToolbox/AudioToolbox.h>音频工具箱函数现在应该可以工作了
我从以下网站获得图片:http://mobile.tutsplus.com/tutorials/iphone/ios-sdk_playing-systemsoundid/
发布于 2011-10-28 18:28:53
我有几乎相同的代码,它在iOS5中为我工作,视频和音频媒体会话。如果函数中的所有代码都可以播放声音,那么问题可能是在播放声音之前就将SystemSoundID对象释放,或者问题可能与URL有关。但我想这是第一次。
请参阅,以下代码工作:
SystemSoundID声明位于对象的标题中,该对象的生存期足够长,足以播放声音。
SystemSoundID soundID;AudioServicesCreateSystemSoundID处于对象初始化阶段。
AudioServicesCreateSystemSoundID((CFURLRef)[NSURL fileURLWithPath:[[NSBundle mainBundle]
pathForResource: @"sound" ofType:@"wav"]], &soundID);然后,您可以在对象内部的任何地方使用AudioServicesPlaySystemSound。
AudioServicesPlaySystemSound(soundID);试着把这些代码放在合适的地方,你应该能听到声音。
https://stackoverflow.com/questions/7856896
复制相似问题