当前位置:   article > 正文

使用微信小程序开发制作一个简单的音乐播放应用_微信小程序制作音乐播放器

微信小程序制作音乐播放器

一、准备工作

  1. 下载并安装开发者工具。
  2. 创建一个新的微信小程序项目,命名为MusicPlayer。
  3. 在项目文件夹中创建以下文件夹和文件:
  • images文件夹:用于存放页面中使用的图片素材。
  • pages文件夹:用于存放页面相关的代码和文件。
  • app.js:小程序的入口文件。
  • app.json:小程序的全局配置文件。
  • app.wxss:小程序的全局样式文件。

二、设计页面

  1. 在app.json文件中,配置小程序的页面路径和窗口样式等信息:
  1. {
  2. "pages": [
  3. "pages/index/index"
  4. ],
  5. "window": {
  6. "backgroundTextStyle": "light",
  7. "navigationBarBackgroundColor": "#fff",
  8. "navigationBarTitleText": "Music Player",
  9. "navigationBarTextStyle": "black"
  10. }
  11. }

  1. 在pages文件夹中创建index文件夹,并在该文件夹中创建index.wxml、index.wxss和index.js文件。
  2. 在index.wxml文件中设计音乐播放页面的结构,包括音乐封面、歌曲名称、播放控制按钮等元素:
  1. <view class="container">
  2. <image src="{{music.cover}}" class="cover"></image>
  3. <view class="song-name">{{music.name}}</view>
  4. <view class="controls">
  5. <button bindtap="play" class="play-btn">{{playing ? '暂停' : '播放'}}</button>
  6. <button bindtap="prev" class="prev-btn">上一首</button>
  7. <button bindtap="next" class="next-btn">下一首</button>
  8. </view>
  9. </view>

  1. 在index.wxss文件中为页面元素添加样式:
  1. .container {
  2. display: flex;
  3. flex-direction: column;
  4. align-items: center;
  5. justify-content: center;
  6. height: 100vh;
  7. }
  8. .cover {
  9. width: 200rpx;
  10. height: 200rpx;
  11. border-radius: 50%;
  12. }
  13. .song-name {
  14. margin-top: 20rpx;
  15. font-size: 20rpx;
  16. }
  17. .controls {
  18. margin-top: 40rpx;
  19. }
  20. .play-btn,
  21. .prev-btn,
  22. .next-btn {
  23. width: 200rpx;
  24. height: 60rpx;
  25. background-color: #ff5000;
  26. border-radius: 30rpx;
  27. color: #fff;
  28. font-size: 24rpx;
  29. line-height: 60rpx;
  30. text-align: center;
  31. margin-bottom: 10rpx;
  32. }

  1. 在index.js文件中编写页面逻辑代码,包括音乐的播放、暂停、上一首和下一首等功能:
  1. Page({
  2. data: {
  3. music: {
  4. cover: '/images/cover.jpg',
  5. name: '歌曲名称'
  6. },
  7. playing: false
  8. },
  9. play: function() {
  10. this.setData({
  11. playing: !this.data.playing
  12. });
  13. },
  14. prev: function() {
  15. // 上一首操作
  16. },
  17. next: function() {
  18. // 下一首操作
  19. }
  20. });

三、添加音乐播放功能

  1. 在app.json文件中添加需要使用的微信接口权限:
  1. {
  2. "pages": [
  3. "pages/index/index"
  4. ],
  5. "window": {
  6. "backgroundTextStyle": "light",
  7. "navigationBarBackgroundColor": "#fff",
  8. "navigationBarTitleText": "Music Player",
  9. "navigationBarTextStyle": "black"
  10. },
  11. "permission": {
  12. "scope.userLocation": {
  13. "desc": "获取用户地理位置信息"
  14. },
  15. "scope.record": {
  16. "desc": "录音功能"
  17. },
  18. "scope.writePhotosAlbum": {
  19. "desc": "保存到相册"
  20. },
  21. "scope.camera": {
  22. "desc": "拍照功能"
  23. }
  24. }
  25. }

  1. 在index.js文件中添加音乐播放的相关代码:
  1. Page({
  2. data: {
  3. music: {
  4. cover: '/images/cover.jpg',
  5. name: '歌曲名称',
  6. src: '/music/song.mp3' // 音乐文件的路径
  7. },
  8. playing: false
  9. },
  10. audioContext: null,
  11. onLoad: function() {
  12. this.audioContext = wx.createInnerAudioContext();
  13. this.audioContext.src = this.data.music.src;
  14. },
  15. play: function() {
  16. if (this.data.playing) {
  17. this.audioContext.pause();
  18. } else {
  19. this.audioContext.play();
  20. }
  21. this.setData({
  22. playing: !this.data.playing
  23. });
  24. },
  25. prev: function() {
  26. // 上一首操作
  27. },
  28. next: function() {
  29. // 下一首操作
  30. }
  31. });

  1. 修改index.wxml文件,为播放按钮绑定点击事件:
<button bindtap="play" class="play-btn">{{playing ? '暂停' : '播放'}}</button>

  1. 在小程序开发者工具的菜单栏中,选择“工具”-“构建npm”,将微信开发者工具中的npm模块安装到小程序项目中。
  2. 在页面中引入第三方npm模块,用于加载音乐文件:
  1. const path = require('path');
  2. const fs = require('fs');
  3. Page({
  4. // ...
  5. onLoad: function() {
  6. const filePath = path.join(wx.env.USER_DATA_PATH, 'song.mp3');
  7. this.downloadFile(this.data.music.src, filePath, () => {
  8. this.audioContext.src = filePath;
  9. });
  10. },
  11. downloadFile: function(url, filePath, success) {
  12. wx.downloadFile({
  13. url: url,
  14. header: {},
  15. filePath: filePath,
  16. success: function(res) {
  17. console.log(res);
  18. success();
  19. },
  20. fail: function(res) {
  21. console.log(res);
  22. },
  23. complete: function(res) {
  24. console.log(res);
  25. }
  26. });
  27. },
  28. // ...
  29. });

四、添加音乐切换功能

  1. 在index.js文件中添加上一首和下一首的操作代码:
  1. Page({
  2. // ...
  3. prev: function() {
  4. // 获取音乐列表
  5. const musicList = [];
  6. // 找到当前音乐的索引
  7. let currentIndex = 0;
  8. for (let i = 0; i < musicList.length; i++) {
  9. if (musicList[i].src === this.data.music.src) {
  10. currentIndex = i;
  11. break;
  12. }
  13. }
  14. // 计算上一首音乐的索引
  15. let prevIndex = currentIndex - 1;
  16. if (prevIndex < 0) {
  17. prevIndex = musicList.length - 1;
  18. }
  19. // 切换到上一首音乐
  20. const prevMusic = musicList[prevIndex];
  21. this.setData({
  22. music: prevMusic,
  23. playing: true
  24. });
  25. const filePath = path.join(wx.env.USER_DATA_PATH, 'song.mp3');
  26. this.downloadFile(prevMusic.src, filePath, () => {
  27. this.audioContext.src = filePath;
  28. this.audioContext.play();
  29. });
  30. },
  31. next: function() {
  32. // 获取音乐列表
  33. const musicList = [];
  34. // 找到当前音乐的索引
  35. let currentIndex = 0;
  36. for (let i = 0; i < musicList.length; i++) {
  37. if (musicList[i].src === this.data.music.src) {
  38. currentIndex = i;
  39. break;
  40. }
  41. }
  42. // 计算下一首音乐的索引
  43. let nextIndex = currentIndex + 1;
  44. if (nextIndex >= musicList.length) {
  45. nextIndex = 0;
  46. }
  47. // 切换到下一首音乐
  48. const nextMusic = musicList[nextIndex];
  49. this.setData({
  50. music: nextMusic,
  51. playing: true
  52. });
  53. const filePath = path.join(wx.env.USER_DATA_PATH, 'song.mp3');
  54. this.downloadFile(nextMusic.src, filePath, () => {
  55. this.audioContext.src = filePath;
  56. this.audioContext.play();
  57. });
  58. },
  59. // ...
  60. });

五、完善播放界面

  1. 修改index.wxml文件,添加音乐播放的进度条和时间显示:
  1. <view class="progress">
  2. <progress bindchange="seek" show-info="{{true}}" duration="{{audioContext.duration}}" value="{{audioContext.currentTime}}"></progress>
  3. </view>
  4. <view class="time">
  5. {{formatTime(audioContext.currentTime)}} / {{formatTime(audioContext.duration)}}
  6. </view>

  1. 修改index.js文件,添加音乐播放进度条和时间显示的相关代码:
  1. Page({
  2. data: {
  3. music: {
  4. cover: '/images/cover.jpg',
  5. name: '歌曲名称',
  6. src: '/music/song.mp3'
  7. },
  8. playing:

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/代码探险家/article/detail/969168
推荐阅读
相关标签
  

闽ICP备14008679号