as

Settings
Sign out
Notifications
Alexa
亚马逊应用商店
AWS
文档
Support
Contact Us
My Cases
新手入门
设计和开发
应用发布
参考
支持

音频焦点会话

音频焦点会话

音频焦点会话允许进行音频焦点管理,例如请求音频焦点和释放音频焦点。播放流使用音频焦点会话来请求音频焦点或释放音频焦点。播放流构建器可以使用setAudioFocusSessionId来指定要使用的音频焦点会话。

所需服务

API需要声明系统音频服务:

[wants]
[[wants.service]]
id = "com.amazon.audio.control"

使用的类型

请参阅音频核心类型

  • AudioFocusAttributes
  • AudioFocusStatus
  • AudioFocusChange

方法

requestAudioFocusAsync(attr)

描述

在使用所选音频用法类型的会话中请求音频聚焦。

返回值

返回解析为AudioFocusStatus类型的Promise。

参数

参数名 类型 是否必需 描述
attr AudioFocusAttributes 确定如何处理音频焦点。如果未指定新属性,则创建一个。

代码示例

/*
请求音频焦点,解析Promise后返回AudioFocusStatus类型

假设会话是一个AudioFocusSession对象
*/
const attr: AudioFocusAttributes = {
    usage: audioSource.usage
};
const status = session.requestAudioFocusAsync(attr)
.then((status) => {return status;}).catch((error) => console.log(error));

releaseAudioFocusAsync()

描述

在会话中释放音频焦点。

返回值

返回解析为AudioFocusStatus类型的Promise。

代码示例

/*
释放音频焦点,解析Promise后返回AudioFocusStatus类型

假设会话是一个AudioFocusSession对象
*/

const status = session.releaseAudioFocusAsync()
.then((status) => {return status;}).catch((error) => console.log(error));

registerAudioFocusListenerAsync(callback)

描述

注册一个回调函数,一旦检测到音频焦点事件即会执行该函数。一次只能注册一个回调函数。

返回值

返回解析为AudioFocusStatus类型的Promise。

参数

参数名 类型 是否必需 描述
callback 函数 回调函数,该函数会接收事件并根据该事件输出内容

代码示例

/*
创建一个函数并在音频焦点侦听器中进行注册,
以便在音频焦点状态发生变化时执行该函数;当Promise解析后,将返回的AudioFocusStatus类型
存储在status中

假设会话是一个AudioFocusSession对象

*/

const callbackFunction = (event: any) => {
    switch (event.focusChange) {
        case AudioFocusChange.GRANTED:
            // 当授予音频焦点时触发
            break;

        case AudioFocusChange.RELEASED:
            // 当释放音频焦点时触发
            break;

        case AudioFocusChange.DUCKED:
            // 当应该调低音频(降低音量)时触发
            break;

        case AudioFocusChange.PAUSED:
            // 当应该暂停音频时触发
            break;

        case AudioFocusChange.STOPPED:
            // 当应该停止音频时触发
            break;

        case AudioFocusChange.MUTED:
            // 当应该将音频静音时触发(目前没有产品支持此功能)
            break;
    }
};
const status = session.registerAudioFocusListenerAsync(callbackFunction)
.then((status) => {return status;}).catch((error) => console.log(error));

unregisterAudioFocusListenerAsync()

描述

取消注册任何当前为音频焦点注册的回调函数。

返回值

返回解析为AudioFocusStatus类型的Promise。

代码示例

/*
取消注册回调函数并将返回的AudioFocusStatus类型
存储在status中
*/

const status = session.unregisterAudioFocusListenerAsync()
.then((status) => {return status;}).catch((error) => console.log(error));

getAudioSessionId()

描述

获取成员变量sessionId的值,该变量表示给定焦点会话的会话ID。

返回值

返回表示会话ID的数字。

代码示例

/*
返回会话ID并将其存储在sessionId中
*/

const session = new AudioFocusSession(1);
const sessionId = session.getAudioSessionId(); // 值应为1

getUsage()

描述

获取音频焦点用法值

返回值

返回表示音频焦点用法的数字。

代码示例

/*
请求音频焦点,解析Promise后返回AudioFocusStatus类型

假设会话是一个AudioFocusSession对象
*/
const attr: AudioFocusAttributes = {
    usage: audioSource.usage
};
const status = session.requestAudioFocusAsync(attr)
.then((status) => {return status;}).catch((error) => console.log(error));

let usage = session.getUsage(); // 必须等于请求焦点时使用的用法。

Last updated: 2025年10月2日