我正在使用Audio Sessions构建iPhone音频应用程序.Prototype正在运行,直到我决定升级到3.1
经过大量的搜索后,我终于发现会话激活调用失败了,错误代码为12986.我无法在任何地方找到原因.NSError对象不提供任何细节.我使用本地化的*API来获取更多信息,这就是我得到的:
localizedDescription:无法完成操作.(OSStatus错误-12986.)localizedFailureReason: <blank>
localizedRecoverySuggestion: <blank>
任何人都知道如何找到有关此类错误代码的更多信息?
同时,如果状态发生变化,我会继续挖掘和更新.
我的好奇代码是 -
NSError *myErr;
AVAudioSession *audioSession = [AVAudioSession sharedInstance];
[audioSession setCategory:AVAudioSessionCategoryPlayAndRecord error:&myErr];
bSuccess= [audioSession setActive: YES error: &myErr];
Run Code Online (Sandbox Code Playgroud)
不知道12986的确切含义,但它现在似乎与设备的音频功能有关.我有一个解决方案!
我注意到只有当我使用iTouch而不是在iPhone上时才出现此错误.由于我设置会话类为PlayAndRecord上两个我决定进去看看这是搞乱它的iTouch的.使代码更智能,以检测是否AudioInputIsAvailable相应地设置类别(PlayBack在ITouch和PlayAndRecordiPhone上).修好了!
所以看起来在之前的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]);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1913 次 |
| 最近记录: |