9

私はオーディオレコーダーアプリケーションに取り組んでいます、それは完全にうまく働いています。

しかし、私は中断の問題で立ち往生しています。電話がかかってきたら、

- (void)audioRecorderBeginInterruption:(AVAudioRecorder *)recorder

次に、このメソッドが呼び出され、記録が一時停止されます。

また、ユーザーが通話を拒否した場合:

- (void)audioRecorderEndInterruption:(AVAudioRecorder *)recorder

それでは、ここで中断したところから録音を再開したいと思います。しかし、recordメソッドを再度呼び出すと、新しいファイルから記録が開始されます。

4

4 に答える 4

2

OS が中断中に AVAudioRecorder を停止している可能性があります。2 つ以上のファイルを 1 つの録音としてユーザーに提示するか、AudioQueue を使用して中断を処理するためのコードを記述します (オーディオ データをファイルに保存することもできます)。

于 2009-12-30T23:40:48.020 に答える
0

少し前にこれをやろうとしましたが、適切に行うことができないという結論に達しました。オペレーティングシステム自体がそれをさせません。3.1.2 で変更されたのかもしれませんが、3.0 で試してみるとうまくいきませんでした。

于 2010-01-01T03:10:38.040 に答える
0

中断を処理するには、AVAudioRecorderDelegate メソッドの代わりに AVAudioSessionDelegate メソッドを使用する必要があります。これは、中断を処理するためのコード サンプルです。

/*=================================================================
 Interruption Handling Method during Recording
 ==================================================================*/

- (void) beginInterruption 
{
 if(self.recorder)
        {
  //Method to handle UI
 }
}

- (void) endInterruption
{

 NSError *err = noErr;
 [[AVAudioSession sharedInstance] setActive: YES error: &err];
 if(err != noErr)
 {
   NSLog([err description]);
 }
        //method to handle UI
} 

最初の方法では、オーディオ セッションが自動的に無効になります。したがって、2 番目の方法では、オーディオ セッションを再度有効にする必要があります。最初の方法では録音を一時停止し、中断が終了したら、2 番目の方法で再開できます。バージョン 3.0 以降で試しました。

于 2010-02-15T11:40:41.133 に答える