uniapp 如何调起打电话并开启录音

在uniapp中如何实现点击按钮调起系统打电话功能,并在通话开始时自动开启录音?需要兼容Android和iOS平台,求具体代码实现方案和注意事项。

2 回复

在 UniApp 中,调起打电话功能可以使用 uni.makePhoneCall 接口,例如:

uni.makePhoneCall({
  phoneNumber: '10086'
});

但 UniApp 官方 API 不支持直接开启通话录音。通话录音属于系统敏感权限,通常需要原生开发实现。你可以考虑以下方案:

  1. 使用原生插件:开发或引入支持通话录音的 Native 插件,通过 UniApp 的插件机制调用。
  2. 分开处理:先拨打电话,再通过 uni.startRecord 录制设备麦克风声音(注意:可能无法直接录制通话对方声音,受系统限制)。

注意:通话录音涉及隐私和法律问题,请确保符合当地法规并明确告知用户。


在 UniApp 中,可以通过调用系统电话功能并配合录音 API 实现拨打电话并开启录音。以下是具体步骤和代码示例:

1. 调起系统拨号界面

使用 uni.makePhoneCall API 打开系统拨号界面并拨打指定号码。

uni.makePhoneCall({
  phoneNumber: '10086', // 替换为目标电话号码
  success: () => {
    console.log('拨号成功');
    // 拨号成功后启动录音
    startRecording();
  },
  fail: (err) => {
    console.error('拨号失败:', err);
  }
});

2. 开启录音功能

使用 uni.getRecorderManager 创建录音管理器,并在拨号成功后开始录音。

const recorderManager = uni.getRecorderManager();

function startRecording() {
  recorderManager.start({
    duration: 60000, // 录音时长(ms),默认 1 分钟
    sampleRate: 44100, // 采样率
    numberOfChannels: 1, // 声道数
    encodeBitRate: 192000, // 编码码率
    format: 'aac' // 音频格式
  });
  
  recorderManager.onStart(() => {
    console.log('录音开始');
  });
}

// 监听录音结束事件(可选)
recorderManager.onStop((res) => {
  console.log('录音文件路径:', res.tempFilePath);
});

注意事项:

  • 权限配置:在 manifest.json 中需添加电话和录音权限(仅 App 端需要):
    "app-plus": {
      "permissions": {
        "makePhoneCall": {},
        "record": {}
      }
    }
    
  • 平台差异
    • 微信小程序:不支持直接录音通话内容(隐私限制)。
    • App 端:可正常使用,但需注意系统权限弹窗。
    • H5 端makePhoneCall 会调起拨号界面,但录音功能依赖浏览器支持。

完整示例代码:

export default {
  methods: {
    callAndRecord() {
      uni.makePhoneCall({
        phoneNumber: '10086',
        success: () => {
          this.startRecording();
        }
      });
    },
    startRecording() {
      const recorder = uni.getRecorderManager();
      recorder.start({
        duration: 60000,
        format: 'aac'
      });
      recorder.onStart(() => {
        uni.showToast({ title: '录音开始', icon: 'none' });
      });
    }
  }
}

限制说明:

  • 受系统限制,无法直接录制通话双方的音频(系统级保护)。
  • 此方案仅能录制设备麦克风捕获的音频(即用户自己的声音)。

建议在实际使用前测试目标平台的兼容性。

回到顶部