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

时间:2012-06-01 15:27:42

标签: ios audio-recording background-foreground

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

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

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

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

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

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

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

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

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

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

0 个答案:

没有答案