iOS音频会话AVAudioSession

iOS音频会话AVAudioSession

AVAudioSession表示的是:

An intermediary object that communicates to the system how you intend to use audio in your app
扮演一个中间人角色,告知系统,你的app中是如何使用音频的

所有的iOS和tvOS应用程序都有音频会话,并且有如下的预配置:

  • 激活了音频播放,但音频录制未被激活(在tvOS中不支持音频录制)
  • 用户切换响铃/静音开关到静音模式时,应用程序播放的所有音频都会消失
  • 设备锁屏时,音频会处于静音状态
  • 当应用程序播放音频时,所有后台播放的其它音频都会处于静音状态

如果要改变默认的行为,可以配置app的音频会话分类

大概有7种音频会话分类,参考Audio Session Categories

  • AVAudioSessionCategoryAmbient - 此分类表示应用程序播放声音不是主要的,即你的应用可以在声音关闭的情况下成功使用
  • AVAudioSessionCategorySoloAmbient-默认的音频会话分类
  • AVAudioSessionCategoryPlayback-用于播放录制的music或者其它声音
  • AVAudioSessionCategoryRecord-录音机,音频捕捉
  • AVAudioSessionCategoryPlayAndRecord-录制和播放音频,例如VoIP 应用程序
  • AVAudioSessionCategoryMultiRoute - 用于将不同音频数据流同时路由到不同的输出设备的类别
  • AVAudioSessionCategoryAudioProcessing-离线会话和处理,在iOS10中已废弃

通常使用最多的是AVAudioSessionCategoryPlayback,指定这个分类后,可以在用户切换响铃/静音开关到静音模式时,可以继续播放音频(iOS only)。使用这个分类:

your app can also play background audio if you’re using the Audio, AirPlay, and Picture in Picture background mode. For more information, see Enabling Background Audio.

使用AVAudioSession来配置应用程序的音频会话,AVAudioSession是一个单例用于设置音频会话分类和执行其它的配置。你可以在应用程序的整个生命周期中与音频会话进行交互,但在应用程序启动时执行此配置通常很有用,如以下示例所示:

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey : Any]?) -> Bool {
    let audioSession = AVAudioSession.sharedInstance()
    do {
        try audioSession.setCategory(AVAudioSessionCategoryPlayback)
    } catch {
        print("Setting category to AVAudioSessionCategoryPlayback failed.")
    }
    // Other project setup
    return true
}

这个分类在你使用 setActive(_:)或者setActive(_:with:) 方法,激活音频会话时,此分类会被使用

注意:

You can activate the audio session at any time after setting its category, but it’s generally preferable to defer this call until your app begins audio playback. Deferring the call ensures that you won’t prematurely interrupt any other background audio that may be in progress.
在设置分类后你可以在任何时间激活这个音频会话,但是通常最好延迟,直到应用程序开始音频播放。推迟调用确保你不会过早中断可能正在进行的任何其他background音频

猜你喜欢

转载自blog.csdn.net/u014084081/article/details/79960163