0

我有一个在后台使用位置服务的应用程序。工作正常。但在某个时候,我想做的是在应用程序处于后台时检查一些音频电平。由于某种原因,它似乎不起作用。在前台运行时,该功能工作正常,但在后台运行时,录音机平均和峰值输入始终为 -120..

这就是我用来做这个把戏的方法(这显然不起作用..)

            ....
            [recorder record];
            if (levelTimer == nil) {
                    bgTask = 0;
                    app = [UIApplication sharedApplication];
                    bgTask = [app beginBackgroundTaskWithExpirationHandler:^{
                        [app endBackgroundTask:bgTask];
                    }];
                levelTimer = [NSTimer scheduledTimerWithTimeInterval: 0.02 target: self selector: @selector(levelTimerCallback:) userInfo: nil repeats: YES];
            }
            ...

是的levelTimerCallback,即使在后台,每 0.02 秒调用一次,所以我认为beginBackgroundTaskWithExpirationHandler工作正常。

有什么想法或一些提示吗?

4

3 回答 3

3

目前,在 iOS 设备上在后台录制的唯一支持方式是在应用程序的 plist 中包含 UIBackgroundModes 键的音频,启用适当的音频会话进行录制,并在应用程序进入之前开始录制(或播放)音频背景。

如果应用程序使用 Audio Queues 或 RemoteIO Audio Unit API 进行录制,则缓冲区回调可以丢弃所有音频缓冲区,直到感兴趣的时间,然后计算 PCM 样本表示的能量,以达到所需的时间量需要。

于 2012-09-22T16:02:11.187 回答
-1

我知道有一个应用程序有背景记录。Beatmaker 2。您需要在beatmaker 2下的设备设置中打开后台运行。在beatmaker中创建音轨并开始录制。他们使用设备上的主页按钮退出应用程序,但它仍在录制。您也可以通过不同的界面获得创意。我这样做是为了将 iPhone 4 的线路输出到 beatmaker 2 的音轨中。您可以录制前台播放的任何内容的音频。(YouTube 视频应用音乐来自您的 iTunes 库。您也可以在录制后编辑波浪。

于 2013-01-23T20:49:01.757 回答
-1

我不认为 iPhone 将允许在后台录制。当应用程序进入后台时,只允许少数服务。从逻辑上讲,如果您的应用程序长时间处于后台,它将消耗大量电池以及存储音频的缓冲区,除非您有时间和内存管理这些资源。当您将应用提交到 App Store 时,这也会给您的应用带来问题。

尽管您可以参考此链接以了解可以在后台运行的内容。我希望这可以帮助你以某种方式清除事情。

iPhone:在后台运行服务

祝你好运!!!

于 2012-09-21T17:39:02.203 回答