技术课 | 小程序音频不知道怎么开发?10分钟看完这节课就懂了

想安静听歌,即使退出小程序也不会被中断;

最好还能在系统播放面板上控制小程序音频;

电话/闹钟响起时,小程序音频最好“识时务”自动暂停……


面对用户对小程序音频能力的种种需求,开发者们是否感到有点束手无措?


其实,小程序音频接口能力就能一举满足!本期“小程序课”,微信开发哥“码”了关于小程序音频能力的好建议,帮助开发者满足用户“挑剔的耳朵”——


技术课 | 小程序音频不知道怎么开发?10分钟看完这节课就懂了_第1张图片


小程序支持播放和录制音频。小程序播放音频的方式有两种:内部音频背景音频


1

内部音频支持用户在使用小程序过程中播放音效;


2

背景音频支持在用户离开小程序后继续播放音效。





播放音频


背景音频


01

播放背景音频


背景音频接口适用于音乐类小程序,如“音乐站”、“QQ 音乐小电台”。


通过wx.getBackgroundAudioManager()接口可以获取全局唯一的背景音频管理器,所有关于背景音频的操作都由它来实现。


微信内只有一个背景音频,一个小程序开始播放背景音频之后,就持有背景音频播放器,只要当前小程序持有背景音频播放器,即使这个小程序进入后台(即用户离开小程序),也可以继续使用背景音频接口,且当前小程序不会被微信主动回收;一旦背景音频播放器被抢占(可能是其他小程序、微信内其他音乐、其他 App 的音乐),则小程序不再持有背景音频播放器。


技术课 | 小程序音频不知道怎么开发?10分钟看完这节课就懂了_第2张图片


技术课 | 小程序音频不知道怎么开发?10分钟看完这节课就懂了_第3张图片

(音乐站小程序)



02

在系统播放面板显示和控制


通过设置标题、专辑名、歌手名、封面图等属性,小程序音频接口支持在系统音乐播放面板显示出来。通过响应系统面板的点击事件(onPrevonNext),可以实现列表播放。


技术课 | 小程序音频不知道怎么开发?10分钟看完这节课就懂了_第4张图片


技术课 | 小程序音频不知道怎么开发?10分钟看完这节课就懂了_第5张图片

(系统播放面板控制效果)


内部音频


01

播放内部音频


内部音频适用于所有小程序,尤其是游戏类目的小程序,如“跳一跳”。


通过wx.createInnerAudioContext()接口可以创建一个音频实例。



每个小程序可以同时持有和播放多个内部音频,但一旦小程序进入后台(onHide),所有内部音频都会被暂停,且在用户回到前台(即打开小程序)之前无法再被播放。


02

静音下也能播放


在 iOS 系统中,内部音频默认遵循静音键设置。如果希望在静音时也能播放,可以设置obeyMuteSwitchfalse



安卓系统没有统一的静音开关,暂不支持此特性。


03

处理音频中断事件


以游戏为例,在游戏中,经常有播放使用内部音频来播放游戏背景音乐的场景。音频中断事件指的是在游戏期间,音频被系统打断时触发的事件。音频中断事件分为中断开始和中断结束事件,分别使用wx.onAudioInterruptionBegin()wx.onAudioInterruptionEnd()来监听。


以下事件会触发音频中断开始事件:接到电话、闹钟响起、系统提醒、收到微信好友的语音/视频通话请求。被中断之后,小游戏内所有音频会被暂停,并在中断结束之前都不能再播放成功。


中断结束之后,被暂停的音频不会自动继续播放,游戏可监听音频中断结束事件,并在收到中断结束事件之后调用背景音乐继续播放。



如果游戏的逻辑强依赖音乐的播放(如音乐类游戏),需要在音频开始中断的时候暂停游戏。



技术课 | 小程序音频不知道怎么开发?10分钟看完这节课就懂了_第6张图片

(跳一跳小游戏)





录制音频


通过wx.getRecorderManager接口,可以获取全局唯一的录音管理器。


技术课 | 小程序音频不知道怎么开发?10分钟看完这节课就懂了_第7张图片


01

实现边录边传


默认情况下,录音结束后会生成一个本地文件,并通过回调返回本地文件的地址。对于实时性要求比较高的小程序(如“面对面翻译”),可以通过设置frameSize参数来设置一个帧的大小,这样每录制指定帧大小的内容后,会通过onFrameRecorded回调返回本次分片的数据。


技术课 | 小程序音频不知道怎么开发?10分钟看完这节课就懂了_第8张图片


注意事项

不建议使用的历史接口

上述接口可以满足所有音频相关的需求。除了上述接口,小程序内还有若干跟音频相关的接口(如wx.startRecord wx.playVoice wx.playBackgroundAudio等)。这些接口由于早期设计存在一些缺陷,我们不建议继续使用。


技术课 | 小程序音频不知道怎么开发?10分钟看完这节课就懂了_第9张图片


如果本期内容让你有所收获

欢迎赞赏一下我们的开发哥

技术课 | 小程序音频不知道怎么开发?10分钟看完这节课就懂了_第10张图片


课后交流

掌握了小程序的音频能力,你还想知道小程序的哪些能力呢?欢迎留言,和微信开发哥一起交流。


● 内容来自“微信开发者”公众号《小程序·小故事》栏目



微信公开课

微信ID:wx-gongkaike

技术课 | 小程序音频不知道怎么开发?10分钟看完这节课就懂了_第11张图片

1.点击历史信息,查看更多内容

2.长按右侧二维码,关注微信公开课

技术课 | 小程序音频不知道怎么开发?10分钟看完这节课就懂了_第12张图片

长按二维码关注


你可能感兴趣的:(技术课 | 小程序音频不知道怎么开发?10分钟看完这节课就懂了)