kaiyun.ccm 音频属性 API

发布于:25-07-22 播放次数:

音频播放器具备设定音频系统对特定来源进行导向、音量及焦点等决策属性的功能。用户可将这些属性应用于音频播放过程,如流媒体服务播放的音乐或新邮件提醒等,随后将这些音频源的属性信息传递至框架。在此过程中,音频系统将依据这些属性进行混音处理,并同步更新系统状态以通知应用。

请注意,此功能支持将属性信息附加至音频录制之中,无论是从视频录制中提取的音频内容;然而,这一特定功能并未包含在公共API的提供范围内。

在 Android 4.4 及其之前的版本里,框架主要依赖音频流类型进行混音的判断。然而,这种基于流类型的决策方式存在一定的局限性,导致在多个应用和设备上难以实现高质量的输出效果。在移动设备上,某些应用如Google地图会依据STREAM_MUSIC流类型来播报行车方向;然而,当移动设备切换至投影仪模式,如Android Auto时,这些应用便无法将行车方向信息与其他媒体流合并进行播放。

音频系统可通过音频属性API获取特定音频源的详尽信息,涵盖其用途(为何播放)、内容类别(播放内容性质)、标识(播放方式特点)以及情境(Android 9系统中的新特性)。

AudioAttributes {
    mUsage
    mContentType
    mSource
    mFlags
mTags、mFormattedTags以及mBundle,它们代表的是键值对。
}

在动态处理方面,必须对电影、音乐以及语音内容进行明确区分。同时,数据本身携带的信息也可能极为关键,比如音量大小和峰值采样值等细节。

使用属性

使用说明明确了相关流类型在特定情境下的应用,同时阐述了发出特定声音的缘由及该声音使用规范。相较于流类型说明kaiyun全站网页版登录,使用说明内容更为详尽,有助于平台或导向策略在音量调整和导向决策方面进行优化。

为任何实例提供以下用法值之一:

音频属性的用途值不可同时使用。具体示例,可参考相关定义;若遇特殊情况,请查阅AudioAttributes.Builder的相关说明。

内容类型

内容类型明确了声音的属性,同时确定了内容的常规分类开yun体育app官网网页登录入口,例如影片、语音或提示音以及铃声。音频框架依据内容类型的信息,有选择性地对音频处理模块进行配置。即便内容类型的选择并非强制,一旦内容类型得以确定,便需在信息中纳入相应类型标识,比如在涉及电影流媒体服务时采用标识为 CONTENT_TYPE_MOVIE,而在音乐播放软件中则应用 CONTENT_TYPE_MUSIC。

为任何实例提供以下内容类型值之一:

音频内容的属性类型是相互排斥的,若需了解具体的内容类型信息,请查阅音频属性的相关API。

上下文

在Android系统中,每一段声音均能被对应的应用程序及其产生声音的缘由所识别;设备则会依据这些信息来决定声音的呈现方式。在Android 8.x版本及以下,应用程序仍可通过旧有的流类型(例如AudioSystem.STREAM_MUSIC)或AudioAttributes来报告声音产生的具体原因。在 Android 9版本中,AudioAttributes的usage属性在硬件抽象层(HAL)层面被转换成相应的上下文信息。

HAL 音频上下文AudioAttributes 用法

音乐

MEDIA

VOICE_COMMAND

USAGE_ASSISTANT

NAVIGATION

禁止提供导航辅助指引

致电

VOICE_COMMUNICATION

RINGTONE

NOTIFICATION_RINGTONE

通知

通知

ALARM

ALARM

SYSTEM_SOUND

ASSISTANCE_SONIFICATION

未知

未知

您可以根据具体情况选择以下任一 CONTEXT_NUMBER 值:

标志

该标志将明确指示音频播放过程中应如何施加特定效果。以下是一个或多个可能适用的标志示例:

音频属性标识并非独占性质云开·全站体育app登录,可进行混合使用。若需深入掌握相关标识的详细信息,请查阅音频属性应用编程接口。

示例

在示例中,通过AudioAttributes.Builder这一构建器,我们为即将创建的AudioTrack实例指定了所需的AudioAttributes。

创建一个名为myTrack的AudioTrack对象,通过调用new AudioTrack构造函数实现。
  new AudioAttributes.Builder()
设置音频属性的使用场景为媒体用途。
设置内容类型为音乐音频属性。
    .build(),
调用函数时,指定了格式为myFormat,缓冲区大小为myBuffSize,音频轨道模式为AudioTrack.MODE_STREAM,以及会话对象为mySession。

兼容性

在为Android 5.0及以上版本进行应用开发或更新时,开发者应当采用音频相关属性。然而,这并非强制要求;应用可以仅限于处理旧版流类型,或者作为常规媒体播放器,对属性一无所知,即对播放内容缺乏了解。

在这种情况下,框架能够自动将旧版本的音频流类型转换成音频属性,以此确保对旧设备和Android系统的向后兼容性。然而,框架并不会对不同的设备、制造商或Android版本施加强制要求,亦不对其具备这种映射功能作出保证。

兼容性映射:

适用于Android 5.0或更新的系统,以及Android 4.4及更早的版本。

CONTENT_TYPE_SPEECH

USAGE_VOICE_COMMUNICATION

STREAM_VOICE_CALL

CONTENT_TYPE_SONIFICATION

USAGE_ASSISTANCE_SONIFICATION

STREAM_SYSTEM

CONTENT_TYPE_SONIFICATION

USAGE_NOTIFICATION_RINGTONE

STREAM_RING

CONTENT_TYPE_MUSIC

USAGE_UNKNOWN

USAGE_MEDIA

USAGE_GAME

使用辅助功能,确保便捷获取。

使用辅助导航指引

STREAM_MUSIC

CONTENT_TYPE_SONIFICATION

USAGE_ALARM

STREAM_ALARM

CONTENT_TYPE_SONIFICATION

USAGE_NOTIFICATION

使用通知通信请求

使用即时通讯功能,请勿擅自修改相关通知内容。

使用通知通信延迟

USAGE_NOTIFICATION_EVENT

STREAM_NOTIFICATION

CONTENT_TYPE_SPEECH

(@hide) STREAM_BLUETOOTH_SCO

FLAG_AUDIBILITY_ENFORCED

隐藏(@hide) 流程系统强制执行

CONTENT_TYPE_SONIFICATION

使用语音通信信号进行操作

(@hide) STREAM_DTMF

请注意,@hide 流仅在框架内部被采用,并非公共API的组成部分;同时,该流类型已被淘汰。

Android 9 弃用了以下用于汽车的流类型:

有关详情,请参阅汽车音频。