IPhone SDK:音频会话错误:-12986。。。。升级到3.1之后
我正在使用音频会话构建一个iPhone音频应用程序。原型一直在运行,直到我决定升级到3.1 经过多次搜索,我终于发现会话激活调用失败,错误代码为12986。 我在任何地方都找不到这样做的原因。 NSError对象没有给出任何细节。我使用本地化的*API来获取更多信息,这就是我得到的: localizedDescription:无法完成操作。(OSStatus错误-12986) 本地化失败原因:IPhone SDK:音频会话错误:-12986。。。。升级到3.1之后,iphone,core-audio,Iphone,Core Audio,我正在使用音频会话构建一个iPhone音频应用程序。原型一直在运行,直到我决定升级到3.1 经过多次搜索,我终于发现会话激活调用失败,错误代码为12986。 我在任何地方都找不到这样做的原因。 NSError对象没有给出任何细节。我使用本地化的*API来获取更多信息,这就是我得到的: localizedDescription:无法完成操作。(OSStatus错误-12986) 本地化失败原因: 本地化恢复建议: 有人知道如何找到更多关于此类错误代码的信息吗 同时,如果我的状态发生变化,我会继续挖
本地化恢复建议:
有人知道如何找到更多关于此类错误代码的信息吗
同时,如果我的状态发生变化,我会继续挖掘和更新
我的好奇代码是-
NSError *myErr;
AVAudioSession *audioSession = [AVAudioSession sharedInstance];
[audioSession setCategory:AVAudioSessionCategoryPlayAndRecord error:&myErr];
bSuccess= [audioSession setActive: YES error: &myErr];
在执行核心数据操作时,我在尝试从错误对象提取有用信息时也遇到了类似的问题,我发现以下代码有助于更精确地确定错误的原因
NSError *error;
... your code here ...
NSArray* detailedErrors = [[error userInfo] objectForKey:NSDetailedErrorsKey];
if(detailedErrors != nil && [detailedErrors count] > 0)
{
for(NSError* detailedError in detailedErrors)
{
NSLog(@" DetailedError: %@", [detailedError userInfo]);
}
}
else
{
NSLog(@" %@", [error userInfo]);
}
对不起,我不能帮你解决音频问题
HTH不知道12986的确切含义,但它似乎与设备的音频功能有关。我有一个解决办法 我注意到这个错误只有在我使用iTouch时才会出现,而不是在IPhone上。由于我在和上都将会话类别设置为播放和录制,因此我决定在iTouch上检查这是否弄糟了。使代码更加智能,可以检测
音频输入是否可用
,然后相应地设置类别(ITouch上的播放
,iPhone上的播放和录制
)。这就解决了
因此,在以前的SDK中,这似乎被忽略了。我之前没有做任何更改。:-)
更正代码如下:
NSError *myErr;
BOOL bSuccess = FALSE;
BOOL bAudioInputAvailable = FALSE;
AVAudioSession *audioSession = [AVAudioSession sharedInstance];
bAudioInputAvailable= [audioSession inputIsAvailable];
if( bAudioInputAvailable)
{
[audioSession setCategory:AVAudioSessionCategoryPlayAndRecord error:&myErr];
}
else {
[audioSession setCategory:AVAudioSessionCategoryPlayback error:&myErr];
}
bSuccess= [audioSession setActive: YES error: &myErr];
if(!bSuccess)
{
NSLog(@"Unable to Start Audio Session. Terminate Application.");
NSLog([myErr localizedDescription]);
NSLog([myErr localizedFailureReason]);
NSLog([myErr localizedRecoverySuggestion]);
}
请包括定义MyErrnsDetailedErrorKey的行,该行在3.1中似乎已停止使用:-(它没有在参考中列出,也没有编译。我很抱歉,它也没有记录在案,似乎NSDetailedErrorsKey只用于核心数据。因为它在CoreDataErrors.h文件中。@mustignup Listing 2-1@slf这个词来自bbum本人……非常感谢,我觉得缺少麦克风与此有关。The用户的iPod在AudioUnitInitialize中出现了同样的错误。我非常确信,更智能的会话处理会帮我解决这个问题。这篇文章是我在OSStatus错误代码-12986上发现的唯一一件事,我也确实遇到了同样的问题。干杯