【发布时间】:2013-12-10 15:01:10
【问题描述】:
我刚刚开始在实际的 iPhone 设备上测试这个通过 Monotouch 构建的非常简单的录音应用程序。我遇到了一个问题,似乎是 AVAudioRecorder 和 AVPlayer 对象在第一次使用后被重复使用,我想知道如何解决它。
基本概述
该应用程序由以下三个部分组成:
- 记录列表(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 区域的初始加载时,每一项都按预期工作,但是任何进一步的尝试似乎都不起作用(没有音频播放)
Details 区域也有一个播放部分,允许用户播放任何录音,但是,与 New Recording Controller 很相似,播放在那里也不起作用。
处置
它们都按如下方式处理(退出/离开视图时):
if(recorder != null)
{
recorder.Dispose();
recorder = null;
}
if(player != null)
{
player.Dispose();
player = null;
}
我还尝试删除任何可能保持任何对象“活动”的观察者,希望能够解决问题并确保它们在每次显示新记录区域时都被实例化,但是我仍然没有收到初始录制会话后的音频播放。
如有必要,我很乐意提供更多代码。 (这是使用 MonoTouch 6.0.6)
【问题讨论】:
标签: ios audio xamarin.ios recording