iOS AudioSession
来源:互联网 发布:深入浅出数据分析阅读 编辑:程序博客网 时间:2024/04/30 13:01
iOS AudioSession详解 Category选择 听筒扬声器切换
(2014-12-19 15:49:37)选择一个Category
AVAudioSessionCategoryAm
kAudioSessionCategory_AmbientSound
——用于非以语音为主的应用,使用这个category的应用会随着静音键和屏幕关闭而静音。并且不会中止其它应用播放声音,可以和其它自带应用如iPod,safari等同时播放声音。注意:该Category无法在后台播放声音
AVAudioSessionCategorySo
kAudioSessionCategory_SoloAmbientSound
——类似于AVAudioSessionCategoryAm
AVAudioSessionCategoryPl
kAudioSessionCategory_MediaPlayback
——用于以语音为主的应用,使用这个category的应用不会随着静音键和屏幕关闭而静音。可在后台播放声音
AVAudioSessionCategoryRe
kAudioSessionCategory_RecordAudio
———
用于需要录音的应用,设置该category后,除了来电铃声,闹钟或日历提醒之外的其它系统声音都不会被播放。该Category只提供单纯录音功能。
AVAudioSessionCategoryPl
kAudioSessionCategory_PlayAndRecord
——用于既需要播放声音又需要录音的应用,语音聊天应用(如微信)应该使用这个category。该Category提供录音和播放功能。如果你的应用需要用到iPhone上的听筒,该category是你唯一的选择,在该Category下声音的默认出口为听筒(在没有外接设备的情况下)。
注意:并不是一个应用只能使用一个category,程序应该根据实际需要来切换设置不同的category,举个例子,录音的时候,需要设置为AVAudioSessionCategoryRe
设置Category
- NSError
*setCategoryError = nil ; - BOOL
success = [[AVAudioSession sharedInstance ] -
setCategory :AVAudioSessionCategoryAm bient -
error :&setCategoryError]; -
- if
(!success) { }
Activate & Deactivate AudioSession
- NSError
*error = nil ; - AVAudioSession
*audioSession = [AVAudioSession sharedInstance ]; - BOOL
ret = [audioSession setActive :YESerror :&error]; - if
(!ret) - {
-
NSLog(@"%s - ,activate audio session failed with error %@" __func__,[error description ]); - }
- NSError
*error = nil ; - AVAudioSession
*audioSession = [AVAudioSession sharedInstance ]; - //Note:
Set AVAudioSessionSetActiveO ptionNotifyOthersOnDeact ivation to resume other apps' audio. - BOOL
ret = [audioSession setActive :NOwithOptions :AVAudioSessionSetActiveOptionNotifyOthersOnDeact ivation error :&error]; - if
(!ret) - {
- }
Audio Route的选择
当你的iPhone接有多个外接音频设备时(耳塞,蓝牙耳机等),AudioSession将遵循last-in wins的原则来选择外接设备,即声音将被导向最后接入的设备。
当没有接入任何音频设备时,一般情况下声音会默认从扬声器出来,但有一个例外的情况:在PlayAndRecord
这个category下,听筒会成为默认的输出设备。如果你想要改变这个行为,可以提供MPVolumeView来让用户切换到扬声器,也可通过overrideOutputAudioPort方法来programmingly切换到扬声器,也可以修改category option为AVAudioSessionCategoryOp
PlayandRecord下切换到扬声器
除了让用户手动选择,你也可以通过以下两种方法在程序里进行切换
1. 修改Category的默认行为:
- [audioSession
setCategory :AVAudioSessionCategoryPlayAndRecord withOptions :AVAudioSessionCategoryOptionDefaultToSpeaker error :&error];
- [audioSession
overrideOutputAudioPort :AVAudioSessionPortOverrideSpeaker error :&error];
- IOS AudioSession
- iOS AudioSession
- iOS之AudioSession详解
- ios AudioSession简介
- iOS音频播放 (二):AudioSession
- iOS音频播放(二):AudioSession
- iOS音频播放 (二):AudioSession
- iOS音频播放 (二):AudioSession
- iOS音频播放 (二):AudioSession
- iOS音频播放 (二):AudioSession
- iOS音频播放(二):AudioSession
- iOS音频播放(二):AudioSession
- iOS音频播放 (二):AudioSession
- AudioSession
- iOS音频播放 (二):AudioSession 转
- [iOS]iOS AudioSession详解 Category选择 听筒扬声器切换
- [IOS]IOS上AudioSession设置, 切换扬声器和听筒详解
- [iOS]iOS AudioSession详解 Category选择 听筒扬声器切换
- Android studio 常见问题
- android替代版本 SQLite 报 no such table
- [Extjs6] 对gridpanel数据显示前对其进行相关的格式处理
- Java导出Excel表格数据
- centos6.5编译安装ACE6.3.4静态库
- iOS AudioSession
- 把共享库(SO)加载到指定的内存地址
- 第七讲项目2-输入3个数,输出其中的最大值
- WIN7 下 explorer 进行的文件移动COPY HOOK
- heartbeat高可用集群+负载均衡+ldirectord后端安全检查
- Build a UI with Layout Editor(翻译文章)Android Studio 可视化界面编辑器
- ContentResolver query方法 参数详解
- Servlet基础
- oracle 11g 静默安装