这篇文章主要介绍“微信小程序怎么实现独立的模块”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“微信小程序怎么实现独立的模块”文章能帮助大家解决问题。
voiceplay.js
//voice player
function prepare(){
var that = this
var info_pair = wx.getStorageSync('url2FileMap') || [];
this.urlMap = new Map();
info_pair.forEach(function(pair){
that.urlMap.set(pair.url, pair.file);
});
}
function saveMap(){
var info_pair = []
this.urlMap.forEach(function(file, url, map){
info_pair.push({url:url, file:file})
});
wx.setStorageSync('url2FileMap', info_pair);
}
//播放铃声文件,优先使用缓存文件,根据需要下载。
//var url = that.getRingtoneUrl(index)
function play(url) {
const app = getApp()
var that = this
var savedFile = this.urlMap.get(url)
if (savedFile != undefined) {
//已经存在缓存文件,直接播放缓存文件
app.addLog('播放缓存铃声')
wx.playVoice({
filePath: savedFile,
fail: function () {
//播放缓存文件失败,清除缓存文件信息
that.urlMap.delete(url);
that.saveMap();
//下载并播放缓存文件
that.downloadAndPlay(url)
},
})
} else {
//没有缓存文件,下载并播放
app.addLog('that.downloadAndPlay')
that.downloadAndPlay(url)
}
}
//下载,保存,播放铃声文件。
function downloadAndPlay(url) {
const app = getApp()
var that = this
that.downloadFile({
url: url,
success: function (savedFilePath) {
app.addLog('saveFileSuccess')
//下载成功,播放文件
app.addLog('播放下载铃声')
wx.playVoice({
filePath: savedFilePath,
})
//更新缓存文件信息。
that.urlMap.set(url,savedFilePath);
that.saveMap();
}
})
}
//下载并保存文件
function downloadFile(parameter) {
const app = getApp()
var that = this
wx.downloadFile({
url: parameter.url,
success: function (res) {
//保存临时文件,以供将来使用
wx.saveFile({
tempFilePath: res.tempFilePath,
success: function (save_res) {
parameter.success(save_res.savedFilePath)
}
})
},
})
}
module.exports = {
prepare: prepare,
play: play,
downloadAndPlay:downloadAndPlay,
downloadFile:downloadFile,
saveMap:saveMap
}
用法
经过上述处理,我们就得到了一个通用的音频播放模块,可以在直接在其他小程序中使用。一共分三步,每步就一行。
导入模块
const voiceplayer = require('./utils/voiceplayer.js')
目录有可能需要根据目录结构修改。
初始化
voiceplayer.prepare()
调用prepare函数,取得已经保存的缓存文件信息。
播放音频
voiceplayer.play(media_file_url)
调用play函数,播放指定的音频文件。如果没有缓存文件则首先下载该文件播放并保存以供下次使用。音频文件需要另外准备。
关于“微信小程序怎么实现独立的模块”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注亿速云行业资讯频道,小编每天都会为大家更新不同的知识点。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。