根据苹果的文档没有发现,AudioServices.h应该是AudioToolbox框架的一部分。AudioServices.h在Objective-C的iOS项目,包括AudioToolbox框架
即使我已将AudioToolbox框架添加到我的Xcode项目中,但当我#import AudioServices出现错误时:AudioServices.h文件未找到。
出现这种情况我是否键入 #进口 “AudioServices.h”
或 #进口 “AudioToolbox/AudioServices.h” 。
为了以防万一,我尝试删除,然后重新添加AudioToolbox框架,它没有任何效果。 AudioServices文件是否会被破坏? (如果是的话,是否有人知道我可以在哪里下载另一个副本?)
我使用的是XCode 4.2,但由于我正在转换一些旧的开源代码,因此项目设置为与XCode 3.2兼容。这可能是问题吗?
我敢肯定,我失去了一些东西简单。我对编程完全陌生......任何帮助表示赞赏!
----- EDIT(见下面我的评论)-----
在AudioServices.h,所讨论的两个功能:
extern OSStatus
AudioSessionInitialize(CFRunLoopRef inRunLoop,
CFStringRef inRunLoopMode,
AudioSessionInterruptionListener inInterruptionListener,
void *inClientData)
extern OSStatus
AudioSessionAddPropertyListener( AudioSessionPropertyID inID,
AudioSessionPropertyListener inProc,
void *inClientData)
在SpeakHereController.mm
(从样本苹果公司代码),而我试图转换到ARC让它在我的项目中的其他文件更好地合作:
- (void)awakeFromNib
{
// Allocate our singleton instance for the recorder & player object
recorder = new AQRecorder();
player = new AQPlayer();
OSStatus error = AudioSessionInitialize(NULL, NULL, interruptionListener, self);
if (error) printf("ERROR INITIALIZING AUDIO SESSION! %ld\n", error);
else
{
UInt32 category = kAudioSessionCategory_PlayAndRecord;
error = AudioSessionSetProperty(kAudioSessionProperty_AudioCategory, sizeof(category), &category);
if (error) printf("couldn't set audio category!");
error = AudioSessionAddPropertyListener(kAudioSessionProperty_AudioRouteChange, propListener, self);
if (error) printf("ERROR ADDING AUDIO SESSION PROP LISTENER! %ld\n", error);
UInt32 inputAvailable = 0;
UInt32 size = sizeof(inputAvailable);
// we do not want to allow recording if input is not available
error = AudioSessionGetProperty(kAudioSessionProperty_AudioInputAvailable, &size, &inputAvailable);
if (error) printf("ERROR GETTING INPUT AVAILABILITY! %ld\n", error);
btn_record.enabled = (inputAvailable) ? YES : NO;
// we also need to listen to see if input availability changes
error = AudioSessionAddPropertyListener(kAudioSessionProperty_AudioInputAvailable, propListener, self);
if (error) printf("ERROR ADDING AUDIO SESSION PROP LISTENER! %ld\n", error);
error = AudioSessionSetActive(true);
if (error) printf("AudioSessionSetActive (true) failed");
}
哎呀,谢谢! – Jeanne 2012-07-26 17:03:21
看来,这只是我的问题的一部分,其余的与转换为自动引用计数有关。我仍然收到与此框架中的函数有关的错误:没有用于调用'AudioSessionInitialize'的匹配函数,但现在在公开三角形中存在其他信息:候选函数不可行:不能隐式地将类型'SpeakHereController * const__strong'的参数转换为'ARC *'下的第四个参数'void *'。我不知道如何解决这个问题,因为它在我没有写的文件中,并且不太明白。我将在上面添加代码。 – Jeanne 2012-07-26 17:12:39