8

Apple のデモ プロジェクト aurioTouch2 は、録音モードでのオーディオ割り込みの処理に関して、iOS-6 と同じ問題を示しています。

シナリオは非常に具体的です。音声録音モードの場合、電話をかけ、応答します (電話を拒否してもバグは発生しません)。次に、電話を切った後、アプリはフォーカスに戻り、記録の続行に失敗します。

エラー メッセージは次のとおりです。

aurioTouch2 プロジェクトは iOS-5 のアップデートでしたが、iOS-6 では機能しません。デバイスは「電話」であるため、私のアプリにとってはかなり重大なバグのようです。

私は運なしであらゆる賢明なバリエーションを試しました。誰でも同じ問題に遭遇しますか? どうもありがとう。

編集:これは私のためにそれを修正したコードです。修正はコメントに記載されています。正確にはエレガントではありませんが、この時点では何でも受け入れます。

このメソッドは、アプリがアクティブな状態に戻った、ある時点で呼び出されます。割り込み終了トリガーにフラグを設定させ、後で物事が再び生きているときにフラグをチェックしてから、ここでこのメソッドを呼び出します。

-(void) handleEndInterruption {
    // Reset audio session
    UInt32 category = kAudioSessionCategory_PlayAndRecord;
    AudioSessionSetProperty ( kAudioSessionProperty_AudioCategory, sizeof (category), &category );

    // Reactivate the current audio session
    AudioSessionSetActive(YES);

    // Do this, and fail with: AUIOClient_StartIO failed (2003329396)
    [self createAUProcessingGraph];
    [self initializeAndStartProcessingGraph];

    // Do it a second time and it works
    AudioSessionSetActive(NO);
    AudioSessionSetActive(YES);
    [self createAUProcessingGraph];
    [self initializeAndStartProcessingGraph];

    // Restore open al context
    alcMakeContextCurrent([AudioDispatcher sharedInstance].audioContext);

    // 'unpause' my context
    alcProcessContext([AudioDispatcher sharedInstance].audioContext);
}
4

1 に答える 1

0

私は同じ問題に遭遇し、解決策を見つけました。

コア テレフォニー フレームワークを使用して着信を検出し、オーディオ キューに触れずに、ファイルを閉じて録音を「不用意に」停止します。次に、アプリが再開すると、録音が​​一時停止状態で表示され、ユーザーは録音を再開できるようになります。その間、すべてのコア オーディオ キューを再起動しました。

ARC を使用している場合は、callEventHandlerに注意してください。CTCallCenterちゃんと解除されないので忘れずに設定してnilください。

于 2012-11-27T10:59:44.397 に答える