iOS精品文章【IOS官方文档翻译系列第一弹】Audio Session Programming GuideiOS Developer

【IOS】Audio Session Programming G

2017-05-24  本文已影响116人  轻微_7890

简介

IOS 通过 <em>音频会话(Audio Session)</em> 和 <code>AVAudioSession</code> 中的 <strong>API</strong> 来实现对于不同 App 之间、同一 App 内及硬件层面的各种音频行为。

kk说:为了语句的通顺,Audio一词在本系列文章中可能会被翻译为音频或声音,特此说明。

图片来自官方文档

<code>AVAudioSession</code> 中的 API 可以处理类似这样的问题:

IOS 设备中的音频使用场景十分复杂:用户随时可能插拔耳机、接打电话,系统的闹钟也可能在使用其他音频的过程中响起。开发者只需要编写少量调用音频会话 API 的代码,就可以配置音频会话的属性,从而优雅的对系统请求作出回应。


概览

使用 <code>AVAudioSession</code> 可以:

一次音频会话中包含了一系列的音频行为

音频会话是 App 和 IOS 之间的媒介,用来为 App 配置相关的音频属性和行为。在加载过程中,App 会自动创建一个音频会话的单例。

用类别(categories)来描述音频 role

<i>音频会话类别</i>是用来描述音频行为的主要机制。通过设置类别可以表明:App是否使用音频输入输出源,在播放音频时是否支持其他背景音乐的播放,以及一些其他的属性。开发者设计的音频行为应当符合用户的期望。
开发者可以通过七个类别和一些override and modifier switches,结合 App 的身份来定制音频 role。不同的类别分别支持后台播放(playback)、录音和后台录音等功能。当系统了解 App 的音频 role 后,会为其提供合适的硬件资源,令其免于受到设备上的其他音频事件的干扰。

kk说:想不出合适的词来表达 role 的含义,用“身份”或“角色”都显得有些模糊,因此不做翻译

音频类别的套路(Modes Customize Categories)

用户对于特定种类的 App 中(声音的)处理方式会有特定的期待。某一类别的行为会表现为一种套路。举例来说,系统可能会为使用默认模式和录像模式的 App 选择不同的麦克风作为音频输入,或者为用于录像场景的 App 启用麦克风信号处理。

kk说:这一段翻译不好,原文如下:
Users expect certain behaviors from certain categories of apps. Modes specialize the behavior of a given category. For example, when an app uses the Video Recording mode, the system may choose a different built-in microphone than it would if it was using the default mode. The system may also engage microphone signal processing that is tuned for video recording use cases.

基于通知(Notifications)的中断处理机制(interruption handling)

<i>音频中断(audio interruption)</i>指的是音频会话被关闭的行为,会导致 App 中的音频立即停止。当一个未被系统归类为可以和自己混合的其他音频会话启用时,就会中断当前的 App。当中断发生时,系统会向 App 发出一个“你被中断”信号,App可以在接到这个信号的时候完成保存状态、更新UI等操作。
开发者可以通过向 <code>AVAudioSession </code> 中的 <code>AVAudioSessionInterruptionNotification </code> 注册来处理中断。开发者应该重写 <code>beginInterruption</code> 和 <code>endInterruption</code> 方法,来减小对用户造成的中断,并提供最优雅的中断恢复方案。

基于通知的音频源切换处理

用户在插拔外接音频设备或插拔耳机的时候,会期待系统能够按自己的想法进行输入输出源的切换。IOS Human Interface Guidelines 中关于声音的章节描述了这些用户期待,并提供了一些关于如何满足这个期待的指导。通过向 <code>AVAudioSessionRouteChangeNotification </code> 中注册来处理音频源的切换。

对类别的特性进行调整

开发者可以用不同的方式来对音频会话类别进行调整,来改变类别的属性,包括:

前置知识

在学习这些内容前,开发者需要对 Cocoa Touch 开发有一定的了解(App Programming Guide for IOS 中关于Core Audio和Core Audio Overview中的章节)。同时,由于音频会话通常会基于终端用户实际的使用场景,因此也需要对IOS设备,和 IOS Human Interface Guidelines有所了解。

其他

参见以下资料:

kk说:以上内容翻译自苹果官方文档,仅供学习,请勿用于商业用途,侵删。转载注明出处。

上一篇下一篇

猜你喜欢

热点阅读