小程序背景音乐及音频播放demo(copy直接使用~)

1.实现效果

 2.实现原理

1、wx.getBackgroundAudioManager :
获取全局唯一的背景音频管理器。 小程序切入后台,如果音频处于播放状态,可以继续播放。但是后台状态不能通过调用API操纵音频的播放状态。

从微信客户端6.7.2版本开始,若需要在小程序切后台后继续播放音频,需要在 app.json 中配置 requiredBackgroundModes 属性。开发版和体验版上可以直接生效,正式版还需通过审核。
2、onUnload和onHide事件中暂停音乐的播放。
3、onShow中调用播放事件
4、在播放结束的事件中,再次播放,以达到循环播放的效果。

 3.实现代码 

<image src="{{checked?'../img/stop.png':'../img/play.png'}}" class="music {{!checked && 'circle'}}" catchtap="checkMusic"></image>
<view catchtap="toNext" class="btn"> 去下一个页面</view>
page {
  background-color: aliceblue;
}
.music {
  width: 86rpx;
  height: 86rpx;
  position: absolute;
  top: 108rpx;
  right: 10rpx;
  z-index: 99;
}
.circle {
  animation: cirlce 4s linear infinite;
}
@keyframes cirlce {
  0% {
    transform: rotate(0deg);
  }
  100% {
    transform: rotate(359deg);
  }
}
.btn {
  margin: 550rpx auto 0;
  width: 625rpx;
  height: 80rpx;
  background: linear-gradient(90deg, #dd8449 0%, #e28e74 52%, #dbb290 100%);
  border-radius: 6rpx;
  font-size: 30rpx;
  color: #fff;
  line-height: 80rpx;
  text-align: center;
  position: relative;
  overflow: hidden;
}
.btn:after {
  content: "";
  background: #999;
  position: absolute;
  width: 750rpx;
  height: 750rpx;
  left: calc(50% - 375rpx);
  top: calc(50% - 375rpx);
  opacity: 0;
  margin: auto;
  border-radius: 50%;
  transform: scale(1);
  transition: all 0.4s ease-in-out;
}

Page({

  data: {
    checked: false,
  },

  onShow: function () {
    this.player(wx.getBackgroundAudioManager())
  },
  checkMusic() {
    console.log(11)
    this.setData({
      checked: !this.data.checked
    })
    if (this.data.checked) {
      wx.getBackgroundAudioManager().pause();
    } else {
      this.player(wx.getBackgroundAudioManager())
    }
  },
  player(e) {
    e.title = '下次一定的音乐'
    e.src = "http://music.163.com/song/media/outer/url?id=36587407.mp3"
    //音乐播放结束后继续播放此音乐,循环不停的播放
    e.onEnded(() => {
      this.player(wx.getBackgroundAudioManager())
    })
  },

  // 页面卸载时候暂停播放(不加页面将一直播放)
  onUnload: function () {
    wx.getBackgroundAudioManager().stop();
  },
  // 小程序隐藏时候暂停播放(不加页面将一直播放)
  onHide() {
    wx.getBackgroundAudioManager().stop();
  },
  toNext() {
    wx.navigateTo({
      url: '/pages/jsCase/draw/index',
    })
  }
})

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

下次一定L_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值