微信小程序的常用API ①

前言:什么是微信小程序的API?

(1)微信小程序的API是由宿主环境提供的。通俗来说API是一种接口函数,把函数封装起来给开发者使用,这样好多功能都无需开发者去实现,直接调用即可

(2)通过这些API,开发者可以方便的调用微信提供的能力。如:获取用户信息、本地存储、支付功能 等等

(3)小程序还提供了一系列在后端服务器使用HTTPS请求调用的API,帮助开发者在后台完成各类数据分析、管理、查询...操作

一、背景音频 API

(1)背景音频的使用

先  在app.json中配置"requiredBackgroundModes": [“audio”]

再  通过wx.getBackgroundAudioManage绑定方法

(2)背景音频的属性

1》src                    背景音频的数据源,默认为空字符串,当设置了新的src时,会自动开始播放,                                 目前支持的格式有M4A、AAC、MP3、WAV

2》startTime           背景音频开始播放的时间(单位:秒)

3》title                    背景音频标题,用于原生音频播放器的背景音频标题

4》playbackRate    播放速率,范围0.5-2.0倍,默认1倍

5》duration             当前背景音频的长度(单位:秒),只有在合法src时有效(只读)

6》currentTime       当前背景音频的播放时间(单位:秒),只有在合法src时有效(只读)

7》paused              当前是否暂停或停止(只读)

(3)背景音频的方法

使用:getBackgroundAudioManage.方法名

1》play()                    播放音频

2》pause()                暂停背景音频

3》seek()                  跳转到指定位置

4》stop()                  停止背景音频

5》onCanplay()       背景音频进入可以播放状态的事件(参数为回调函数)

6》onWaiting()         监听背景音频加载中事件,当背景音频因为数据不足需要停下来加载时会                                         触发

7》onError()            监听背景音频播放错误事件

8》onPlay()             监听背景音频播放事件

9》onPause()          监听背景音频暂停事件

10》onSeeking()     监听背景音频开始跳转操作事件

11》onSeeked()      监听背景音频完成跳转操作事件

12》onEnded()       监听背景音频自然播放结束事件

13》onStop()          监听背景音频停止事件

14》onTimeUpdate() 监听背景音频播放进度更新事件,只有微信小程序在前台时会调用

(4)背景音频代码示例

4-1》先在vscode中配置好一个简单的服务器代码并且启动服务器运行

如图:我的音频文件全放在htdocs中,运行代码为index.js

目录:

index.js 运行代码:

var express = require('express');

var app = express();

app.use(express.static('./htdocs'));

app.listen(3000, res => {
  console.log('服务器启动成功,访问地址:http://127.0.0.1:3000/文件名');
});

4-2》在微信开发者工具的index.wxml页面搭建好页面框架
<navigation-bar title="Weixin" back="{{false}}" color="black" background="#FFF"></navigation-bar>
<scroll-view class="scrollarea" scroll-y type="list">
<!-- 一、背景音频 -->
  <button bind:tap="playBackMusic">播放背景音频</button>
</scroll-view>

4-3》在index.js里为其绑定的playBackMusic函数绑定相应的事件
Page({
playBackMusic:function(){
        // 背景音频配置
        var audio=wx.getBackgroundAudioManager();
        // 监听音乐开始播放
        audio.onPlay(function(){
            console.log('开始播放音乐');
        });
        // 设置标题
        audio.title="生日快乐";
        // 设置音源
        audio.src="http://127.0.0.1:3000/1.mp3"
    }
})
4-4》点击按钮运行结果如下:

背景音频

二、音频 API

(1)音频的使用

音频通过wx.createInnerAudioContext()方法获取到。注意它没有title属性

(2)音频的主要属性

1》src                           音频的数据源

2》startTime                 音频开始播放的时间(单位:s)

3》autoplay                  是否自动播放

4》loop                        是否循环播放

5》obeyMuteSwitch    是否遵循系统静音开关。当此参数为 false 时,即使用户打开了微信的静音                                      开关,音频也会继续播放。

6》volume                   音量,范围0-1

7》duration                  当前音频的长度(单位:s),只读。

8》currentTime            当前音频的播放时间(单位:s),只读。

9》paused                   当前是否暂停或停止(只读)

10》buffered                音频已缓冲的时间,只读

11》srcType                设置音频的来源类型。有效值:'inner'(表示使用内置的音频管理                                                    器),'network'(表示网络上的音频资源)。

(3)音频的方法

使用:createInnerAudioContext.方法名

(方法和背景音频的方法一样)

1》play()                  播放音频

2》pause()              暂停音频

3》stop()                 停止音频

4》destroy()            释放音频资源

5》seek(position)         跳转到指定位置播放

6》onCanplay()       背景音频进入可以播放状态的事件(参数为回调函数)

7》onWaiting()    监听背景音频加载中事件,当背景音频因为数据不足需要停下来加载时会触发

8》onError()            监听音频播放错误事件

9》onPlay()             监听音频暂停事件

10》onPause()        监听音频暂停事件

......

(4)注意

1》InnerAudioContext 音频资源不会自动释放,因此如果不再需要使用音频,请及时调用 InnerAudioContext.destroy() 释放资源,避免内存泄漏。

2》音频与背景音频的区别:

* 功能差异:wx.createInnerAudioContext() 更多的是用于对单个音频文件进行更细粒度的控制,而 wx.getBackgroundAudioManager() 则用于管理整个小程序的背景音频播放。

* 背景音频允许后台播放,音频不允许

* 若音频和背景音频同时播放,则播放的是音频

(5)音频代码示例

5-1》先在vscode中配置好一个简单的服务器代码并且启动服务器运行

见背景音频的示例代码

5-2》在微信开发者工具的index.wxml页面搭建好页面框架
<navigation-bar title="Weixin" back="{{false}}" color="black" background="#FFF"></navigation-bar>
<scroll-view class="scrollarea" scroll-y type="list">
<!-- 一、背景音频 -->
  <button bind:tap="playBackMusic">播放背景音频</button>
<!-- 二、音频 -->
  <button bind:tap="playMusic">播放音频</button>
</scroll-view>
5-3》在index.js里为其绑定的playMusic函数绑定相应的事件
page({
// 二、创建音频
    playMusic:function(){
        // 创建音频实例
        var music=wx.createInnerAudioContext()
        // 绑定音源地址
        music.src="http://127.0.0.1:3000/2.mp3";
        // 监听开始播放
        music.onPlay(function(){
            console.log('开始播放音乐');
        });
        // 开始播放
        music.play();
    }
}) 
5-4》点击按钮运行结果如下:

20240417_215124

三、选择媒体 API

(1)选择媒体的作用

微信小程序的媒体API用于选择图片或视频。一般用于上传头像、上传照片和视频等功能

(2)选择媒体的使用

选择媒体通过wx.chooseMedia()方法获取到

(3)常用选项

1》count             【number型】 最多可以选择的文件个数,默认值为9

2》mediaType    【Array.<string>字符串数组】文件类型,默认值[’image‘,’video‘]

3》sourceType   【Array.<string>字符串数组】图片和视频选择的来源。默认值为                                                                              [’album‘,’camera‘],也就是图库,相机

4》maxDuration 【number型】 拍摄视频最长拍摄时间,单位秒。时间范围为3-60秒之间。不限                                                        制相册,默认值为10

5》camera         【string型】 仅在sourceType为camera时生效,可设置使用前置或后置

6》success        【function】 接口调用成功的回调函数

7》fail                【function】 接口调用失败的回调函数

8》complete      【function】 接口调用结束的回调函数(成功、失败都会执行)

四、文件上传 API

(1)文件上传的使用

文件上传通过wx.unploadFile()方法获取到

注意:得先在vscode中配置好一个简单的服务器代码并且启动服务器运行

如图:我的图片文件全放在upfile中,运行代码为index.js

目录:

index.js 运行代码:

const express = require('express')
const formidable = require('formidable')
const path = require('path')

var app = express()
app.use(express.static('./htdocs'))

app.post('/upload', function (req, res) {
  var form = formidable({
    keepExtensions: true,
    uploadDir: path.resolve(__dirname, './htdocs/upfile')
  });
  form.parse(req, function (err, fields, files) {
    if (err) {
      console.log('上传失败:' + err)
    } else {
      console.log('上传成功:' + JSON.stringify(files))
    }
    var fileUrl = 'http://127.0.0.1:3000/upfile/';
    for (var i in files) {
      fileUrl += files[i].newFilename;
      break;
    }
    res.json({ success: true, file: fileUrl });
  });
})

app.listen(3000, () => {
  console.log('服务器启动成功 http://127.0.0.1:3000');
})

(2)常用属性

1》url            【string型】 必填项。开发者服务器地址(上传接口路径)

2》header     【object型】 http请求的header。header中不能设置referer

3》timeout    【number型】 超时时间(单位:毫秒)

4》name      【string型】必填项。文件对应的key,开发者在服务器端可以通过这个key获取文件                                            的二进制内容

5》filePath    【string型】必填项。要上传的文件资源的路径(是指本地路径,可以通过输出res来查看。注意不是上传接口路径

6》success   【function】 接口调用成功的回调函数

7》fail           【function】 接口调用失败的回调函数

8》complete 【function】 接口调用结束的回调函数(成功、失败都会执行)

五、图片预览 API

(1)图片预览的使用

图片预览体通过wx.previewImage()方法获取到

(2)常用属性

1》urls       【Array.<string>】 需要预览的图片链接列表

2》current  【string】 表示当前显示图片的链接,不填则默认为urls的第一张

(3)选择媒体、文件上传、图片预览代码示例

3-1》先在vscode中配置好一个简单的服务器代码并且启动服务器运行

见文件上传API的示例代码

3-2》在微信开发者工具的index.wxml页面搭建好页面框架
<navigation-bar title="Weixin" back="{{false}}" color="black" background="#FFF"></navigation-bar>
<scroll-view class="scrollarea" scroll-y type="list">
<!-- 一、背景音频 -->
  <button bind:tap="playBackMusic">播放背景音频</button>
<!-- 二、音频 -->
  <button bind:tap="playMusic">播放音频</button>
<!-- 三、选择媒体 -->
  <button bind:tap="choose">选择媒体</button>
<!-- 四、文件上传 -->
  <button bind:tap="upload">文件上传</button>
<!-- 五、图片显示与图片点击预览 -->
  <image bind:tap="preview" src="{{img}}" mode=""/> 
</scroll-view>
3-3》在index.js里为其绑定的choose、upload函数绑定相应的事件
Page({
 // 三、媒体API
    choose:function(){
        //chooseMedia 选择媒体
        wx.chooseMedia({
            // 最多可选的文件数量
            count:9,
            // 媒体类型
            mediaType:["image"],
            // 图库
            sourceType:['album','camera'],
            // 成功时的回调
            success:res=>{ //使用箭头函数来处理this指向问题
                //console.log(res); //可自己运行查看数据
                this.setData({
                    // url保存的是本地图片的临时地址
                    url:res.tempFiles[0].tempFilePath,
                })
            }
        })
    },
    //四、 文件上传 API
    upload:function(){
        wx.uploadFile({
        // url保存的是服务器的上传地址
          url:"http://127.0.0.1:3000/upload",
        // filePath是图片的本地路径
          filePath:this.data.url,
          name:'image1',
          success:res=>{
            this.setData({
         // img是图片上传后这个图片的服务器地址
                img:JSON.parse(res.data).file
            })
          }
        })
    },
    // 五、图片预览 API
    preview:function(){
        wx.previewImage({
          urls: [this.data.img],
 //   urls需要预览的图片链接列表
        })
    }
})
3-4》注意:

① 在三、选择媒体API中,我随机选择了一张图片,并且console.log输出res,结果如下。可以见得我选择的本地图片临时地址是保存在tempFiles数组下的tempFilePath属性中。于是我将url进行赋值操作方面进行后续的操作。

② 在四、文件上传API中,我随机选择了一张图片,并且console.log输出res,结果如下。可以见得我选择的本地图片上传后这个图片的服务器地址是保存在data下的file属性中。于是我将img进行赋值操作并且通过JSON.parse()方法来将一个 JSON 格式的字符串转换成 JavaScript 对象,方便进行后续的操作。

3-5》点击按钮运行结果如下:

此视频因为我的音频没有调用.destroy()进行音频资源释放,所以一打开该项目我的音频会自动播放。查看上传预览文件功能时可忽略此声音

20240417_235114

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/552918.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

工业电脑在ESOP工作站行业应用

ESOP工作站行业应用 项目背景 E-SOP是实现作业指导书电子化&#xff0c;并统一管理和集中控制的一套管理信息平台。信迈科技的ESOP终端是一款体积小巧功能齐全的高性价比工业电脑&#xff0c;上层通过网络与MES系统连接&#xff0c;下层连接显示器展示作业指导书。ESOP控制终…

Covalent Network(CQT)宣布推出面向 Cronos 生态的捐赠计划与 API 积分,为 Web3 创新赋能

为了促进 Web3 领域的创新&#xff0c;Covalent Network&#xff08;CQT&#xff09;宣布将其捐赠计划向 Cronos 生态系统中的开发者拓展。这一战略性举措&#xff0c;旨在通过向 Cronos 网络中基于 Covalent Network&#xff08;CQT&#xff09;API 构建的项目提供支持和资源&…

OpenHarmony实战开发-如何使用Navigation实现多设备适配。

介绍 在应用开发时&#xff0c;一个应用需要适配多终端的设备&#xff0c;使用Navigation的mode属性来实现一套代码&#xff0c;多终端适配。 效果图预览 使用说明 将程序运行在折叠屏手机或者平板上观看适配效果。 实现思路 本例涉及的关键特性和实现方案如下&#xff1a…

高版本Android studio 使用Markdown无法预览(已解决)

目录 概述 解决方法 概述 本人升级Android studio 当前版本为Android Studio Jellyfish | 2023.3.1 RC 2导致Markdown无法预览。 我尝试了很多网上的方法都无法Markdown解决预览问题&#xff0c;包括升级插件、安装各种和Markdown相关的插件及使用“Choose Boot Java Runtim…

Linux 操作系统编译器、静态库、动态库

1、编辑器 1.1、vim的安装 指令&#xff1a;sudo apt-get install vim 1.2 vim的使用 格式&#xff1a;vim 文件名 如果文件存在&#xff0c;只打开&#xff0c;文件不存在&#xff0c;创建并打开 vim的4中模式&#xff1a; 命令模式&#xff0c;插入模式&#xff0c;地行模…

springboot Logback 不同环境,配置不同的日志输出路径

1.背景&#xff1a; mac 笔记本开发&#xff0c;日志文件写到/data/logs/下&#xff0c;控制台报出&#xff1a;Failed to create parent directories for [/data/logs/........... 再去手动在命令窗口创建文件夹data&#xff0c;报Read-only file system 2.修改logback-spri…

Hbase的shell命令(详细)

一、help 1.help 显示命名的分组情况 2.help 命令名称 查看命令的具体使用&#xff0c;包括命令的作用和用法。 举例&#xff1a;help list 二、general 组&#xff08;普通命令组&#xff09; 命令 描述 …

Redux极客园项目初始化搭建

基本结构搭建 实现步骤 在 Login/index.js 中创建登录页面基本结构在 Login 目录中创建 index.scss 文件&#xff0c;指定组件样式将 logo.png 和 login.png 拷贝到 assets 目录中 代码实现 pages/Login/index.js import ./index.scss import { Card, Form, Input, Button }…

【第十二届“泰迪杯”数据挖掘挑战赛】【2024泰迪杯】B题基于多模态特征融合的图像文本检索—更新(正式比赛)

【第十二届“泰迪杯”数据挖掘挑战赛】【2024泰迪杯】B题基于多模态特征融合的图像文本检索—更新&#xff08;正式比赛&#xff09; 往期链接&#xff1a; 【第十二届“泰迪杯”数据挖掘挑战赛】【2024泰迪杯】B题基于多模态特征融合的图像文本检索—解题全流程&#xff08;…

安防视频监控/视频集中存储EasyCVR平台级联时,下级平台未发流是什么原因?

安防视频监控/视频集中存储/云存储/磁盘阵列EasyCVR平台可拓展性强、视频能力灵活、部署轻快&#xff0c;可支持的主流标准协议有国标GB28181、RTSP/Onvif、RTMP等&#xff0c;以及支持厂家私有协议与SDK接入&#xff0c;包括海康Ehome、海大宇等设备的SDK等。平台既具备传统安…

PPTist在线编辑、播放幻灯片

PPTist简介 “一个基于 Vue3.x TypeScript 的在线演示文稿&#xff08;幻灯片&#xff09;应用&#xff0c;还原了大部分 Office PowerPoint 常用功能&#xff0c;支持 文字、图片、形状、线条、图表、表格、视频、音频、公式 几种最常用的元素类型&#xff0c;每一种元素都拥…

免费申请泛域名证书

通配符证书是一种比较特殊的SSL/TLS 证书&#xff0c;可用于保护多个域名&#xff08;含主域名&#xff09;&#xff0c;由域名字段中的通配符 (*) 指示。这种证书主要用于具有很多子域的组织。通配符证书对主域及其所有次级子域有效。 对于免费通配符证书而言&#xff0c;目前…

【C++杂货铺】继承

目录 &#x1f308;前言&#x1f308; &#x1f4c1; 继承的概念和定义 &#x1f4c2; 概念 &#x1f4c2; 定义 &#x1f4c1; 基类和派生类对象赋值转换 &#x1f4c1; 继承中的作用域 &#x1f4c1; 派生类的默认成员函数 构造函数 析构函数 拷贝构造函数 赋值重载…

ppt技巧:​如何将两个PPT幻灯片文件合并成一个?

第一种方式&#xff1a;复制粘贴幻灯片 1. 打开第一个PPT幻灯片文件&#xff0c;确保你已经熟悉该文件的内容和布局。 2. 打开第二个PPT幻灯片文件&#xff0c;浏览其中的所有幻灯片&#xff0c;选择你想要合并到第一个文件中的幻灯片。 3. 使用快捷键CtrlC&#xff08;Wind…

【C++类和对象】拷贝构造与赋值运算符重载

&#x1f49e;&#x1f49e; 前言 hello hello~ &#xff0c;这里是大耳朵土土垚~&#x1f496;&#x1f496; &#xff0c;欢迎大家点赞&#x1f973;&#x1f973;关注&#x1f4a5;&#x1f4a5;收藏&#x1f339;&#x1f339;&#x1f339; &#x1f4a5;个人主页&#x…

GAN反演+老照片修复

关于老照片修复~~~~~上图为运行腾讯ARC的模型之后的效果图 其使用的模型&#xff0c;GFP-GAN&#xff0c;Towards Real-World Blind Face Restoration with Generative Facial Prior&#xff0c;理解记录如下&#xff1a; Abstract: In this work, we propose GFP-GAN that …

m4p转换mp3格式怎么转?3个Mac端应用~

M4P文件格式的诞生伴随着苹果公司引入FairPlay版权管理系统&#xff0c;该系统旨在保护音频的内容。M4P因此而生&#xff0c;成为受到FairPlay系统保护的音频格式&#xff0c;常见于苹果设备的iTunes等平台。 MP3文件格式的多个优点 MP3格式的优点显而易见。首先&#xff0c;其…

微服务分布式缓存:无法反序列化 Cannot deserialize;

问题描述 在拆分SpringBoot项目搭建微服务的过程中&#xff0c;需要配置分布式缓存&#xff0c;对redis进行配置&#xff0c;配置完成后&#xff0c;在启动Knife4j文档界面时报错&#xff0c;发现是redis无法反序列化的问题&#xff0c;但是报错中所指出的类com.jhin.jhinoj.m…

Prometheus + Grafana 搭建监控仪表盘

目标要求 1、需要展现的仪表盘&#xff1a; SpringBoot或JVM仪表盘 Centos物理机服务器&#xff08;实际为物理分割的虚拟服务器&#xff09;仪表盘 2、展现要求: 探索Prometheus Grafana搭建起来的展示效果&#xff0c;尽可能展示能展示的部分。 一、下载软件包 监控系统核心…

OpenHarmony实战开发-NAPI封装ArkTS接口案例。

介绍 部分应用的主要开发语言为C/C&#xff0c;但是HarmonyOS的部分接口仅以ArkTS的形式暴露&#xff0c;因此需要将ArkTS的接口封装为Native接口。本例以DocumentViewPicker的Select方法为例&#xff0c;提供了Napi封装ArkTS API的通用方法&#xff0c;本例包含内容如下&…