1. wx.seekBackgroundAudio(OBJECT)

    作用:控制音乐播放进度。

    注意: 该事件 会触发 wx.onBackgroundAudioPlay(CALLBACK) 事件 ,也就是相当于在调整进度后,后台会自动的调用wx.playBackgroundAudio(OBJECT)函数。

  2. 使用 audio组件 制作的播放器,即使点击"显示在微信顶部",音乐依然会停止,使用 wx.playBackgroundAudio 相关API制作的播放器才不会。

  3. wx.playBackgroundAudio(OBJECT),wx.pauseBackgroundAudio(),wx.seekBackgroundAudio(OBJECT),wx.stopBackgroundAudio()

    注意:上述四个操作都是 异步操作,都可以设置OBJECT参数,都有 success , fail , complete 回调 ,参照 wx.playBackgroundAudio(OBJECT) 的 OBJECT说明,OBJECT说明

  4. 后台播放音乐暂停后怎么从上次播放的地方继续播放?

    • 使用 seekBackgroundAudio

      官网并没有相关解释,初步思路是使用 playBackgroundAudio 播放音乐后,再调用 seekBackgroundAudio 将进度调整到上次停止的地方,但是由上面的第一条所描述,这样做的结果会导致onBackgroundAudioPlay 会被触发两次,所以我们可以直接调用seekBackgroundAudio调整播放进度即可(前提是之前有播放过歌曲,就是确保歌曲地址已经被设置,不然无效),随后音乐会自动播放.

    • 使用 playBackgroundAudio

      经测试调用playBackgroundAudio,并且传入的歌曲地址参数和上次相同时,歌曲会从上次暂停的时间位置继续播放

  5. wx.stopBackgroundAudio

    注意:经测试,再调用 wx.stopBackgroundAudio 函数之后,紧接着调用 wx.playBackgroundAudio ,在pc端模拟测试时正常,后台会停止播放音乐,然后再播放新的音乐,但是,在手机上却会打断紧接着调用的 wx.playBackgroundAudio 的播放(坑啊T-T),测试真机为phone5。

  6. 回调函数的触发时机。

    • wx.onBackgroundAudioPlay(CALLBACK) 监听音乐播放。

    • wx.onBackgroundAudioPause(CALLBACK) 监听音乐暂停。

    • wx.onBackgroundAudioStop(CALLBACK) 监听音乐停止。

    上述监听函数会在调用对应的wx.playBackgroundAudio(OBJECT),wx.pauseBackgroundAudio(),wx.stopBackgroundAudio()等函数时,会被立即触发,对应的操作可能并没有完成,比如调用 playBackgroundAudio播放音乐,只是给后台发送信息,要播放音乐,但是此时音乐并没有开始播放,可能还在加载等等,但是onBackgroundAudioPlay的回调函数会立即调用。

    而wx.playBackgroundAudio(OBJECT),wx.pauseBackgroundAudio(OBJECT),wx.seekBackgroundAudio(OBJECT),wx.stopBackgroundAudio(OBJECT)中OBJECT里面的回调函数会在如下对应条件触发:

    • 在歌曲加载完成之后,可以播放时触发

    • 在歌曲暂停之后,没有声音之后触发

    • 歌曲进度设置完成并且开始播放之后触发

    • 歌曲停止之后触发

    wx.onBackgroundAudioPlay(CALLBACK) , wx.onBackgroundAudioPause(CALLBACK) , wx.onBackgroundAudioStop(CALLBACK) 函数可以监听后台操作歌曲时,触发的事件,比如当小程序退出后,音乐暂停,也包括我们使用 wx.pauseBackgroundAudio 等函数时触发的事件。

    wx.onBackgroundAudioPause(OBJECT)里面的 暂停回调函数函数不会被触发,wx.pauseBackgroundAudio(OBJECT)里面的回调函数只是当次主动操作有效。后台自动暂停歌曲时并不会触发该回调函数,wx.playBackgroundAudio(OBJECT),wx.pauseBackgroundAudio(),wx.seekBackgroundAudio(OBJECT),wx.stopBackgroundAudio()都是一样的机制。

  7. 怎么获取歌曲播放时的 回调函数?

    微信小程序官方文档,playBackgroundAudio相关额API并没有提供此函数,但是提供了wx.getBackgroundAudioPlayerState函数用于获取歌曲播放时歌曲额进度信息,所以我们可以使用setInterval定时函数模拟这个事件。下面是我模拟的相关事件,

    var timer = setInterval(() => {
wx.getBackgroundAudioPlayerState({
success:function(res){
//调用需要更新的
//self._onUpdate(res);
}
});
}, 500);
  1. 最重要的一点,pc端的模拟器,上面描述的事件触的顺序会可能和手机端的触发顺序不一样(T-T,天坑,本来调试好好的,pc端app突然就抽风,炸了,有时候播放歌曲后 立刻就暂停,至今不知道是为什么,手机端却是正常的),所以还是多真机调试吧,都是泪。

微信小程序后台音乐播放注意事项的更多相关文章

  1. 微信小程序 写音乐播放器 slider组件 将value设置为0 真机测试滑块不能回到起点

    最近在用微信小程序写一个音频播放页面,做时间进度的时候用到了slider插件,但是在自然播放完成,或者上/下切换的时候,将slider的value属性值设为0,开发工具上滑块会回到起点,有效.但是真机 ...

  2. [小程序开发] 微信小程序audio音频播放组件+api_wx.createAudioContext

    引言: audio是微信小程序中的音频组件,可以轻松实现小程序中播放/停止音频等自定义动作. 附上微信小程序audio组件的相关属性说明:https://mp.weixin.qq.com/debug/ ...

  3. 如何使用微信小程序video组件播放视频

    相信很多人都有在手机上看视频的习惯,比较看视频更真实更形象.那么我们在微信小程序中如何观看视频呢?这就需要video组件的帮忙了.今天我们就给大家演示一下,如何用微信小程序组件video播放视频.我们 ...

  4. 微信小程序后台获取用户的opeid

    1.微信小程序后台获取登录用户的openid,首先微信小程序将code传给后台服务器 wx.login({ success: function (res) { var code = res.code ...

  5. Django微信小程序后台开发教程

    本文链接:https://blog.csdn.net/qq_43467898/article/details/83187698Django微信小程序后台开发教程1 申请小程序,创建hello worl ...

  6. thinkphp开发微信小程序后台流程

    thinkphp开发微信小程序后台流程,简单分享一下微信开发流程 1,注册微信小程序账号 2,注册好后,登陆微信小程序,下载微信小程序开发工具 3,用thinkphp开发企业后台,前台数据用json返 ...

  7. 微信小程序音频背景播放

    由于微信小程序官方将音频的样式固定死了,往往再工作中和UI设计师设计出来的样式不符,故一般都采用背景音频播放来实现自定义的UI样式的音频播放,即使用官网API提供的BackgroundAudioMan ...

  8. 微信小程序媒体音乐API更新小记,以及音乐外链制作方法

    假期开发微信小程序玩的时候发现音乐播放功能,但是教程中的旧版API已经不能成成功打开 官方文档写的很清楚,旧版接口不再维护,使用新版接口,换API后,又出现了新的问题,虽然没有报错信息,但是播放器闪退 ...

  9. 微信小程序背景音频播放分享功能

    如果正常背景音频播放的话,只能跳转到自己对应的微信小程序,无法分享朋友圈,我们需要设置分享朋友圈,需要调用一个API 音频背景播放 注意:背景播放在锁屏后播放只支持IOS端,安卓端虽然可以播放,但是锁 ...

随机推荐

  1. 会话控制之session和cookie(20161107)

    注:除了登录页面,每个页面,包括处理页面也要加,为了提高安全性 session尽量不用,因为很占内存 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML ...

  2. spdlog源码阅读 (2): sinks的创建和使用

    2. sink创建 2.1 还是rotating_file_sink 我们仍然以rotating_file_sink为例来说明在spdlog中sink的创建过程. 在spdlog-master/tes ...

  3. MongoDB一般安装

    MongoDB一般安装 1.首先到官网(http://www.mongodb.org/downloads )下载合适的安装包,目前的最新版本为2.6 安装包有zip和msi格式的,这里推荐下载zip格 ...

  4. Storm(2015.08.12笔记)

    2015.08.12Storm   一.Storm简介 Storm是Twitter开源的一个类似于Hadoop的实时数据处理框架.   Storm能实现高频数据和大规模数据的实时处理. 官网资料显示s ...

  5. iOS开发之数据存储之NSData

    1.概述 使用archiveRootObject:toFile:方法可以将一个对象直接写入到一个文件中,但有时候可能想将多个对象写入到同一个文件中,那么就要使用NSData来进行归档对象. NSDat ...

  6. 百度api的使用

    <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...

  7. placeholder的字体样式改变,滚动条的颜色改变,ios日期兼容

    placeholder:::-webkit-input-placeholder { color: rgba(153, 153, 153, 0.541);font-size:12px;}:-moz-pl ...

  8. C语言指针基础

    新手在C语言的学习过程中遇到的最头疼的知识点应该就是指针了,指针在C语言中有非常大的用处.下面我就带着问题来写下我对于指针的一些理解. 指针是什么?  指针本身是一个变量,它存储的是数据在内存中的地址 ...

  9. jmeter JDBC 连接数据库

    1.添加JDBC Connection Configuration 2.添加JDBC Request 3.添加查看结果树 4. 设置下列参数:Database URL:jdbc:mysql://hos ...

  10. 在IntelliJ IDEA中添加repository模板

    可以用于快速新建一个repository类,减少开发时间 在IntelliJ IDEA settings设置中(ctrl+alt+s)--Editor--File and Code Templates ...