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