微信小程序的常用API ①

news2024/11/28 23:43:06

前言:什么是微信小程序的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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

真有立即做出40+BI零售数据分析报表的方案?

有&#xff0c;奥威BI零售数据分析方案是一套标准化的BI方案&#xff0c;预设零售数据分析模型和BI报表&#xff0c;点击应用后&#xff0c;将自动从系统中取数&#xff0c;并根据方案的预设计算分析指标、分析数据&#xff0c;并生成让人快速理解数据情况的BI数据可视化报表。…

javaweb http

1、http简介 HTTP 超文本传输协议&#xff08;HTTP-Hyper Text transfer protocol&#xff09;&#xff0c;是一个属于应用层的面向对象的协议&#xff0c;由于其简捷、快速的方式&#xff0c;适用于分布式超媒体信息系统。它于1990年提出&#xff0c;经过十几年的使用与发展&…

npm ERR! code CERT_HAS_EXPIRED (创建vue过程)

npm ERR! code CERT_HAS_EXPIRED &#xff08;创建vue过程&#xff09; 起因&#xff1a;卸载 npm uninstall -g vue-cli时候发现报这个错误。 当我们创建vue之前&#xff0c;使用npm更新或者安装啥的时&#xff0c;出现此类提示&#xff0c;则表明&#xff0c;用来验证和网络加…

使用GAN做图像超分——SRGAN,ESRGAN

在GAN出现之前&#xff0c;使用的更多是MSE&#xff0c;PSNR,SSIM来衡量图像相似度&#xff0c;同时也使用他们作为损失函数。 但是这些引以为傲的指标&#xff0c;有时候也不是那么靠谱&#xff1a; MSE对于大的误差更敏感&#xff0c;所以结果就是会倾向于收敛到期望附近&am…

《Kubernetes部署篇:基于Kylin V10+ARM架构CPU+外部etcd使用containerd部署K8S 1.26.15容器版集群(一主多从)》

总结&#xff1a;整理不易&#xff0c;如果对你有帮助&#xff0c;可否点赞关注一下&#xff1f; 更多详细内容请参考&#xff1a;企业级K8s集群运维实战 1、在当前实验环境中安装K8S1.25.14版本&#xff0c;出现了一个问题&#xff0c;就是在pod中访问百度网站&#xff0c;大…

使用嘉立创EDA打开JSON格式的PCB及原理图

一、将PCB和原理图放同一文件夹 并打包成.zip文件 二、打开嘉立创EDA并导入.zip文件 文件 -> 导入 -> 嘉立创EDA标准版/专业版 三、选择.zip文件并选择 “导入文件并提取库” 四、自定义工程路径 完成导入并转换为.eprj文件 五、视频教学 bilibili_使用立创EDA打开JSO…

Ansible 提示 sshpass 错误

错误的信息为&#xff1a; AILED! > {"msg": "to use the ssh connection type with passwords or pkcs11_provider, you must install the sshpass program"}问题和原因 这是在运行 ansible 的服务器需要安装 sshpass 组件。 可以直接运行&#xff1…

Xamarin.Android中“ADB0020: Android ABI 不匹配。你正将应用支持的“armeabi-v7a;arm64-v8a”异常处理

这里写自定义目录标题 1、问题2、解决 1、问题 在Xamarin.Android中出现ADB0020: Android ABI 不匹配。你正将应用支持的“armeabi-v7a;arm64-v8a”ABI 部署到 ABI“x86_64;x86”的不兼容设备。应创建匹配其中一个应用 ABI 的仿真程序&#xff0c;或将“x86_64”添加到应用生成…

web自动化系列-selenium 的鼠标操作(十)

对于鼠标操作 &#xff0c;我们可以通过click()方法进行点击操作 &#xff0c;但是有些特殊场景下的操作 &#xff0c;click()是无法完成的 &#xff0c;比如 &#xff1a;我想进行鼠标悬停 、想进行鼠标拖拽 &#xff0c;怎么办 &#xff1f; 这个时候你用click()是无法完成的…

论文解读:(CoOp)Learning to Prompt for Vision-Language Models

文章汇总 存在的问题 虽然训练类别通常具有文本形式&#xff0c;例如“金鱼”或“卫生纸”&#xff0c;但它们将被转换为离散标签&#xff0c;只是为了简化交叉熵损失的计算&#xff0c;从而使文本中的语义封装在很大程度上未被利用。这样的学习范式将视觉识别系统限制在闭集…

【C++题解】1565. 成绩(score)

问题&#xff1a;1565. 成绩&#xff08;score&#xff09; 类型&#xff1a;基本运算、小数运算 题目描述&#xff1a; 牛牛最近学习了 C 入门课程&#xff0c;这门课程的总成绩计算方法是&#xff1a; 总成绩作业成绩 20% 小测成绩 30% 期末考试成绩 50%。 牛牛想知道&am…

CSS简介与CSS选择器

目录 CSS简介 CSS语法规范 HTML引入CSS的方式 行内样式表 内部样式表 外部样式表 CSS选择器 CSS基础选择器 标签选择器 类选择器 单类名选择器 多类名选择器 id选择器 id选择器的使用 id选择器和类选择器的区别 通配符选择器 基础选择器总结 CSS简介 CSS 是层…

无风扇嵌入式车载电脑在矿山车辆行业应用

矿山车辆行业应用 背景介绍 现代的采矿业面临许多的挑战&#xff0c;其中最重要的就是安全性的问题&#xff0c;无论在矿井下或地面上的工作&#xff0c;都必须确保员工的安全保障。因此&#xff0c;先进的矿车必须整合专用的车载电脑&#xff0c;在极其恶劣的采矿环境中稳定运…

Python 数据结构和算法实用指南(三)

原文&#xff1a;zh.annas-archive.org/md5/66ae3d5970b9b38c5ad770b42fec806d 译者&#xff1a;飞龙 协议&#xff1a;CC BY-NC-SA 4.0 第七章&#xff1a;哈希和符号表 我们之前已经看过数组和列表&#xff0c;其中项目按顺序存储并通过索引号访问。索引号对计算机来说很有效…

SQLite作为应用程序文件格式(二十八)

返回&#xff1a;SQLite—系列文章目录 上一篇:SQLite数据库中JSON 函数和运算符(二十七) 下一篇&#xff1a;SQLite—系列文章目录 摘要 具有定义架构的 SQLite 数据库文件 通常是一种出色的应用程序文件格式。 以下是十几个原因&#xff1a; 简化的应用程序开发单文…

Spring Cloud Gateway集成聚合型Spring Boot API发布组件knife4j,增强Swagger

大家都知道&#xff0c;在前后端分离开发的时代&#xff0c;前后端接口对接是一项必不可少的工作。 可是&#xff0c;作为后端开发&#xff0c;怎么和前端更好的配合&#xff0c;才能让自己不心累、脑累&#xff0c;直接扔给前端一个后端开放api接口文档或者页面&#xff0c;让…

Spark/SparkSQL读取Hadoop LZO文件概述

一、前置配置 IDEA Maven安装配置 Scala&#xff08;可选&#xff09; Java Hadoop.dll&#xff08;可能需要&#xff0c;具体看有无相关错误信息&#xff09; hadoop-lzo-0.xx.xx.jar&#xff08;如果你的版本过高&#xff0c;需要到官网下载高版本&#xff0c;mvnrepository仓…

Elasticsearch:如何将 MongoDB 数据引入 Elastic Cloud

作者&#xff1a;Hemendra Singh Lodhi Elastic Cloud 是由 Elastic 提供的基于云的托管服务。Elastic Cloud 允许客户在亚马逊网络服务 (AWS)、谷歌云平台 (GCP) 和微软 Azure 上部署、管理和扩展他们的 Elasticsearch 集群。 MongoDB 是一种流行的 NoSQL 文档导向数据库&am…

(vue)el-select选择框加全选/清空/反选

(vue)el-select选择框加全选/清空/反选 <el-form-item label"批次"><el-selectv-model"formInline.processBatch"multiplecollapse-tagsfilterableplaceholder"请选择"style"width: 250px"no-data-text"请先选择企业、日…

React - 高级用法

React高级用法 Hooks Reducer useReducer&#xff1a; import React, { useReducer, useState } from react;const initialState { count: 0 };function reducer(state, action) {switch (action.type) {case increment:return { count: state.count 1 }case decrement:re…