uni-app Android平台 plus.audio.createPlayer 在暂停情况下调用 setStyles({volume:0}) 会自动播放音乐

uni-app Android平台 plus.audio.createPlayer 在暂停情况下调用 setStyles({volume:0}) 会自动播放音乐

开发环境 版本号 项目创建方式
Windows HBuilderX
3.4.8
Android Android 12
华为
EML-AL00
nvue vue2

产品分类:uniapp/App

PC开发环境操作系统:Windows

手机系统:Android

手机厂商:华为

手机机型:EML-AL00

页面类型:nvue

打包方式:云端

示例代码:

var audio = plus.audio.createPlayer(url);
audio.play();

setTimeout(() => {
  audio.setStyles({
    volume: 0,
  })
  audio.pause();
}, 500);

setTimeout(() => {
  audio.setStyles({
    volume: 1,
  })
}, 1500);

操作步骤:

暂停后,再控制声音

预期结果:

暂停后,控制音量大小,应该还是暂停状态

实际结果:

暂停后,控制声音大小,会自动播放,且不会调用onPlay方法

bug描述:

Android,plus.audio.createPlayer,暂停情况下,调用.setStyles({volume:0});会自动播放音乐


更多关于uni-app Android平台 plus.audio.createPlayer 在暂停情况下调用 setStyles({volume:0}) 会自动播放音乐的实战教程也可以访问 https://www.itying.com/category-93-b0.html

5 回复

set的时候,再暂停

更多关于uni-app Android平台 plus.audio.createPlayer 在暂停情况下调用 setStyles({volume:0}) 会自动播放音乐的实战教程也可以访问 https://www.itying.com/category-93-b0.html


等官方修复吧

请上传一个能重现问题的测试工程

用3.4.9试一下。

在 uni-app 的 Android 平台上,使用 plus.audio.createPlayer 创建音频播放器时,如果在暂停状态下调用 setStyles({volume: 0}),可能会导致音频自动播放。这是因为在某些 Android 设备或系统版本上,设置音量可能会触发播放器的播放状态。

解决方案

为了避免这种情况,你可以在设置音量之前,先检查播放器的状态,确保它不会在设置音量时自动播放。以下是一个示例代码:

const player = plus.audio.createPlayer('path/to/audio.mp3');

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

// 暂停音频
player.pause();

// 检查播放器状态
if (player.isPaused()) {
    // 设置音量为0
    player.setStyles({ volume: 0 });
}

其他注意事项

  1. 兼容性问题:不同的 Android 设备和系统版本可能会有不同的行为,建议在多个设备上进行测试。
  2. 事件监听:你可以监听播放器的状态变化事件,以便在状态变化时执行相应的操作。
player.addEventListener('statechange', function(state) {
    console.log('Player state changed to: ' + state);
    if (state === 'paused') {
        player.setStyles({ volume: 0 });
    }
});
  1. 音量渐变:如果你需要实现音量的渐变效果,可以考虑使用 setInterval 逐步调整音量,而不是一次性设置为0。
let volume = 1;
const interval = setInterval(() => {
    if (volume > 0) {
        volume -= 0.1;
        player.setStyles({ volume: volume });
    } else {
        clearInterval(interval);
    }
}, 100);
回到顶部