ios 音频处理开发(一)iOS AudioSession中的category配置问题
来源:互联网 发布:淘宝定制的可强行退吗 编辑:程序博客网 时间:2024/06/06 12:36
iOS AudioSession的Category如何选择
1.kAudioSessionCategory_AmbientSound或 AVAudioSessionCategoryAmbient
使用这个category的应用会随着静音键和屏幕关闭而静音。并且不会中止其它应用播放声音,也不会被其他应用播放声音中止,可以和其它自带应用如iPod,safari等同时播放声音。注意:该Category无法在后台播放声音,即使应用开机了Background Modes audio,AirPlay and Picture in Picture模式
UInt32 sessionCategory = kAudioSessionCategory_AmbientSound;
AudioSessionSetProperty (kAudioSessionProperty_AudioCategory,
sizeof(sessionCategory),
&sessionCategory);
2.kAudioSessionCategory_SoloAmbientSound或 AVAudioSessionCategorySoloAmbient
使用这个category的应用会中止其他应用播放声音,并且会随着静音键和屏幕关闭而静音。该category就是AVAudioPlayer默认的category。注意:该Category无法在后台播放声音,即使应用开机了Background Modes audio,AirPlay and Picture in Picture模式
UInt32 sessionCategory = kAudioSessionCategory_SoloAmbientSound;
AudioSessionSetProperty (kAudioSessionProperty_AudioCategory,
sizeof(sessionCategory),
&sessionCategory);
3.kAudioSessionCategory_MediaPlayback或 AVAudioSessionCategoryPlayback
使用这个category的应用,会中断其他应用播放声音,其他应用的播放也会中断它的声音播放,不会随着静音键和屏幕关闭而静音。注意:可以在后台播放声音,但是要主动去开启Background Modes Audio,Airplay and Picture in Picture模式
UInt32 sessionCategory = kAudioSessionCategory_MediaPlayback;
AudioSessionSetProperty (kAudioSessionProperty_AudioCategory,
sizeof(sessionCategory),
&sessionCategory);
4. kAudioSessionCategory_RecordAudio或 AVAudioSessionCategoryRecord
该category用于需要录音的应用,设置该category后,除了来点铃声,闹钟或日历提醒之外的其他系统声音都不会被播放。这个category只提供单纯录音功能。注意,这个时候我发现,手机系统的音量增减都没有效果了。
UInt32 sessionCategory = kAudioSessionCategory_RecordAudio;
AudioSessionSetProperty (kAudioSessionProperty_AudioCategory,
sizeof(sessionCategory),
&sessionCategory);
5. kAudioSessionCategory_PlayAndRecord或 AVAudioSessionCategoryPlayAndRecord
该category用于既需要播放声音又需要录音的应用。如果我们的应用需要用到iPhone上的听筒,那么这个category是我们唯一的选择,在该category下声音的默认出口为听筒(在没有外接设备的情况下)。当然如果我们想要使用这个category,但是又要声音从扬声器播放出来,那么我们可以去修改AudioSession的kAudioSessionProperty_OverrideAudioRoute属性为kAudioSessionOverrideAudioRoute_Speaker。但是如果不使用了这个category就不能让声音去听筒播放。再必要的需求时,必须去主动切换AudioSession的category。
默认情况下:
UInt32 sessionCategory = kAudioSessionCategory_PlayAndRecord;
AudioSessionSetProperty (kAudioSessionProperty_AudioCategory,
sizeof(sessionCategory),
&sessionCategory);
让声音从扬声器播放出来:
UInt32 sessionCategory = kAudioSessionCategory_PlayAndRecord;
AudioSessionSetProperty (kAudioSessionProperty_AudioCategory,
sizeof(sessionCategory),
&sessionCategory);
UInt32 audioRouteOverride =kAudioSessionOverrideAudioRoute_Speaker;
AudioSessionSetProperty(kAudioSessionProperty_OverrideAudioRoute,sizeof(audioRouteOverride),
&audioRouteOverride);
注意:并不是一个应用只能使用一个category,程序应该根据实际需要来切换设置不同的category,举个例子,录音的时候,需要设置为AVAudioSessionCategoryRecord,当录音结束时,应根据程序需要更改category为AVAudioSessionCategoryAmbient,AVAudioSessionCategorySoloAmbient或AVAudioSessionCategoryPlayback中的一种。
- ios 音频处理开发(一)iOS AudioSession中的category配置问题
- iOS音频播放 (二):AudioSession
- iOS音频播放(二):AudioSession
- iOS音频播放 (二):AudioSession
- iOS音频播放 (二):AudioSession
- iOS音频播放 (二):AudioSession
- iOS音频播放 (二):AudioSession
- iOS音频播放(二):AudioSession
- iOS音频播放(二):AudioSession
- iOS音频播放 (二):AudioSession
- iOS开发——音频播放 (二):AudioSession
- iOS音频播放 (二):AudioSession 转
- [iOS]iOS AudioSession详解 Category选择 听筒扬声器切换
- [iOS]iOS AudioSession详解 Category选择 听筒扬声器切换
- [iOS]iOS AudioSession详解 Category选择 听筒扬声器切换
- [iOS]iOS AudioSession详解 Category选择 听筒扬声器切换
- IOS AudioSession
- iOS AudioSession
- OpenGL深入探索——Assimp加载模型并绑定VAO
- 【那些年遇到过的面试题】 rpm包
- Python中的按位运算符
- 1099. Build A Binary Search Tree
- opencv cvCaptureFromFile读取视频总返回NULL
- ios 音频处理开发(一)iOS AudioSession中的category配置问题
- UGUI与NGUI的区别与优缺点
- 3Sum Smaller
- Java定时任务3:Jcrontab的使用
- 水晶报表函数应用
- nextSibling
- c#winform自定义listview,解决listview闪缩问题,添加listview单元格单击事件。
- API 返回505
- java线程池和关闭线程池中的线程