由于微信小程序官方将音频的样式固定死了,往往再工作中和UI设计师设计出来的样式不符,故一般都采用背景音频播放来实现自定义的UI样式的音频播放,即使用官网API提供的BackgroundAudioManager进行操作 也可以去官网https://developers.weixin.qq.com/miniprogram/dev/api/media/background-audio/BackgroundAudioManager.play.html查看详情

第一步,在对应的wxml页面添加如下代码,eg,放在index.wxml中

<view class='audioMeaage'>
<view bindtap='playAudio1'>
<image wx:if="{{!audioImg}}" class='playIcom' src='{{palyIcon}}'></image>
<image wx:else class='playIcom' src='{{pausIcon}}'></image>
</view>
<view class='sliderWrap'>
<view class='audioNames'>{{audioTitle}}</view>
<view class='progressWrap'>
<slider class="slider2"
bindchange="hanle_slider_change"
bindtouchstart="handle_slider_move_start"
bindtouchend="handle_slider_move_end"
min="0"
block-size="10"
max="{{slider_max}}"
activeColor="#ffd038"
block-color="#ffd038"
backgroundColor="#f2f2f2"
value="{{slider_value}}"
/>
<view class='proTime'>{{current_process}}/{{total_process}}</view>
</view>
</view>
</view>

第二步,对应的index.js,注意这里的playAudio方法是点击以后从后台获取音频的url和标题等信息的

//获取应用实例
const app = getApp()
const AUDIOMANAGER = getApp().globalData.global_bac_audio_manager.manage
const AUDIO = getApp().globalData.global_bac_audio_manager
Page({
data: {
audioImg:false,
palyIcon: "./../../images/home_img_vedio_play.png",
pausIcon:"./../../images/home_img_vedio_play2.png",
audioFlag: false,
is_moving_slider: false,
current_process:"",
slider_value: "",
total_process: "",
slider_max: "",
audioTitle:"",
},
playAudio: function(e){
const item = e.currentTarget.dataset.url
AUDIOMANAGER.src = item.link_url
AUDIOMANAGER.title = item.tit // 音频标题 AUDIO.is_play= true
//背景音频播放进度更新事件
const that = this
that.setData({
audioFlag: true,
audioTitle: item.tit,
audioImg: true
})
AUDIOMANAGER.onTimeUpdate(() => {
if (!that.data.is_moving_slider) {
that.setData({
current_process: that.format(AUDIOMANAGER.currentTime),
slider_value: Math.floor(AUDIOMANAGER.currentTime),
total_process: that.format(AUDIOMANAGER.duration),
slider_max: Math.floor(AUDIOMANAGER.duration)
})
}
AUDIO.time = AUDIOMANAGER.currentTime
}) // 背景音频播放完毕
AUDIOMANAGER.onEnded(() => {
// 单曲循环
that.setData({
slider_value: 0,
current_process: '00:00',
total_process: that.format(AUDIOMANAGER.duration)
})
})
},
// 拖动进度条,到指定位置
hanle_slider_change(e) {
const position = e.detail.value
this.seekCurrentAudio(position)
},
// 拖动进度条控件
seekCurrentAudio(position) {
// 更新进度条
let that = this
wx.seekBackgroundAudio({
position: Math.floor(position),
success: function () {
AUDIOMANAGER.currentTime = position
that.setData({
current_process: that.format(position),
slider_value: Math.floor(position)
})
}
})
},
// 进度条滑动
handle_slider_move_start() {
this.setData({
is_moving_slider: true
});
},
handle_slider_move_end() {
this.setData({
is_moving_slider: false
});
},
// 时间格式化
format: function(t) {
let time = Math.floor(t / 60) >= 10 ? Math.floor(t / 60) : '0' + Math.floor(t / 60)
t = time + ':' + ((t % 60) / 100).toFixed(2).slice(-2)
return t
},
// 播放音频
playAudio1: function(){
console.log(9799875)
console.log(AUDIO.is_play)
if(AUDIO.is_play) {
AUDIOMANAGER.pause()
AUDIO.is_play = false
this.setData({
audioImg: false
})
} else {
AUDIOMANAGER.play()
AUDIO.is_play = true
this.setData({
audioImg: true
})
} },
})

第三步,由于index.js里引入了app.js的方法或者属性了,其实就是将AUDIO的方法提出来了,放在了一个公用的里面,自己单独建立公用文件或者直接写在app.js里都是可以的,这里将其放在app.js中,可以对应这修改globalData里的属性

globalData: {
userInfo: null,
global_bac_audio_manager: {
manage: wx.getBackgroundAudioManager(),
is_play: false,
id: '',
play_time: '',
article_id: '',
}
}

index.wxss

.audioMeaage{
height: 124rpx;
display: flex;
align-items: center;
}
.proTime{
font-size: 20rpx;
color: #888888;
}
.progressWrap{
display: flex;
align-items: center;
}
.playIcom{
width: 84rpx;
height: 84rpx;
}
.slider{
/* width: 502rpx; */ }
.slider1{
width: 466rpx;
margin:0 29rpx 0 8rpx;
}
.slider2{
width: 466rpx;
margin:0 29rpx 0 19rpx;
}

微信小程序音频背景播放的更多相关文章

  1. 如何使用微信小程序video组件播放视频

    相信很多人都有在手机上看视频的习惯,比较看视频更真实更形象.那么我们在微信小程序中如何观看视频呢?这就需要video组件的帮忙了.今天我们就给大家演示一下,如何用微信小程序组件video播放视频.我们 ...

  2. 微信小程序音频播放 InnerAudioContext 的用法

    今天项目上涉及到了微信小程序播放音频功能,所以今天跟着一些教程做了个简单的播放器 1.实现思路 刚开始想着有没有现成的组件可以直接用,找到了微信的媒体组件 audio,奈何看着 1.6.0版本开始,该 ...

  3. 微信小程序 写音乐播放器 slider组件 将value设置为0 真机测试滑块不能回到起点

    最近在用微信小程序写一个音频播放页面,做时间进度的时候用到了slider插件,但是在自然播放完成,或者上/下切换的时候,将slider的value属性值设为0,开发工具上滑块会回到起点,有效.但是真机 ...

  4. 微信小程序后台音乐播放注意事项

    wx.seekBackgroundAudio(OBJECT) 作用:控制音乐播放进度. 注意: 该事件 会触发 wx.onBackgroundAudioPlay(CALLBACK) 事件 ,也就是相当 ...

  5. 微信小程序——引入背景图片【六】

    前言 之前写了一些小程序的博文只是看文档边看边写,了解下他,这次可是真枪真刀的做了! 框架使用的是美团的mpvue,我也是一边学习,一边写的,如有错误之处,还望大家指出. 在这里我有个问题,为什么微信 ...

  6. 微信小程序开发--背景图显示

    这两天开发微信小程序,在设置背景图片时,发现在wxss里面设置 background-image:(url) 属性,不管是开发工具还是线上都无法显示.经过查资料发现,background-image ...

  7. 微信小程序添加背景图片的坑

    给微信小程序页面加载背景图片解决方案 直接附上原文地址: 给微信小程序页面加载背景图片解决方案 - YUSIR 完美CODING世界 - CSDN博客  https://blog.csdn.net/y ...

  8. 微信小程序——音频播放器

    先来个效果图韵下味: 需求: 音频的播放,暂停,中间按钮状态的变化,播放时实时更新播放进度: 前进15s,后退15s: 进度条拖动. 一开始想着这3个功能应该挺简单的.不就是播放,暂停,前进,后退么~ ...

  9. 微信小程序音频长度获取的问题

    小程序推荐使用wx.createInnerAudioContext()创建的innerAudioContext,我们也通过这个接口创建音频.音频的长度可以通过属性获取: 但是,给innerAudioC ...

随机推荐

  1. stm32按键配置

    前言:我们都知道开发板上除了有经典的流水灯之外,还有一个必备的练习硬件--按键(key),下面继续来完成按键的配置. 1.通过查看原理图,找出按键(key)的管脚名字和对应芯片上的I/O口,四个I/O ...

  2. P1验证性内容

    #include<stdio.h> int main() { printf("201983270555"); return 0; } #include<stdio ...

  3. 队列和 BFS —— 栈和 DFS

    队列和 BFS: 广度优先搜索(BFS)的一个常见应用是找出从根结点到目标结点的最短路径. 示例 这里我们提供一个示例来说明如何使用 BFS 来找出根结点 A 和目标结点 G 之间的最短路径. 洞悉 ...

  4. mongodb实现文件存储系统

    前言:这种坑很深呀,要对应mongodb的版本跟php支持的版本,然后,如果要用composer安装第三方的库,一定要一一对应的 正片开始! 开发环境: 系统:window 开发语言:php+apac ...

  5. Linux安装centos,网络net8模式ping不通www.baidu.com或者ping不通主机

    1.Linux安装centos,网络net8模式ping不通www.baidu.com或者ping不通主机. 我使用的是net8模式.配置如下所示,保证可以ping通www.baidu.com或者pi ...

  6. Prometheus监控学习笔记之Prometheus如何热加载更新配置

    0x00 概述 当 Prometheus 有配置文件修改,我们可以采用 Prometheus 提供的热更新方法实现在不停服务的情况下实现配置文件的重新加载. 0x01 热更新 热更新加载方法有两种: ...

  7. SQLMap常用教程

    先安装 python环境(2.6.x或2.7版本) ,再将SQLMap 放在安装目录下 注意:sqlmap只是用来检测和利用sql注入点的,并不能扫描出网站有哪些漏洞,使用前请先使用扫描工具扫出sql ...

  8. Python语言获取目录下所有文件

    #coding=utf-8# -*- coding: utf-8 -*-import osimport sysreload(sys) sys.setdefaultencoding('utf-8') d ...

  9. (windows)局域网内无法访问FTP服务器的解决方法

    遇见的问题 server windows.client windwos 本来好好的ftp,突然就客户端无法访问了 服务器端可以自己访问ftp 客户端ping的通服务器分析过程 因为公司管理严格,自己无 ...

  10. vs扩展和更新插件的开发

    一.调试 以 MinimalisticView.vsix (https://github.com/poma/MinimalisticView) 为例. 正如 | Marketplace 上介绍的,这个 ...