2011-01-24 25 views
1

私が取り組んでいるcocos2dゲームでAVAudioRecorderを使用しているAVAudioSessionに問題があります。AVAudioSessionはiPhoneオーディオを自動的に再ルーティングしますか?

単純なAVAudioRecorderの例を使ってマイク入力をキャプチャしようとしていますが、ユーザーがマイクで音を出すタイミングを検出します(サウンド自体は問題ではありません、私は/ dev/nullに記録しています)。ここで

はマイクのための私のセットアップコードです:

NSURL *newURL = [[NSURL alloc] initFileURLWithPath:@"/dev/null"]; 

    [[AVAudioSession sharedInstance] setCategory: AVAudioSessionCategoryPlayAndRecord error: nil]; 

    NSDictionary *recordSettings = 
    [[NSDictionary alloc] initWithObjectsAndKeys: 
    [NSNumber numberWithFloat: 22050.0], AVSampleRateKey, 
    [NSNumber numberWithInt: kAudioFormatAppleLossless], AVFormatIDKey, 
    [NSNumber numberWithInt: 1], AVNumberOfChannelsKey, 
    [NSNumber numberWithInt: AVAudioQualityLow], 
    AVEncoderAudioQualityKey, 
    nil]; 

    micInput = [[AVAudioRecorder alloc] initWithURL:newURL settings:recordSettings error:nil]; 
    [newURL release]; 
    [recordSettings release]; 
    [micInput setMeteringEnabled:YES]; 

上記のコードでは、iPhone上で、シーンは本当にで遊んオーディオ(効果音、背景音楽など)のすべてで始まりますそれは外部スピーカーの代わりに電話スピーカーでのみ再生されるためです。 iPadまたはiPod Touchでこれをテストすると、バックグラウンドオーディオが期待通りに外部スピーカーを通って再生されます。これは、ゲームのこの特定の部分でiPhone版でプレイすると、ゲームの音量が大幅に低下するため、問題です。

AVAudioSessionセットアップ行をコメントアウトすると、サウンドは外部スピーカーで再生されますが、もちろんマイク入力ができなくなります。この問題の回避策または解決策はありますか?私はAVAudioRecorderで録音できる必要がありますが、iPhoneの外部スピーカーからのオーディオ出力はまだあります。

ありがとうございます!

答えて

2

はあなたのセットアップオーディオセッションの後、次のようなものを試してみてください:

  UInt32 ASRoute = kAudioSessionOverrideAudioRoute_Speaker; 
     AudioSessionSetProperty (
      kAudioSessionProperty_OverrideAudioRoute, 
      sizeof (ASRoute), 
      &ASRoute 
     ); 
+0

これは私の問題を解決しました。あなたの助けをありがとう! – chmod

関連する問題