【发布时间】:2019-06-07 17:29:48
【问题描述】:
我正在尝试实现一些我认为非常容易的事情,但事实证明并非如此。
我正在使用“react-native-audio”库的源代码。但是你可以假设我为了这个问题而在本地工作。
这是我正在玩的reference for the source code。
我的目标很简单,我正在使用AVAudioRecorder 录制会议(大约需要 30 分钟)。如果在录音过程中有来电,我希望我的应用能够通过执行以下选项之一“恢复”:
1) 当应用回到前台时,“暂停”“来电”和“恢复”记录。
2) 来电时 - 关闭当前文件,当应用程序返回前台时,开始使用新文件进行新录制(第 2 部分)。
显然选项 (1) 是首选。
请注意,我很清楚使用AVAudioSessionInterruptionNotification 并在我的实验中使用它到目前为止没有运气,例如:
- (void) receiveAudioSessionNotification:(NSNotification *) notification
{
if ([notification.name isEqualToString:AVAudioSessionInterruptionNotification]) {
NSLog(@"AVAudioSessionInterruptionNotification");
NSNumber *type = [notification.userInfo valueForKey:AVAudioSessionInterruptionTypeKey];
if ([type isEqualToNumber:[NSNumber numberWithInt:AVAudioSessionInterruptionTypeBegan]]) {
NSLog(@"*** InterruptionTypeBegan");
[self pauseRecording];
} else {
NSLog(@"*** InterruptionTypeEnded");
[_recordSession setActive:YES error:nil];
}
}
}
请注意,我将为这个问题设置赏金,但唯一可接受的答案将是真实世界的工作代码,而不是“理论上应该工作”的东西。非常感谢您的帮助:)
【问题讨论】:
-
此答案显示的第三种方式:1b)暂停中断并恢复您稍后合并的新文件:stackoverflow.com/a/5112943 N.B.这可以通过其他 API 实现。
-
感谢@RhythmicFistman,首先这个答案来自 2011 年,希望从那时起情况有所改变。我不相信苹果有 8 年的开放错误。而且,根据我的实验,来电正在破坏当前的录音文件,即在来电之前无法收听录音。这就是为什么我特别要求提供真实世界的工作代码
-
Apple 的回应措辞听起来像是一个设计错误,所以没有代码给你!您对其他 API 持开放态度吗?
AVAudioEngine和CoreAudio可以做到这一点。 -
任何能解决我问题的解决方案对我来说都很好。我希望能够录制音频并能够从来电中恢复
-
你的格式选项是什么?
标签: ios iphone react-native avfoundation