我的开放性问题似乎只在iPod硬件中发生,奇怪的是 曾是 正常工作,现在不是。

我正在设置音频会话:

[[AVAudioSession sharedInstance] setCategory: AVAudioSessionCategoryPlayAndRecord error: nil];
UInt32 audioRouteOverride = kAudioSessionOverrideAudioRoute_Speaker;
AudioSessionSetProperty(kAudioSessionProperty_OverrideAudioRoute, 
sizeof(UInt32), &audioRouteOverride);

AudioSessionSetActive(YES);

并初始化开放式:

device = alcOpenDevice(NULL);
if (!device) {
    NSLog(@"Could not open default OpenAL device.");
    return NO;
}

context = alcCreateContext(device, 0);
if (!context) {
    NSLog(@"Failed to create OpenAL context for default device.");
    return NO;
}

BOOL success = alcMakeContextCurrent(context);  // fails here
if (!success) {
    NSLog(@"Failed to set current OpenAL context.");
    return NO;

输出是:

AudioStreamBasicDescription:  2 ch,  44100 Hz, 'lpcm' (0x00000C2C) 8.24-bit little-endian signed integer, deinterleaved
2010-10-27 10:51:09.261 FinchTestProject[239:307] Failed to set current OpenAL context.

因此,alcmakecontextcurrent函数正在返回false,我不确定为什么。音频并不是我的专业知识,我找不到太多的信息,因此,您能为我提供任何帮助。

谢谢!

编辑:我发现如果我扭转了初始化的顺序 - 那就是如果我初始化开放式,然后是Audiosession,它可以正常工作...尽管这是我以前使用过的顺序,并且它不起作用,所以有些有趣肯定是在进行;另外,它仍然不适用于iOS的旧版本

有帮助吗?

解决方案

初始化的反向顺序似乎可以正常运行,开放式音调

其他提示

只是一个疯狂的猜测:

第一代iPod Touch没有 演讲者。因此,也许您不能将音频途径覆盖到不存在的扬声器。

编辑: :哦,只有最新的(第四代)iPod Touch都内置了一个麦克风。所有其他世代都要求插入耳机(带有麦克风)以记录。也许这就是为什么它突然停止工作的原因,耳机被删除了。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top