AVAudioSessionPortOverrideSpeaker 和 AVAudioSessionCategoryOptionDefaultToSpeaker区别
2015-02-11 14:34
501 查看
本文部分翻译了官方对这两个属性的描述。链接如下,此外加入个人的使用体会
https://developer.apple.com/library/ios/qa/qa1754/_index.html
问题的起源,在iOS中,播放声音时,输出到扬声器的需求。两个属性设置的区别
The difference is that setting the AVAudioSessionPortOverride by calling overrideOutputAudioPort: is more transient than using the category option AVAudioSessionCategoryOptionDefaultToSpeaker.
通过overrideOutputAudioPort这个方法设置,属性AVAudioSessionPortOverride, 比使用AVAudioSessionCategoryOptionDefaultToSpeaker这个属性更短暂
e.g
方法1
[session overrideOutputAudioPort:AVAudioSessionPortOverrideSpeaker error:&error];
方法2 ,
方法1,设置之后,如果此时插入耳机,在拔掉。播放的声音会从听筒输出,而不是回到扬声器
方法2. 设置之后,始终输出到扬声器,而不是其他接收器,如果没有耳机。(简要的说,就是如果有个蓝牙音箱,哪怕接上都不会有声音输出到蓝牙音响,插上耳机,则会有声音输出到耳机。)
这里有个很重要的地方。这两个属性都只被用于。
如果在某个场景下,希望强制从speaker输出声音,最好使用
AVAudioSessionCategoryPlayAndRecord ,因为后者默认从听筒输出。无外接设备的情况。
[session setCategory:
error:&error];
[audioSession setCategory:AVAudioSessionCategoryPlayAndRecord withOptions:AVAudioSessionCategoryOptionDefaultToSpeaker error:&error];
https://developer.apple.com/library/ios/qa/qa1754/_index.html
问题的起源,在iOS中,播放声音时,输出到扬声器的需求。两个属性设置的区别
The difference is that setting the AVAudioSessionPortOverride by calling overrideOutputAudioPort: is more transient than using the category option AVAudioSessionCategoryOptionDefaultToSpeaker.
通过overrideOutputAudioPort这个方法设置,属性AVAudioSessionPortOverride, 比使用AVAudioSessionCategoryOptionDefaultToSpeaker这个属性更短暂
e.g
方法1
[session overrideOutputAudioPort:AVAudioSessionPortOverrideSpeaker error:&error];
方法2 ,
[audioSession setCategory:AVAudioSessionCategoryPlayAndRecord withOptions:AVAudioSessionCategoryOptionDefaultToSpeaker error:&error];
方法1,设置之后,如果此时插入耳机,在拔掉。播放的声音会从听筒输出,而不是回到扬声器
方法2. 设置之后,始终输出到扬声器,而不是其他接收器,如果没有耳机。(简要的说,就是如果有个蓝牙音箱,哪怕接上都不会有声音输出到蓝牙音响,插上耳机,则会有声音输出到耳机。)
这里有个很重要的地方。这两个属性都只被用于。
AVAudioSessionCategoryPlayAndRecord
使用场景的补充
如果在某个场景下,希望强制从speaker输出声音,最好使用
AVAudioSessionCategoryPlayback, 而不是
AVAudioSessionCategoryPlayAndRecord ,因为后者默认从听筒输出。无外接设备的情况。
[session setCategory:
AVAudioSessionCategoryPlayback
error:&error];
需要使用扬声器和听筒切换场景,用
AVAudioSessionCategoryPlayAndRecord
使用听筒之后,PlayandRecord下切换到扬声器
[audioSession setCategory:AVAudioSessionCategoryPlayAndRecord withOptions:AVAudioSessionCategoryOptionDefaultToSpeaker error:&error];
相关文章推荐
- 播放录音(系统) AVAudioSessionPortOverrideSpeaker 和 AVAudioSessionCategoryOptionDefaultToSpeaker区别
- iPhone – Configuring the AVAudioSession and Output Audio to iPhone Speaker
- "_OBJC_CLASS_$_AVAudioSession", referenced from:解决方案
- AVAudioSessionCategory的选择
- iOS AVAudioSession 配置(录音完声音变小问题)
- How Do I Route Audio to Speaker without using AudioSessionSetProperty?
- AVAudioSessionCategory说明
- iOS AVAudioSession、AudioSession Category选择和声音通道听筒、扬声器切换
- AVAudioSessionInterruptionNotification not called
- AVAudioSession
- AVAudioSession.sharedInstance()设置支持静音式)(Call can throw, but it is not marked with 'try' and the error is not handled)
- AVAudioSessionCategory的选择
- AVAudioSession的Category
- iOS OC环信实时语音切换听筒免提听不到声音报错:AVAudioSessionErrorCodeBadParam
- AVAudioSession 的 AVAudioSessionCategory 和 AVAudioSessionCategoryOptions 相关
- AVAudioSession中 setCategory不正确导致不能正确录音或播放音频
- AVAudioSession bluetooth