KSYAVAudioSession.h 3.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. //
  2. // KSYAVAudioSession.h
  3. // KSYStreamer
  4. //
  5. //
  6. // Created by pengbin on 10/15/15.
  7. // Copyright © 2015 ksyun. All rights reserved.
  8. //
  9. #import <Foundation/Foundation.h>
  10. #import <AVFoundation/AVFoundation.h>
  11. #import "KSYTypeDef.h"
  12. /** iOS的AVAudioSession 属性配置工具类
  13. 1. 主要是保证推流时有采集和播放音频的权限 AVAudioSessionCategoryPlayAndRecord
  14. 2. 将一些常用的AVAudioSession的配置项提取为属性, 方便设置
  15. 3. 提供查询和修改当前音频采集设备相关的工具函数 比如查询是否有耳机
  16. */
  17. @interface KSYAVAudioSession : NSObject
  18. /**
  19. @abstract 是否打断其他后台的音乐播放 (默认为NO)
  20. @discussion 也可以理解为是否允许在其他后台音乐播放的同时进行采集
  21. @discussion YES:开始采集时,会打断其他的后台播放音乐,也会被其他音乐打断(采集过程中,启动其他音乐播放,音频采集被中止)
  22. @discussion NO: 可以与其他后台播放共存,相互之间不会被打断
  23. @discussion 参考 AVAudioSessionCategoryOptionMixWithOthers
  24. */
  25. @property (nonatomic, assign) BOOL bInterruptOtherAudio;
  26. /**
  27. @abstract 启动采集后,是否从扬声器播放声音 (默认为YES)
  28. @discussion 启动声音采集后,iOS系统的行为是默认从听筒播放声音的
  29. @discussion 将该属性设为YES, 则改为默认从扬声器播放
  30. @discussion 参考 AVAudioSessionCategoryOptionDefaultToSpeaker
  31. */
  32. @property (nonatomic, assign) BOOL bDefaultToSpeaker;
  33. /**
  34. @abstract 是否启用蓝牙设备 (默认为YES)
  35. @discussion 参考 AVAudioSessionCategoryOptionAllowBluetooth
  36. */
  37. @property (nonatomic, assign) BOOL bAllowBluetooth;
  38. /**
  39. @abstract 设置声音采集需要的AUAudioSession的参数
  40. @discussion 按照属性的设置值刷新AUAudioSession的配置
  41. @discussion 参考 AUAudioSession
  42. */
  43. - (void) setAVAudioSessionOption;
  44. /**
  45. @abstract 本SDK使用的AVAudioSession的类别 (默认为AVAudioSessionCategoryPlayAndRecord)
  46. @discussion 用于指定推流过程中需要采集和播放音频的权限
  47. @warning 如无必要请勿修改
  48. */
  49. @property (nonatomic, assign) NSString * AVAudioSessionCategory;
  50. /**
  51. @abstract 检查当前AVAudioSession的类别是否与设置的AVAudioSessionCategory 一致
  52. @discussion AVAudioSession为公有的单例, APP中的其他SDK也可以修改
  53. @discussion 因此可能出现直播时,改为无录音权限的类别的情况, 通过此方法进行检查
  54. */
  55. - (BOOL) checkCategory;
  56. #pragma mark - audio input ports
  57. /**
  58. @abstract 是否有蓝牙麦克风可用
  59. @return 是/否有蓝牙麦克风可用
  60. */
  61. + (BOOL)isBluetoothInputAvaible;
  62. /**
  63. @abstract 选择是否使用蓝牙麦克风
  64. @param onOrOff : YES 使用蓝牙麦克风 NO
  65. @return 是/否有蓝牙麦克风可用
  66. */
  67. + (BOOL)switchBluetoothInput:(BOOL)onOrOff;
  68. /**
  69. @abstract 是否有耳机麦克风可用
  70. @return 是/否有耳机麦克风
  71. */
  72. + (BOOL)isHeadsetInputAvaible;
  73. /**
  74. @abstract 查询当前是否有耳机(包括蓝牙耳机)
  75. */
  76. + (BOOL) isHeadsetPluggedIn;
  77. /**
  78. @abstract 当前使用的音频采集设备
  79. @discussion 当设置新值时, 如果修改成功, 重新查询为新值, 修改不成功值不变
  80. @discussion 参考 KSYMicType
  81. */
  82. @property KSYMicType currentMicType;
  83. @end