uniapp 录音和播放功能

简介: uniapp 录音和播放功能

实现录音功能需要用到 uni.getRecorderManager();

播放则需要用到 uni.createInnerAudioContext();

import * as m from '@dcloudio/uni-app'
 // 录音功能
const recorderManager = uni.getRecorderManager();
const innerAudioContext = uni.createInnerAudioContext();

按钮样式部分:

   <button @tap="startRecord">开始录音</button>
   <button @tap="playVoice">播放录音</button>
   <button @tap="Stop">停止播放</button>  

点击开始录音时弹出层出现:

弹出层样式:

  <!-- <button>打开弹窗</button> -->
    <uni-popup ref="popup" type="bottom" background-color="#fff">
      <view class="pop">
        <view style="margin:10px 10px;text-align: end;" @click="endRecord">
          完成
        </view>
        <view class="luyin">
          <text>录音秒数</text>
          <text>{{num}}  秒</text>
        </view>
        <view class="img">
          <view>
            {{title}}
          </view>
          <image v-if="start" @click="open" src="https://pic.imgdb.cn/item/6483d51a1ddac507cc140c7c.png"
            mode=""></image>
          <image v-show="pause" @click="down" src="https://pic.imgdb.cn/item/6483d6811ddac507cc155ed6.png"
            mode=""></image>
          <image v-show="go_on" @click="go_ons" src="https://pic.imgdb.cn/item/6483d51a1ddac507cc140c7c.png"
            mode=""></image>
        </view>
      </view>
    </uni-popup>

css部分:

.pop {
    width: 100%;
    height: 30vh;
  }
  .luyin {
    width: 100%;
    height: 40px;
    font-size: 20px;
    text-align: center;
    margin-top: 20px;
    // >text:nth-child(1){
    // }
    >text:nth-child(2) {
      margin-left: 10px;
    }
  }
  .img {
    width: 100%;
    text-align: center;
    margin-top: 40px;
    image {
      border-radius: 50%;
      width: 50px;
      height: 50px;
      margin-top: 20px;
    }
  }

js部分:

//底部弹出
startRecord() {
        this.$refs.popup.open('bottom')
      },

效果演示:

开始录音效果:

//开始录音
            open() {
        this.start = false;
        this.pause = true;
        this.title = '开始录音';
        console.log('开始录音');
        recorderManager.start();
        this.times = setInterval(() => {
          console.log(++this.num);
        }, 1000)
      },
//暂停录音
           down() {
        this.pause = false;
        this.go_on = true;
        this.title = '暂停录音';
        recorderManager.pause();
        clearInterval(this.times)
      },
//继续录音
      go_ons() {
        this.pause = true;
        this.go_on = false;
        this.title = '继续录音';
        recorderManager.resume();
        this.times = setInterval(() => {
          console.log(++this.num);
        }, 1000)
      },
//结束录音
            endRecord() {
        console.log('录音结束');
        recorderManager.stop();
        clearInterval(this.times)
        console.log(this.num);
      },

在onload中获取录音结束的返回值

onLoad() {
      let self = this;
      recorderManager.onStop(function(res) {
        console.log('recorder stop' + JSON.stringify(res));
        self.voicePath = res.tempFilePath;
      });
    },

开始播放事件:

//播放录音
            playVoice() {
        console.log('播放录音');
        if (this.voicePath) {
          innerAudioContext.src = this.voicePath;
          innerAudioContext.play();
        }
      },
//停止播放
      Stop() {
        innerAudioContext.stop();
      },

录音时效果演示:

目录
相关文章
|
18天前
|
JavaScript Java 测试技术
基于SpringBoot+Vue+uniapp的多功能智能手机阅读APP的详细设计和实现
基于SpringBoot+Vue+uniapp的多功能智能手机阅读APP的详细设计和实现
40 12
|
25天前
|
JavaScript Java 测试技术
基于ssm+vue.js+uniapp小程序的电影播放平台附带文章和源代码部署视频讲解等
基于ssm+vue.js+uniapp小程序的电影播放平台附带文章和源代码部署视频讲解等
15 0
|
26天前
|
JavaScript Java 测试技术
基于ssm+vue.js+uniapp小程序的多功能智能手机阅读APP附带文章和源代码部署视频讲解等
基于ssm+vue.js+uniapp小程序的多功能智能手机阅读APP附带文章和源代码部署视频讲解等
18 0
|
2月前
|
移动开发 前端开发 JavaScript
uniapp中IO模块(管理本地文件系统)的常用功能封装
uniapp中IO模块(管理本地文件系统)的常用功能封装
124 1
|
2月前
|
移动开发 JavaScript 前端开发
【Uniapp 专栏】Uniapp 与 Flutter 的功能特点对比
【5月更文挑战第15天】Uniapp 和 Flutter 是跨平台开发的热门框架。Uniapp 以其强大的跨平台兼容性和基于 Vue.js 的易学性著称,适合快速开发适用于 iOS、Android 和 H5 的应用。其丰富的组件生态简化了功能集成。然而,在复杂场景下,性能可能不及原生。Flutter 则以其全新渲染引擎实现流畅界面和高度自定义,性能接近原生,但学习成本较高,需处理特定平台适配。适用于高要求的项目。两者各有优势,选择应考虑项目需求、技术储备和开发周期。
【Uniapp 专栏】Uniapp 与 Flutter 的功能特点对比
|
2月前
|
存储 开发框架 自然语言处理
【Uniapp 专栏】Uniapp 的多语言支持功能详解
【5月更文挑战第14天】Uniapp是一款跨平台开发框架,提供强大多语言支持,助力开发者轻松构建支持多种语言的应用,提升用户体验和市场拓展。其特点包括灵活的语言管理、跨平台一致性。通过语言文件存储内容,切换机制让用户自由切换。注重翻译准确性和文化适应性,集成到页面和组件中,同时关注性能优化。面对翻译不一致和更新及时性等问题,Uniapp将持续发展和完善,为全球化应用开发提供强有力支持。
【Uniapp 专栏】Uniapp 的多语言支持功能详解
|
2月前
|
存储 开发框架 安全
【Uniapp 专栏】探索 Uniapp 的本地存储功能特点
【5月更文挑战第14天】Uniapp的本地存储功能是其跨平台开发的强大优势,提供数据持久化的存储、读取,支持多种数据类型。其特点是简单易用、跨平台一致且有一定安全性。通过键值对存储和容量管理,适应不同应用场景,如用户登录信息存储和应用配置保存。同时,注意性能优化、数据清理和安全保护。与其他框架比较,Uniapp有独特优势,并将持续发展以满足复杂需求。开发者应根据业务需求设计存储策略,确保数据安全高效使用。
【Uniapp 专栏】探索 Uniapp 的本地存储功能特点
|
2月前
|
缓存 开发框架 安全
【Uniapp 专栏】详解 Uniapp 的网络请求功能特性
【5月更文挑战第13天】Uniapp是一款跨平台开发框架,提供便捷的网络请求功能,支持HTTP/HTTPS协议及GET/POST等多种请求方法。它允许设置请求参数、处理响应数据,并有超时时间、缓存策略及错误处理机制。还能与状态管理、页面交互结合,确保数据安全并进行性能优化。通过案例和比较,展现了Uniapp在网络请求上的优势,为开发高质量移动应用奠定基础。理解和掌握这些特性对于创建出色应用体验至关重要。
【Uniapp 专栏】详解 Uniapp 的网络请求功能特性
|
2月前
|
开发框架 前端开发 开发者
【Uniapp 专栏】Uniapp 的状态管理功能深度解析
【5月更文挑战第13天】Uniapp 的状态管理对于构建复杂跨平台应用至关重要,它包括全局变量、Vuex 风格管理。核心概念有 State、Actions 和 Mutations。通过状态定义、动作设计和突变管理,提高开发效率和代码可维护性。实际案例和与其他框架比较显示了 Uniapp 的优势。理解并有效利用状态管理,能提升应用质量和开发效率。
【Uniapp 专栏】Uniapp 的状态管理功能深度解析
|
2月前
|
小程序
uniapp 实现当前页面分享至微信好友或朋友圈功能(带参数和无参数)
uniapp 实现当前页面分享至微信好友或朋友圈功能(带参数和无参数)
146 0