StreamUsage表示播放音频流类型的枚举。isStreamActive获取指定音频流是否为活跃状态。getCurrentAudioRendererInfoArraySync获取当前音频渲染器的信息。
开发者可通过isStreamActive接口获取指定音频流(如音乐、视频等)是否为活跃状态,活跃即正在播放。当需要获取是否有任意音频流在播放时,可通过getCurrentAudioRendererInfoArraySync接口获取音频流列表,并通过isStreamActive判断音频流是否活跃,从而判断当前是否有音频正在播放。
import { audio } from '@kit.AudioKit';
@Entry
@Component
export struct CheckRendererDemo {
promptAction = this.getUIContext().getPromptAction();
build() {
Column({ space: 10 }) {
Button('检查是否有音频正在播放')
.width('100%')
.onClick(async () => {
this.promptAction.showToast({
message: checkIsRenderer() ? '有音频正在播放' : '没有音频正在播放'
});
});
}
.padding(20)
.justifyContent(FlexAlign.Center)
.width('100%')
.height('100%');
}
}
function checkIsRenderer(): boolean {
let isRenderer: boolean = false;
let audioManager = audio.getAudioManager();
let audioStreamManager = audioManager.getStreamManager();
let array: audio.AudioRendererChangeInfoArray = audioStreamManager.getCurrentAudioRendererInfoArraySync(); // 查询音频设备
for (let i = 0; i < array.length; i++) {
let audioRendererInfo = array[i].rendererInfo;
console.info(`RendererChange on is called for ${i}`, JSON.stringify(audioRendererInfo));
try {
let isStreamActive = audioStreamManager.isStreamActive(audioRendererInfo.usage); // 判断设备状态是否活跃,是否在播放
console.info(`RendererChange IsStreamActive: ${isStreamActive}.`);
if (isStreamActive) {
isRenderer = true;
break;
}
} catch (err) {
console.error(`RendererChange. code: ${err.code}, message: ${err.message}`);
}
}
return isRenderer;
}