質問

私は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のみがマイクを組み込んでいます。他のすべての世代は、ヘッドフォン(マイク付き)を録音する必要があります。たぶんそれが突然のすべての動作を停止し、ヘッドフォンが削除されたのでしょう。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top