オープンな初期化の問題、iPodのみ(?)
質問
私は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を返していますが、その理由はわかりません。オーディオは実際には私の専門知識ではなく、これに関する多くの情報を見つけることができないので、皆さんが私に与えることができる助けをいただければ幸いです。
ありがとう!
編集:初期化の順序を逆転させるとわかりました。つまり、Openalを初期化してオーディオセッションを初期化した場合、それは機能します...間違いなく続いています。また、それはまだ古いバージョンのiOSで動作しません
解決
初期化の逆順序は大丈夫であるように見えます、オープン、そして聴覚
他のヒント
ただの野生の推測:
第1世代のiPod Touchはそうではありません 持ってる スピーカー。したがって、おそらく、オーディオルートを存在しないスピーカーにオーバーライドすることはできません。
編集: :ああ、最新の(第4世代)iPod Touchのみがマイクを組み込んでいます。他のすべての世代は、ヘッドフォン(マイク付き)を録音する必要があります。たぶんそれが突然のすべての動作を停止し、ヘッドフォンが削除されたのでしょう。
所属していません StackOverflow