2011-02-01 24 views
0

基本的なAVAudioRecorder/AVAudioPlayerサウンドレコーダーとプレーヤーを作成しテストしました。最終的には、私はこのデバイスでも、シミュレータでも動作させました。私のプレイヤー/レコーダーコードは、単一のUIViewサブクラスにあります。残念ながら、クラスを私のメインプロジェクトにコピーすると、それはもはや機能しません(デバイス上で - シミュレータは問題ありません)。 prepareToRecordは正常に動作していますが、recordは正しく動作していません。AVAudioRecorder prepareToRecordは動作しますが、記録に失敗します

audioRecorder = [[ AVAudioRecorder alloc] initWithURL:url settings:recordSettings error:&error]; 
     if ([audioRecorder prepareToRecord]){ 
      audioRecorder.meteringEnabled = YES; 
      if(![audioRecorder record])NSLog(@"recording failed!"); 
     }else { 
      int errorCode = CFSwapInt32HostToBig ([error code]); 
      NSLog(@"preparedToRecord=NO Error: %@ [%4.4s])" , [error localizedDescription], (char*)&errorCode); 
... 

「記録に失敗しました」と表示されます。誰もが、なぜこれが起きているのか考えていますか?

+0

私はこの問題を発見しました。私の主なプロジェクトのどこかには、独自の[AVAudioSession sharedInstance]を持つCocos2d "SimpleAudioEngine"を使用しています。私の推測では、これは何とか私のオーディオセッションの設定に干渉するというものです。たとえば、次のようになります。[audioSession setCategory:AVAudioSessionCategoryPlayAndRecord error:&error];とにかく、SimpleAudioEngineを削除すると、レコーダー/プレーヤーが機能します。もちろん、私に別の問題が残る... – iPadDeveloper2011

答えて

1

完全な解決策は、[SimpleAudioEngine sharedEngine]の初期化を私自身の前に移すことでしたAVAudioSession setCategory。私はSimpleAudioEngineのどこかで、そのことをsetCategory :AVAudioSessionCategoryAmbientと考えています。これを私自身のsetCategory :AVAudioSessionCategoryPlayAndRecordでオーバーライドすると、すべてが機能します。

関連する問題