目前,我正在iOS上开发应用程序,该应用程序通过AudioQueue
记录音频文件。为了处理电话,闹钟等中断。我注册了notification
的回调:
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(audioSessionDidChangeInterruptionType:)
name:AVAudioSessionInterruptionNotification object:self.session];
并妥善处理
- (void)audioSessionDidChangeInterruptionType:(NSNotification *)notification
{
AVAudioSessionInterruptionType interruptionType = (AVAudioSessionInterruptionType)[[[notification userInfo]
objectForKey:AVAudioSessionInterruptionTypeKey] unsignedIntegerValue];
if (AVAudioSessionInterruptionTypeBegan == interruptionType)
{
//handle beginning or interruption
}
else if (AVAudioSessionInterruptionTypeEnded == interruptionType)
{
//handle end or interruption
}
}
一切正常,只要用户接到电话,录音就会暂停,然后在通话结束后恢复录音。但是有一个微小的细节打破了所有这些。如果我在
microphone
期间插入或拔出phone call
,则不会恢复记录。之所以无法恢复,是因为当我结束通话时,没有调用带有audioSessionDidChangeInterruptionType
的AVAudioSessionInterruptionTypeEnded
方法。对于应用程序,中断永远不会结束。我有一个想法,当中断开始时启动
NSTimer
,然后每隔一秒检查一次电话是否已经结束,但是它有两个缺点:您是否遇到过此问题?如果是,您是否找到解决方法?
我将iPhone 5S与iOS8配合使用。
最佳答案
从Apple iOS Human Interface Guidelines on Sound:
用户使用头戴式耳机和头戴式耳机 private 聆听声音并免费
他们的手。无论这些配件是有线的还是
无线,用户对用户体验有特定的期望。
当用户插入头戴式耳机或头戴式耳机或连接到无线设备时
音频设备,他们打算继续收听当前音频,
但私下里基于这个原因,他们希望目前有一个应用
播放音频以继续播放而不会暂停。
当用户拔下头戴式耳机或耳机或从
无线设备(或设备超出范围或关闭),它们
不想自动分享他们一直在听的内容
其他。因此,他们希望有一个正在播放的应用
音频暂停,以便他们在出现以下情况时可以明确地重新开始播放
他们准备好了。
鉴于您将很难找到一个干净的解决方案。
关于ios - 如果在通话过程中插入了麦克风,则无法恢复录制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27721684/