花费一天时间,我开发了一个通话录音小程序(苹果手机可用)

1,038 阅读2分钟

​ 本文将介绍如何使用微信小程序录音API开发一款通话录音小程序。通过该小程序,用户可以轻松录制电话通话内容,并在需要时进行回放或保存。我们将逐步介绍开发过程中所需的关键步骤,包括获取录音权限、录音开始与结束的控制、录音文件的保存和管理等。通过阅读本文,您将了解到如何使用微信小程序录音API构建一个实用的通话录音小程序。

开发录音小程序的目的

​ 本小程序主要解决的问题是苹果手机不能进行通话录音的痛点问题

  1. 录音管理器(RecorderManager)

    wx.getRecorderManager()

    获取全局唯一的录音管理器 RecorderManager

  2. 录音权限

    scope.record 获取麦克风权限

    wx.authorize({
    scope: 'scope.record',
    success() {
      //开始录音
    	_this.startRecordMp3
      //开始打电话
    	_this.makePhone();
    },
    

    注意⚠️:由于微信小程序拨打电话API无法监听到通话接通后的时间,所以目前折中办法是在调起拨号界面时开始录音

  3. 录音监听事件
      //监听开始录音
      recorderManager.onStart(() => {
        const time = this.formatDate(new Date())
        console.log('录音开始', time)
      });
    
      //监听录音暂停
      recorderManager.onPause(() => {
        const time = this.formatDate(new Date())
        console.log('录音暂停', time)
        console.log('录音暂停后继续自动录音', time)
        recorderManager.resume()
      })
    
      //监听录音继续事件
      recorderManager.onResume(() => {
        const time = this.formatDate(new Date())
        console.log('录音继续', time)
      })
    
      //监听录音因为受到系统占用而被中断
      recorderManager.onInterruptionBegin(() => {
        const time = this.formatDate(new Date())
        console.log('录音因为受到系统占用而被中断', time)
      })
    
      //监听录音结束
      recorderManager.onStop((res) => {
        const time = this.formatDate(new Date())
        console.log('录音结束', time, res)
        //录音结束后回调事件返回录音文件临时路径
        //innerAudioContext 音频播放器
        innerAudioContext.src = res.tempFilePath
      });
    
      //监听录音错误事件
      recorderManager.onError((err) => {
        const time = this.formatDate(new Date())
        console.log('录音异常', time, err)
      })
    
  4. 录音开始与结束的控制
    //开始录音
    handleTelphone() {
      const options = {
        duration: 600000, // 录音时长,单位为毫秒
        format: 'mp3', // 音频格式
        sampleRate: '8000', //采样率(pc不支持)
        encodeBitRate:'48000', //编码码率
      };
      recorderManager.start(options);
    }
    
    
    /**
     * 结束录音
     */
    handleStopRecord() {
      recorderManager.stop()
    },
    
  5. 录音文件的保存和管理
    const fs = wx.getFileSystemManager()
    const FOLDER_NAME = 'recordList'
    
    1. 创建缓存目录

      fs.mkdir({
        dirPath: `${wx.env.USER_DATA_PATH}/${FOLDER_NAME}`,
        recursive: false,
      })
      
    2. 保存录音文件

      saveFile(recordFile) {
        const fileName = new Date().getTime()
        fs.saveFile({
          tempFilePath: recordFile, // 临时文件路径
          filePath: `${wx.env.USER_DATA_PATH}/${FOLDER_NAME}/${fileName}.mp3`,
          success: function (res) {
            console.log('文件保存成功', res);
          },
          fail: function (err) {
          	console.log('文件保存失败', err);
          }
        });
      },
      
  6. 用户界面设计与交互优化

image.png


image.png


image.png


image.png

  1. 安全与隐私考虑

    通话录音涉及到用户的隐私和敏感信息,因此安全和隐私考虑是开发过程中必不可少的一部分。需要确保录音数据的安全传输和存储,并遵守相关的隐私法规和规定。

    当前录音文件只保存在用户本地,不会进行云端存储,因此用户需要妥善保存录音文件,删除小程序之前请将重要的录音文件妥善保存。