私が取り組んでいる cocos2d ゲームで AVAudioRecorder を使用する AVAudioSession に問題があります。
シンプルな 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 の外部スピーカーからのオーディオ出力も必要です。
ありがとう!