手把手教你:微信小程序实现语音留言功能

在微信小程序中,语音留言功能为用户提供了便捷的交流方式。本文将带你一步步了解如何在微信小程序中实现语音留言功能。

实现步骤

1、在index.wxml中,添加以下代码:

html 复制代码
<view class="container">
  <button bindtap="startRecord">开始录音</button>
  <button bindtap="stopRecord">停止录音</button>
  <button bindtap="playVoice">播放语音</button>
  <button bindtap="uploadVoice">上传语音</button>
</view>

2、在index.wxss中,添加以下样式:

css 复制代码
.container {
  display: flex;
  flex-direction: column;
  align-items: center;
  margin-top: 50px;
}

button {
  margin: 10px;
  width: 200px;
}

3、在index.js中,添加以下代码:

javascript 复制代码
Page({
  data: {
    recorderManager: null,
    voicePath: '',
  },

  onLoad: function() {
    this.initRecorderManager();
  },

  // 初始化录音管理器
  initRecorderManager: function() {
    const that = this;
    this.data.recorderManager = wx.getRecorderManager();
    this.data.recorderManager.onStart(() => {
      console.log('recorder start');
    });
    this.data.recorderManager.onStop((res) => {
      console.log('recorder stop', res);
      that.setData({
        voicePath: res.tempFilePath
      });
    });
  },

  // 开始录音
  startRecord: function() {
    const options = {
      duration: 60000, // 录音时长,单位 ms
      sampleRate: 44100, // 采样率
      numberOfChannels: 1, // 录音通道数
      encodeBitRate: 192000, // 编码码率
      format: 'mp3', // 音频格式,有效值 aac/mp3
    };
    this.data.recorderManager.start(options);
  },

  // 停止录音
  stopRecord: function() {
    this.data.recorderManager.stop();
  },

  // 播放语音
  playVoice: function() {
    wx.playVoice({
      filePath: this.data.voicePath,
      success: function() {
        console.log('播放成功');
      },
      fail: function() {
        console.log('播放失败');
      }
    });
  },

  // 上传语音
  uploadVoice: function() {
    wx.uploadFile({
      url: '你的服务器地址', // 服务器地址
      filePath: this.data.voicePath,
      name: 'file',
      formData: {
        'user': 'test'
      },
      success: function(res) {
        console.log('上传成功', res);
      },
      fail: function() {
        console.log('上传失败');
      }
    });
  }
});

用户可以录制、播放和上传语音,服务器端负责处理和存储语音文件。希望本文对您有所帮助!

相关推荐
2601_9584925518 小时前
Optimizing Engagement with Freehead Skate - HTML5 Game - Construct 3
前端·html·html5
茉莉玫瑰花茶19 小时前
工作流的常见模式 [ 1 ]
java·服务器·前端
zhangxingchao20 小时前
AI应用开发六:企业知识库
前端·人工智能·后端
山峰哥20 小时前
SQL慢查询调优实战:从全表扫描到索引覆盖的完整复盘
前端·数据库·sql·性能优化
红尘散仙20 小时前
一个 `#[uniffi::export]`,把 Rust 接进 React Native
前端·后端·rust
moshuying20 小时前
AI Coding 最大的 token 黑洞,可能根本不是 prompt
前端
红尘散仙20 小时前
一行 `#[specta::specta]`,让 Tauri IPC 有类型
前端·后端·rust
lichenyang45321 小时前
HarmonyOS HMRouter 接入记录:从普通 Tab Demo 到路由跳转
前端
木斯佳21 小时前
前端八股文面经大全:腾讯WXG暑期前端一面(2026-05-15)·面经深度解析
前端·面试·笔试