AVFoundation - AVAudioSession.h (Interface)

1.创建session

  • (AVAudioSession*)sharedInstance;

2.设置session的激活状态

因为激活一个session是同步操作,会阻塞线程,因此,我们如果在一个线程执行一个很久的阻塞操作是有问题的。不建议这么做。
而且,注意,当这个session运行或者暂停在I/O时候,去激活这个session是会抛出一些异常的。(I/O 如 Audio Queue、Player、Recorders、Convertters、remote I/O等)

  • (BOOL)setActive:(BOOL)active error:(NSError **)outError;
  • (BOOL)setActive:(BOOL)active withOptions:(AVAudioSessionSetActiveOptions)options error:(NSError **)outError NS_AVAILABLE_IOS(6_0);

3.得到当前设备可用的类别,某些协议可能在特定的设备上是失效的(iOS9.0以上可用,坑爹)

  • @property(readonly) NSArray<NSString *> *availableCategories NS_AVAILABLE_IOS(9_0);

4.设置session的类别

  • (BOOL)setCategory:(NSString *)category error:(NSError **)outError;

5.设置session的列别和选项

  • (BOOL)setCategory:(NSString *)category withOptions:(AVAudioSessionCategoryOptions)options error:(NSError **)outError NS_AVAILABLE_IOS(6_0);

6.获取session的类别

  • @property(readonly) NSString *category;

7.返回设备用户是否去授权录音(8.0 坑~)

  • (AVAudioSessionRecordPermission)recordPermission NS_AVAILABLE_IOS(8_0) __TVOS_PROHIBITED;

8.检查是否授予录音权限的block

typedef void (^PermissionBlock)(BOOL granted);

  • (void)requestRecordPermission:(PermissionBlock)response NS_AVAILABLE_IOS(7_0) __TVOS_PROHIBITED;

9.获取session的AVAudioSessionCategoryOptions

  • @property(readonly) AVAudioSessionCategoryOptions categoryOptions NS_AVAILABLE_IOS(6_0);

10.设置session的模式和获取当前session模式

  • (BOOL)setMode:(NSString *)mode error:(NSError *)outError NS_AVAILABLE_IOS(5_0); / set session mode */
  • @property(readonly) NSString mode NS_AVAILABLE_IOS(5_0); / get session mode */

11.重写output音频端口

  • (BOOL)overrideOutputAudioPort:(AVAudioSessionPortOverride)portOverride error:(NSError **)outError NS_AVAILABLE_IOS(6_0);

12.判断其他App是否播放音频

  • @property(readonly, getter=isOtherAudioPlaying) BOOL otherAudioPlaying NS_AVAILABLE_IOS(6_0);

Will be true when another application is playing audio.
Note: As of iOS 8.0, Apple recommends that most applications use secondaryAudioShouldBeSilencedHint instead of this property.
The otherAudioPlaying property will be true if any other audio (including audio from an app using AVAudioSessionCategoryAmbient)
is playing, whereas the secondaryAudioShouldBeSilencedHint property is more restrictive in its consideration of whether
primary audio from another application is playing.

  • @property(readonly) BOOL secondaryAudioShouldBeSilencedHint NS_AVAILABLE_IOS(8_0); (8.0 坑)

13.获取当前route

  • @property(readonly) AVAudioSessionRouteDescription *currentRoute NS_AVAILABLE_IOS(6_0);

14.选择最佳的input 端口 和获取当前input 端口信息

  • (BOOL)setPreferredInput:(nullable AVAudioSessionPortDescription *)inPort error:(NSError **)outError NS_AVAILABLE_IOS(7_0);
  • @property(readonly, nullable) AVAudioSessionPortDescription * preferredInput NS_AVAILABLE_IOS(7_0);
posted @ 2016-06-01 18:45  lvable  阅读(2003)  评论(0编辑  收藏  举报