好长时间以来,自己就有个想法为自己写一个音乐播放器小程序,以方便自己的使用,找网上的好多API,找不到,想抓接口,好多大厂都用了加密。结果自己仅仅整了点本地的数据。

只介绍一些具体的方法:

// 解码>>中文reconvert: function (str) {str = str.replace(/(\\u)(\w{1,4})/gi, function ($0) {return (String.fromCharCode(parseInt((escape($0).replace(/(%5Cu)(\w{1,4})/g, "$2")), 16)));});str = str.replace(/(&#x)(\w{1,4});/gi, function ($0) {return String.fromCharCode(parseInt(escape($0).replace(/(%26%23x)(\w{1,4})(%3B)/g, "$2"), 16));});str = str.replace(/(&#)(\d{1,6});/gi, function ($0) {return String.fromCharCode(parseInt(escape($0).replace(/(%26%23)(\d{1,6})(%3B)/g, "$2")));});return str;},// 解析歌词的方法parseLyric: function (lrc) {var lyrics = lrc.split("\n");var lrcObj = {};for (var i = 0; i < lyrics.length; i++) {var lyric = decodeURIComponent(lyrics[i]);var timeReg = /\[\d*:\d*((\.|\:)\d*)*\]/g;var timeRegExpArr = lyric.match(timeReg);if (!timeRegExpArr)continue;var clause = lyric.replace(timeReg, '');if (clause.length > 0) {for (var k = 0, h = timeRegExpArr.length; k < h; k++) {var t = timeRegExpArr[k];var min = Number(String(t.match(/\[\d*/i)).slice(1)),sec = Number(String(t.match(/\:\d*/i)).slice(1));var time = min * 60 + sec;lrcObj[time] = clause;}}}return lrcObj;},// 转换时间格式timeToString: function (duration) {var str = '';var minute = parseInt(duration / 60) < 10? ('0' + parseInt(duration / 60)): (parseInt(duration / 60));var second = duration % 60 < 10? ('0' + duration % 60): (duration % 60);str = minute + ':' + second;return str;
},

2.播放控制

// 播放状态控制songPlay: function () {clearInterval(timer);var timer = setInterval(function () {// 获取后台音乐播放状态wx.getBackgroundAudioPlayerState({success: function (res) {// 播放状态 1表示播放中if (res.status == 1) {that.setData({isPlaying: true,songState: {progress: res.currentPosition / res.duration * 100,currentPosition: that.timeToString(res.currentPosition),duration: that.timeToString(res.duration)}});var i = that.data.currentIndexif (i < that.data.lyric.length) {if (res.currentPosition - 4 >= parseInt(that.data.lyric[i][0])) {that.setData({currentIndex: i + 1})}}if (that.data.currentIndex >= 5) {that.setData({scrollTop: (that.data.currentIndex - 5) * 20,})}} else {that.setData({ isPlaying: false });clearInterval(timer);}}});}, 1000);},

具体项目我已经放https://github.com/dt8888/JokeProject,请去下载参考!

专栏作家

honey缘木鱼。小程序社区博主,坚持原创分享技术博文。

本文原创发布于小程序社区。未经许可,禁止转载

原文地址:音乐播放小程序demo-微信小程序联盟/博主专区-微信小程序开发社区-微信小程序联盟

相关文章:

微信小程序Demo:音乐之声(音乐播放小程序)

微信小程序Demo:TealMusic音乐播放器

音乐播放小程序demo相关推荐

  1. (附源码)音乐播放小程序 毕业设计 031306

    音乐播放小程序 摘  要 随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,音乐播放小程序被用户普遍使用 ...

  2. springboot+音乐播放小程序 毕业设计-附源码191730

    Springboot音乐播放小程序的设计与实现 摘 要 本文设计了一种基于微信小程序的音乐播放器,系统为人们提供了方便快捷.即用即搜的音乐搜索播放服务,包括音乐资讯.音乐搜索.新歌榜单.注册登录.论坛 ...

  3. 【课程设计】基于Taro+React+Springboot+TaroUI+Python爬虫的网络音乐播放小程序详细设计实现

    [课程设计]基于Taro+React+Springboot+TaroUI+Python爬虫的网络音乐播放小程序详细设计实现 解决触摸穿透 自定义导航栏 文章目录 项目简介 功能截图 1.用户登录注册 ...

  4. php+vue基于微信小程序的叽喳音乐播放小程序

    随着计算机技术的高速发展,现代计算机系统已经从以计算为中心向以信息化处理为中心的方向发展.如何充分利用互联网,这是大家共同关心的问题.本文主要介绍了关于叽喳音乐微信小程序的实现方法,设计规划了叽喳音乐 ...

  5. 计算机毕业设计php+vue基于微信小程序的叽喳音乐播放小程序

    项目介绍 随着计算机技术的高速发展,现代计算机系统已经从以计算为中心向以信息化处理为中心的方向发展.如何充分利用互联网,这是大家共同关心的问题.本文主要介绍了关于叽喳音乐微信小程序的实现方法,设计规划 ...

  6. 【微信小程序】音乐播放小程序

    效果展示 项目总结 请求数据的方式采用wx.request(),将其封装称为一个Promise对象 export default (url, data={}, method = "GET&q ...

  7. 最常用的小程序demo

    wx-gesture-lock  微信小程序的手势密码 WXCustomSwitch 微信小程序自定义 Switch 组件模板 WeixinAppBdNovel 微信小程序demo:百度小说搜索 sh ...

  8. 最全微信小程序demo

    wx-gesture-lock  微信小程序的手势密码 WXCustomSwitch 微信小程序自定义 Switch 组件模板 WeixinAppBdNovel 微信小程序demo:百度小说搜索 sh ...

  9. WX小程序demo示例

    wx-gesture-lock  微信小程序的手势密码 WXCustomSwitch 微信小程序自定义 Switch 组件模板 WeixinAppBdNovel 微信小程序demo:百度小说搜索 sh ...

  10. 十三、制作 iVX音乐分享小程序

    功能介绍 通过前几节的学习,我们对完成一个应用已经有了一些自己的心得.在此再次再制作一个小的音乐小程序应用.该应用一共分为首页.榜单页.音乐分享页和音乐搜索页. 首页: 榜单内容页: 音乐分享页: 音 ...

最新文章

  1. 移动方向_1908号台风“范斯高”继续向西北方向移动
  2. 组件化 Todo List 编写笔记
  3. opencv进阶学习笔记7:直方图,直方图均衡化,直方图比较,直方图反向投影
  4. Linux 命令之 kill -- 杀死进程
  5. 计算机二级access模考软件_计算机二级考前通关大礼包来啦!各科目模考软件、视频教程,更有往年真题、最新考纲等打包送!...
  6. mysql(1):查找语句练习
  7. 增删改查通用测试用例-禅道模板
  8. linux扩大lvm_Linux下lvm在线扩容步骤
  9. Gmail推出视频聊天功能 间接否认欲收购Skype
  10. 海上风电运维船未来前景如何?甲板船之家帮你解开疑问
  11. eclipse怎么配置oracle数据库,Eclipse连接Oracle数据库介绍
  12. 支付网关潜藏黑客!32万多含CVV码的财务信息被盗
  13. 从0到1快速了解netty长连接网关协议
  14. matlab的sinxx,用MATLAB程序编程:分析方程f(x)=sinx-x/2=0正根的分布情况,并用二分法求正根近似值,使误差不超过0.01....
  15. 什么是CSM(Certified Scrum Master) 敏捷教练认证?
  16. SpringBoot数据库访问异常HikariPool-1 - Exception during pool initialization.
  17. Linux如何卸载软件
  18. Linux下文件的备份
  19. 神了!阿里数据库专家纯手写了这份604页的Oracle+MySQL攻坚指南
  20. 【100个 Unity实用技能】☀️ | Unity中 检查当前设备网络状态 的几种方法整理

热门文章

  1. 代码版本管理软件Git的优势和用法
  2. java mencoder_java 用ffmpeg和mencoder进行视频转码
  3. Teechart图表教程:Teechart的组成
  4. sqlplus连接mysql_sqlplus 命令连接数据库
  5. ddpush java_DDPush-任意门消息推送-开源推送服务器-推送-消息推送-信息推送-物联网推送...
  6. 常用工具软件使用【1】
  7. 计算机操作系统第四章测试题及答案
  8. python语言程序设计教程课后答案刘卫国_Visual FoxPro程序设计教程(主编:刘卫国 第三版)1-5课后答案...
  9. nds模拟器电脑版使用教程
  10. CrystalReports2008 SN