应用程序到达前台后SpeakHere录音机崩溃

Den*_*nis 5 audio-recording background-foreground ios

我根据Apple的SpeakHere音频应用示例编写了一个小型录音机/播放器,可以在我的iPad上使用.当用户要求显示录像机时,UIView将打开并显示录制/停止按钮和仪表.

当我从头开始加载应用程序时,我可以记录,停止记录,再次记录我想要的任何时间.停止录制后,我将应用程序放在后台,例如阅读我的邮件.再次将录音机置于前台时,无法录制任何声音.我在日志中收到错误消息,仪表不显示任何数据,也没有创建声音文件.我注意到与iPhone和iPad上的SpeakHere示例应用程序相同的行为.唯一的解决方案是退出并重新启动应用程序.

为了解决这个问题,我决定在用户​​完成录像机的使用后取消分配视图控制器.我为记录视图控制器禁用了ARC,并编写了dealloc方法.在这个控制器的viewDidDisappear中,我进行了[self dealloc]调用.

但程序崩溃,发送[RecorderViewController childViewControllersCount]:消息发送到解除分配的实例.我想这样的自我dealloc是不允许的......

我需要找到一个解决方案,或者......

  1. 找到一种在应用程序进入后台时正确管理音频会话的方法(因为录制停止,我不明白为什么会出现这样的问题).

  2. 或者在视图关闭时正确释放录像机视图控制器,以确保在视图必须出现的任何时候,它都会从控制器的XIB文件中再次加载.

[更新]在查看aurioTouch应用程序的代码(Apple dev网站的另一个音频示例)后,我在我的应用程序委托中获得了以下代码:

- (void)applicationDidBecomeActive:(UIApplication *)application
{
    AudioSessionSetActive(true);

}
Run Code Online (Sandbox Code Playgroud)

它可以在我的应用程序或SpeakHere应用程序中运行...花了很多时间找到一个解决方法,这是一行代码!