微信小程序仿网易音乐播放器项目

这篇具有很好参考价值的文章主要介绍了微信小程序仿网易音乐播放器项目。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、项目展示

主页样式

微信小程序仿网易音乐播放器项目

播放页样式

微信小程序仿网易音乐播放器项目

搜索页样式

微信小程序仿网易音乐播放器项目

排行榜页样式

微信小程序仿网易音乐播放器项目

小控件样式

微信小程序仿网易音乐播放器项目

二、项目结构

微信小程序仿网易音乐播放器项目

三、项目功能点

网易云音乐API接口

后端接口,使用node写的,使用了网易云音乐API:
微信小程序仿网易音乐播放器项目
封装的api文件

//env是基础地址js文件
import config from './env'
export default (url,method="GET",data={})=>{
    return new Promise((resolve,reject)=>{
        wx.request({
          url: config.dev.baseUrl + url,
          method,
          data,
          success(res){
            // console.log(res.data);
            if(res.statusCode == 200){
              resolve(res.data)
            }else{
              wx.showToast({
                title: '请求失败,请联系管理员',
              })
              reject('请求失败,请联系管理员')
            }
          },
          fail(error){
            wx.showToast({
              title: '请求失败,请联系管理员',
            })
            reject('请求失败,请联系管理员')
          }
        })
    })
  }
import request from './request'
module.exports = {
  // 获取banner
  getBanner:()=> request('/banner','get',{type:'2'}),
  // 推荐歌单
  getrecommendMusic:()=> request('/personalized?limit=6','get',),
  // 排行榜
  getTopMusic:(idx)=>request(`/top/list?idx=${idx}`,'get'),

  // 歌曲详情
  getMusicDetail:(ids)=>request(`/song/detail?ids=${ids}`),

  // 歌曲音频路径
  getMusicUrl:(id)=>request(`/song/url?id=${id}`,'POST'),

  // 热搜数据 /search/hot/detail
  getHotMusicData:()=>request('/search/hot/detail'),

  // 搜索歌曲 /search
  getSearchMusic:(keywords,limit)=>request(`/search?keywords=${keywords}&limit=${limit}`),
  

  //搜索歌曲关键字  /search/default
  getSearchDefault:()=>request('/search/default'),

  // 登录  网易云真实账号密码
  login:(phone,password)=>request(`/login/cellphone?phone=${phone}&password=${password}`)

}

主页面功能点

微信小程序仿网易音乐播放器项目

  1. banner,滑动菜单栏采用微信的API(swiperscroll-view)进行开发
  2. 滑动到底部重新获取后续的歌曲,使用onReachBottom周期函数来监听页面到达底部,歌曲使用slice函数进行分页操作。
this.setData({
    topList:hotMusicList.playlist,
    todayMusic:hotMusicList.playlist.tracks.slice(0,size*page)
  })
  1. 点击歌曲,进入播放页,传参歌曲id
/ 获取歌曲详情
  goMusicDetail(e){
    let ids = e.currentTarget.dataset.id
    wx.redirectTo({
      url:`../play/play?ids=${ids}`
    })
  },


播放页功能点

微信小程序仿网易音乐播放器项目

  1. 进度条使用微信组件slidervalue表示现在进度(0—100)
  <view class="progress">
    <slider bindchange='sliderChange' activeColor='blue' block-size="12" value='{{ProValue}}' />
  </view>
  1. 进度条value转换成0-100的数值(歌曲当前时间/歌曲总时长*100)
 let value = (music.currentTime/music.duration)*100
  1. 歌曲播放当前时间与总时长格式转换00:00格式
// 转换时间格式,将秒转换成00:00格式
 s_to_hs(s){
    //计算分钟
    //算法:将秒数除以60,然后下舍入,既得到分钟数
    let h = Math.floor(s/60);
    //计算秒
    //算法:取得秒%60的余数,既得到秒数
    s=Math.trunc(s%60);
    //将变量转换为字符串
    h+='';
    s+='';
    //如果只有一位数,前面增加一个0
    h  =   (h.length==1)?'0'+h:h;
    s  =   (s.length==1)?'0'+s:s;
    return h+':'+s;
},
  1. 歌曲进度条随歌曲播放,实时滚动,使用定时器,每秒改变data的数值

timer(){
  // 定时器
 setTimeout(() => {
  music.currentTime
  music.onTimeUpdate(() => {
    let startTime = this.s_to_hs(music.currentTime)
    let endTime = this.s_to_hs(music.duration)
    let value = (music.currentTime/music.duration)*100
    this.setData({
      PlayStartTime:startTime,
      PlayEndTime:endTime,
      ProValue:value
    })
  })
}, 1000)
},
  1. ios静音下可以播放音频
  // ios静音模式下可以播放音频
      wx.setInnerAudioOption({
        obeyMuteSwitch: false,
            success: function (e) {
            console.log(e)
            console.log('play success')
        },
        fail: function (e) {
            console.log(e)
            console.log('play fail')
        }
  1. 播放音频,返回主页面通过按钮也可以控制播放与暂停,将音频实例Music挂载到APP上面
    微信小程序仿网易音乐播放器项目
music(){
  music = wx.createInnerAudioContext();
      if (wx.setInnerAudioOption) {
        wx.setInnerAudioOption({
          obeyMuteSwitch: false,
          autoplay: true
        })
      }else {
        music.obeyMuteSwitch = false;
        music.autoplay = true;
      }
      music.src = this.data.musicUrl.url;
      app.music = music
      music.onPlay(()=>{
        console.log('音乐播放');
        this.setData({
          isPlay:true
        })

      })
      music.onStop(()=>{
        console.log('音乐停止');
   

      })
      music.onPause(()=>{
        console.log('音乐暂停');
        this.setData({
          isPlay:false
        })
      })
      music.onError((res)=>{
        console.log(music);
        console.log(res.errMsg);
        console.log(res.errCode);
      })

      music.onWaiting(()=>{
        console.log('音频加载中...');
      })

},

挂载APP实例上面,通过

 app.music = music
 app.music.play();//播放
 app.music.pause();//暂停
  1. 拖动进度条,拖动slider后获取当前value,反向转换成秒数,将music.currentTime修改成当前值
  // 拖动进度条
  sliderChange(e){
let val = e.detail.value
// console.log(music.duration);
let second = music.duration * val/100
this.setData({
  PlayStartTime: this.s_to_hs(second)  
})
music.currentTime = second;
this.timer();
  },
  1. 播放音频封面图片旋转,暂停音乐停止旋转,使用了animation-play-state动画属性,使用监听音频函数
    music.onPlaymusic.onPause来检测播放与暂停,改变animation-play-statepausedrunning的值
<view class="imgUrl">
    <image src="{{picUrl}}" mode="" class="{{isPlay? 'rotateImg':''}}" style="animation-play-state:paused" />
  </view>
.imgUrl image{
  width: 88%;
  height: 88%;
  border-radius: 50%;
  align-self: center;
  animation: rotateImg 10s linear infinite;
}
.rotateImg{
  animation-play-state:running !important
}
@keyframes rotateImg {
  from {
      transform: rotate(0deg);
  }
  to {
      transform: rotate(360deg);
  }


搜索页功能点

微信小程序仿网易音乐播放器项目

  1. 热门信息获取,wx:for循环遍历,搜索输入歌曲名回车之后,wx:if隐藏热门信息,展示歌曲列表
<view class="hotMusicData" wx:if="{{isShow}}">
  <text>热搜榜</text>
  <view class="hotMusic" wx:for="{{hotMusicData}}" wx:for-index="hotIndex" wx:key="key">
    <text class="hotIndex">{{hotIndex+1}}</text>
    <view class="hotMusic_content">
      <text>{{item.searchWord}}\n</text>
      <text>{{item.content}}</text>
    </view>
    <text>{{item.score}}</text>
  </view>
</view>


排行榜功能点

微信小程序仿网易音乐播放器项目

排行榜滑块使用微信组件scroll-view

四、项目难处

项目初期看到尚硅谷的网易云微信小程序的项目,拿到了node的api后端接口,查看微信开发者文档,参考网易云音乐的页面写完了静态页面,封装api接口,统一管理所有api接口地址

  1. 退出播放页面返回主页面,下面出现播放暂停小控件,也能够控制音乐播放与暂停,之前思路是跟vue一样使用插槽slot,但是后面实现起来各种bug,后面换的思路是让music的音频实例让所有组件能够看到,想到了APP跟组件,直接挂载到app上面,来控制音频的播放与暂停。
  2. 播放页面进度条,播放暂停,时间显示功能,在进度条选择上面最开始选择的是progress组件,不过使用定时器不断改变value值,进度条progress会反复从开头滑动,最后选择了slider
  3. 每次通过点击音乐进入播放页面需要销毁上一个music实例,不然会同时播放几首歌曲,不过销毁实例时候需要判断是不是通过点击歌曲list进来的,通过主页面小控件进入的不会停止音乐。

五、项目不足

初次学习写微信小程序,很多东西写的很乱,差哪些页面就去写哪些页面,项目初期没有完整的规划,项目结构也不清晰,功能点也是按照网易云现有功能有啥就写啥,js的一些代码冗余性有点高,通用函数没有做到封装,整体看起来就是有点乱,一些功能点没有写出来,就只是还原的播放器的部分功能,以后还要多多学习。

六、项目地址

网易云微信小程序
https://gitee.com/yuan_henry/wechat-app文章来源地址https://www.toymoban.com/news/detail-456630.html

到了这里,关于微信小程序仿网易音乐播放器项目的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 微信小程序——【云音乐播放器】

    目录 第一章 开发准备 一、项目结构 二、新建微信小程序项目 第二章 标签页切换 一、常用组件介绍 二、编写页面结构和样式 第三章 音乐推荐 一、组件介绍 二、编写音乐推荐页面结构和样式 第四章 播放器 一、任务分析 二、组件介绍 三、实现播放器功能 四、编写播放器

    2024年02月09日
    浏览(44)
  • 音乐播放器微信小程序

    一:学习目标: 掌握swiper组件、scroll-view组件的使用; 掌握image组件的使用; 掌握slider组件的使用; 掌握音频API的使用;  二:目录: 1. 开发前的准备 1.1 音乐小程序 项目展示 : 1.1.1: 音乐推荐 界面展示: 1.1.2: 播放器 界面展示: 1.1.3: 播放列表 界面展示: 1.2: 项目

    2024年02月05日
    浏览(72)
  • 微信小程序实现音乐播放器(1)

    代码涉及的主要文件有: app.json app.wxss pages/music/music.json pages/music/music.wxml pages/music/music.wxss pages/music/music.js 另外,你可能需要的图片资源,在这里! BackgroundAudioManager实现背景音乐 imzusheng / netease-music-uniapp

    2024年02月09日
    浏览(44)
  • 微信小程序音乐播放器【含源码】

    微信小程序音乐播放器 取源码私聊

    2024年02月06日
    浏览(37)
  • java微信小程序音乐播放器分享系统

    随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,音乐播放器小程序被用户普遍使用,为方便用户能够可以随时进行音乐播放器小程序的数据信息管理,特开发了基于音乐

    2024年02月11日
    浏览(41)
  • 基于微信小程序的音乐播放器设计

    目 录 1绪论 1 1.1选题背景及意义 1 1.2发展现状 1 1.2.1什么是微信小程序 1 1.2.2小程序市场的现状 4 1.3研究主要内容 4 2系统技术 5 2.1 Java语言 5 2.2 SSM框架 6 2.3 Vue.js框架 7 2.4 Eclipse开发工具 8 2.5数据库 9 2.6系统开发环境概述 10 3系统分析 12 3.1 功能需求(用例图分析) 12 3.1.1 网络音

    2024年02月11日
    浏览(37)
  • 微信小程序实现一个音乐播放器的功能

    1.页面包含一个音乐列表,点击列表中的音乐可以播放对应的音乐。 2.播放中的音乐在列表中有标识,并且可以暂停或继续播放。 3.显示当前音乐的播放进度和总时长,并可以拖动进度条调整播放进度。 4.点击切换按钮可以切换到下一首音乐。 5.点击循环按钮可以切换音乐的

    2024年01月22日
    浏览(51)
  • ssm基于微信小程序的音乐播放器(程序+开题)

    本系统(程序 + 源码)带文档 lw 万字以上 文末可获取一份本项目的 java 源码和数据库参考。 研究背景: 随着移动互联网的普及和智能手机的广泛应用,人们对于音乐的需求也越来越高。传统的音乐播放器存在着功能单一、操作繁琐等问题,无法满足用户的需求。因此,开发

    2024年02月02日
    浏览(52)
  • 微信小程序——实现音乐播放器(上下切换歌曲、进度条拉动、暂停与继续播放)

    小伙伴们你们有没有想过自己搞一个播放器,播上自己喜欢的歌单,那是多么的惬意啊~ 之前,小编遇到一个项目,语音导览的播放器。其实跟播放歌单一个道理。 但是一看微信开发文档里面的音频API又是那么多,我们该如何选择呢?在这里小编选择了使用wx.createAudioContext

    2024年02月02日
    浏览(62)
  • 案例115:基于微信小程序的音乐播放器的设计与实现

    文末获取源码 开发语言:Java 框架:SSM JDK版本:JDK1.8 数据库:mysql 5.7 开发软件:eclipse/myeclipse/idea Maven包:Maven3.5.4 小程序框架:uniapp 小程序开发软件:HBuilder X 小程序运行软件:微信开发者 目录 目录 前言 系统展示 系统首页界面的设计实现 用户注册功能的设计实现 用户登

    2024年02月02日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包