Recording Audio on iOS Without Stopping Music Playback

谁说我不能喝 提交于 2019-12-22 04:07:41

问题


When recording audio with an AVAudioSession audio playback from the music app or others is stopped. This is described in the audio session documentation:

AVAudioSessionCategoryRecord

For recording audio; this category silences playback audio.

Is there any way to change this behavior and do one of the following?

1) Continue playing other apps' audio and allow the phone to record the audio that is being played.

2) Resume other apps' audio once a brief recording is finished. There are notifications apps can respond to when audio interruptions begin or end. Is there something specific that must be done for other apps to receive these notifications?


回答1:


from 24 hours of diligent searching and piecemealing things together, this is surprisingly simple:

let session = AVAudioSession.sharedInstance()
session.setCategory(AVAudioSessionCategoryPlayAndRecord, with: [.mixWithOthers, .allowBluetoothA2DP])

And that's it for anyone still searching how to do this.




回答2:


You can use

Obj-C

[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayAndRecord
withOptions:AVAudioSessionCategoryOptionMixWithOthers error:nil];

or

Swift

let audioSession = AVAudioSession.sharedInstance()
        do {
            try audioSession.setCategory(AVAudioSessionCategoryPlayAndRecord,
                                         with: AVAudioSessionCategoryOptions.mixWithOthers)
        } catch let error as NSError {
            print("audioSession error: \(error.localizedDescription)")
        }



回答3:


1) Not possible for AVAudioSession. All you can do is check [[AVAudioSession sharedInstance] isOtherAudioPlaying] and ask user would he like to stop music streaming or not.

2) App can't receive any notifications when iPod state changed, we can't even observe isOtherAudioPlaying property... Solution I use on my projects: add a NSTimer and once in sec check [[AVAudioSession sharedInstance] isOtherAudioPlaying] BOOL value.



来源:https://stackoverflow.com/questions/22052026/recording-audio-on-ios-without-stopping-music-playback

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!