今日、実際のiPhoneデバイスでMonotouchを介して構築されたこの非常にシンプルなオーディオレコーディングアプリケーションのテストを開始しました。AVAudioRecorder
とオブジェクトを最初に使用した後の再利用と思われる問題に遭遇しましたが、AVPlayer
どうすれば解決できるのでしょうか。
基本的な概要
アプリケーションは、次の3つのセクションで構成されています。
- 録音リスト(TableViewController)
- 詳細の記録(ViewController)
- 新しい記録(ViewController)
ワークフロー
記録を作成するとき、ユーザーは[記録のリスト]領域から[追加]ボタンをクリックし、アプリケーションは新しい記録ビューコントローラーを押します。
New Recording Controller内では、次の変数を使用できます。
AVAudioRecorder recorder;
AVPlayer player;
それぞれが使用前に初期化されます。
//Initialized during the ViewDidLoad event
recorder = AVAudioRecorder.Create(audioPath, audioSettings, out error);
と
//Initialized in the "Play" event
player = new AVPlayer(audioPath);
これはそれぞれ、New Recording Controller領域の初期ロードで意図したとおりに機能しますが、それ以上の試行は機能しないようです(オーディオ再生なし)
詳細領域には、ユーザーが任意の録音を再生できるようにする再生部分もありますが、新しい録音コントローラーと同様に、再生もそこでは機能しません。
廃棄
それらは両方とも次のように配置されます(ビューを終了/終了するとき):
if(recorder != null)
{
recorder.Dispose();
recorder = null;
}
if(player != null)
{
player.Dispose();
player = null;
}
また、問題を解決することを期待して、オブジェクトを「生きた」状態に保つことができるオブザーバーを削除しようとしました。また、新しい記録領域が表示されるたびにオブジェクトがインスタンス化されるようにしましたが、その後もオーディオの再生がありません。最初の録音セッション。
必要に応じて、さらに多くのコードを提供させていただきます。(これはMonoTouch 6.0.6を使用しています)