uni-app中uni.createInnerAudioContext() sessionCategory值设置为soloAmbient时静音模式下仍有声音

发布于 1周前 作者 caililin 来自 Uni-App

uni-app中uni.createInnerAudioContext() sessionCategory值设置为soloAmbient时静音模式下仍有声音

信息类别 信息内容
产品分类 uniapp/App
PC开发环境 Windows
PC系统版本 win11
开发工具 HBuilderX
工具版本 4.24
手机系统 Android
手机版本 Android 14
手机厂商 华为
手机型号 meat40pro
页面类型 vue
Vue版本 vue3
打包方式 云端
项目创建 HBuilderX

操作步骤:

直接使用uni.createInnerAudioContext() 然后设置sessionCategory,使用.play()播放音频,静音模式下任然有声音

预期结果:

无声

实际结果:

有声

bug描述:

uni.createInnerAudioContext() sessionCategory值设置为soloAmbient,静音模式下任然有声音


1 回复

在uni-app中,使用uni.createInnerAudioContext()可以创建一个内部音频上下文,用于控制音频的播放。当你将sessionCategory值设置为soloAmbient时,音频在静音模式下仍然可以播放,这是因为soloAmbient类别允许音频在设备的“勿扰模式”或静音模式下继续播放。这在某些应用场景下是非常有用的,比如闹钟或提醒功能。

下面是一个使用uni.createInnerAudioContext()并设置sessionCategorysoloAmbient的示例代码:

// 创建一个内部音频上下文
const innerAudioContext = uni.createInnerAudioContext();

// 设置音频的src(源文件地址)
innerAudioContext.src = 'https://example.com/audio/your-audio-file.mp3';

// 设置sessionCategory为soloAmbient,使音频在静音模式下也能播放
// 注意:此设置在某些平台上可能不受支持,具体请参考对应平台的文档
#ifdef MP-WEIXIN // 微信小程序平台
innerAudioContext.sessionCategory = 'soloAmbient';
#endif

// 播放音频
innerAudioContext.play();

// 监听音频的自然播放结束事件
innerAudioContext.onEnded(() => {
    console.log('音频播放结束');
});

// 监听音频的错误事件
innerAudioContext.onError((err) => {
    console.error('音频播放出错:', err);
});

// 如果需要暂停音频,可以调用
// innerAudioContext.pause();

// 如果需要停止音频,并重置播放位置到开头,可以调用
// innerAudioContext.stop();

// 如果需要调整音量,可以设置
// innerAudioContext.volume = 0.5; // 音量范围从0到1

注意

  1. sessionCategory的设置在不同平台上可能有不同的支持和限制。在上面的代码中,我使用了条件编译#ifdef MP-WEIXIN来针对微信小程序平台设置sessionCategory。对于其他平台(如H5、App等),需要根据平台的文档来确定是否支持以及如何设置。
  2. 确保音频文件的URL是有效的,且服务器支持CORS(跨源资源共享),否则音频可能无法播放。
  3. 在实际开发中,建议添加更多的错误处理和用户反馈机制,以提高应用的健壮性和用户体验。

这个示例展示了如何在uni-app中使用uni.createInnerAudioContext()并设置sessionCategorysoloAmbient,以便在静音模式下也能播放音频。根据具体需求,你可以进一步扩展和调整这个示例。

回到顶部