我有一个在后台使用位置服务的应用程序。工作正常。
但是我想要在某个时候做的是在应用程序处于后台时检查一些音频电平。由于某种原因,它似乎不起作用。在前台运行时,该功能运行良好,但在后台运行时,录音机的平均和峰值输入始终为-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];
}
...
是的,即使在后台,也会每0.02秒调用一次
levelTimerCallback
,因此我认为beginBackgroundTaskWithExpirationHandler
可以正常工作。有什么想法或提示吗?
最佳答案
当前,在iOS设备上进行后台录制的唯一受支持的方法是在应用程序的plist中包括UIBackgroundModes键的音频,启用适当的音频 session 进行录制,并在应用程序进入应用程序之前开始录制(或播放)音频。背景。
如果应用程序使用音频队列或RemoteIO音频单元API进行记录,则缓冲区回调仅可以丢弃所有音频缓冲区,直到达到感兴趣的时间为止,然后计算PCM采样所代表的能量,以达到所需的时间。需要。
关于iphone - 在iOS上后台录音,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12534095/