功能:
1.可以设置固定地时间间隔播放循环
export default {audio: null,playInterval: 0, // 播放间隔时间(毫秒)time: null,init(src, options) {let that = this;that.playInterval = options.playInterval ?? 5000return new Promise((resolve, reject) => {try {if (that.audio === null) {that.audio = uni.createInnerAudioContext();that.audio.src = src || 'https://web-ext-storage.dcloud.net.cn/uni-app/ForElise.mp3';that.setProperty(options)// 可以在这里设置其他属性,如音量等console.log('auto+++++++++++++', that.audio)// utils.sleep(3000);resolve(that.audio)} else {resolve(that.audio)}} catch (e) {//TODO handle the exceptionreject()}})},setProperty(obj) {Object.assign(this.audio, obj)},play() {if (this.audio) {this.audio.play();if (this.playInterval && !this.audio.loop) {this.audio.onEnded(this.onEndedHandle())}}},onEndedHandle() {// 设置定时器,在指定的时间间隔后再次播放let that = this;that.time = setTimeout(() => {that.play()}, that.playInterval)console.log(that.playInterval, '设置定时器,在指定的时间间隔后再次播放')},pause() {console.log('暂停')if (this.audio) {this.audio.pause();if (this.playInterval && !this.audio.loop) {this.clearCustomPlayInterval()}}},clearCustomPlayInterval() {clearTimeout(this.time)console.log(this.time)this.audio.offEnded()},stop() {if (this.audio) {if (this.playInterval) {this.clearCustomPlayInterval()}this.audio.stop();this.audio.destroy(); // 销毁音频上下文this.audio = null;}},onPlay(callback) {if (this.audio) {this.audio.onPlay(callback);}},onPause(callback) {if (this.audio) {this.audio.onPause(callback);}},onStop(callback) {if (this.audio) {this.audio.onStop(callback);}},onError(callback) {if (this.audio) {this.audio.onError(callback)}}
};
使用
import musicPlayer from '@/common/musicPlayer';
musicPlayer.init('/static/mp4.mp3', {obeyMuteSwitch: false,loop: false,playInterval: 12000});