如何利用uniapp调用手机拨打电话的功能并录音

1273 ℃

如何利用uniapp调用手机拨打电话的功能并录音,挂断电话之后将录音文件进行上传服务器,下面web建站小编给大家详细介绍一下具体实现代码!

具体核心代码如下:

const recorderManager = uni.getRecorderManager();
onLoad(option) {
  let self = this;
  recorderManager.onStop(function (res) {
    console.log("res",res)
    self.end_time = Math.round(new Date().getTime() / 1000);
    let voicePath = res.tempFilePath;
    self.voicePath = voicePath;
    self.closeTimeOut();
    uni.showToast({
      icon: 'loading',
      title: "请稍后...",
      duration: 0
    });
    uni.uploadFile({
      url: self.upload_url,
      filePath: voicePath,
      name: "file",
      formData: {
        id: self.phoneInfo.id,
        start_time: self.start_time,
        end_time: self.end_time,
        phone: self.phoneNumber
      },
      header: {
        Authorization: "Bearer " + uni.getStorageSync(EnumData.token)
      },
      success: (res) => {
        // console.log("文件上传成功")
        console.log(res.data);
      },
      fail(err) {
        console.log("文件上传失败")
        console.log(err);
      },
      complete() {
        self.start_time = 0;
        self.end_time = 0;
        uni.hideToast();
      }
    })
  });
  this.getCallStatus();
}

getCallStatus() {
    let that = this;
    let maintest = plus.android.runtimeMainActivity();
    let Contexttest = plus.android.importClass("android.content.Context");
    let telephonyManager = plus.android.importClass("android.telephony.TelephonyManager");
    let telManager = plus.android.runtimeMainActivity().getSystemService(Contexttest.TELEPHONY_SERVICE);
    let receiver = plus.android.implements('io.dcloud.android.content.BroadcastReceiver', {
        onReceive: function (Contexttest, intent) {
            plus.android.importClass(intent);
            let phoneStatus = telManager.getCallState();
            that.callStatus = phoneStatus; //电话状态 0->空闲状态 1->振铃状态 2->通话存在
            switch (phoneStatus) {
                case 0:
                    console.log("3、电话挂断,上传录音")
                    // 结束录音
                    recorderManager.stop();
                    break;
                case 1:
                    // console.log('1、振铃状态');
                    break;
                case 2:
                    console.log('2、通话存在')
                    // 延迟录音
                    that.start_time = Math.round(new Date().getTime() / 1000);
                    recorderManager.start({
                        duration: EnumData.audioDuration, // 时长 10分钟
                        sampleRate: EnumData.audioSampleRate, // 码率
                    });
                    break;
            }
        }
    });
    let IntentFilter = plus.android.importClass('android.content.IntentFilter');
    let filter = new IntentFilter();
    filter.addAction(telephonyManager.ACTION_PHONE_STATE_CHANGED);
    maintest.registerReceiver(receiver, filter);
},

App.vue权限设置

if (plus.os.name == 'Android') {
      plus.android.requestPermissions(
         ['android.permission.ANSWER_PHONE_CALLS',//手动 挂断和接听 需要这个权限
          "android.permission.MODIFY_AUDIO_SETTINGS",//手动 挂断和接听 需要这个权限
          "android.permission.CALL_PHONE",//手动 挂断和接听 需要这个权限
          "android.permission.READ_PHONE_STATE",//>监听电话状态 需要这个权限
          "android.permission.READ_CALL_LOG",//获取号码需要这个权限
          "android.permission.READ_AUDIO" // 录音权限
          ],
        function(resultObj) {
          var result = 0;
          for (var i = 0; i < resultObj.granted.length; i++) {
          var grantedPermission = resultObj.granted[i];
          console.log('已获取的权限:' + grantedPermission);
          result = 1
        }
        for (var i = 0; i < resultObj.deniedPresent.length; i++) {
          var deniedPresentPermission = resultObj.deniedPresent[i];
          console.log('拒绝本次申请的权限:' + deniedPresentPermission);
          result = 0
        }
        for (var i = 0; i < resultObj.deniedAlways.length; i++) {
          var deniedAlwaysPermission = resultObj.deniedAlways[i];
          console.log('永久拒绝申请的权限:' + deniedAlwaysPermission);
          result = -1
        }
     },  function(error) {
          console.log('申请权限错误:' + error.code + " = " + error.message);
     } );
}

uniapp微信小程序打包成功后wxss编译错误排查

uni.request报"request:fail url not found"错误是什么原因

uniapp如何安装stomp并运用

uniapp如何实现上拉加载更多数据

uniapp如何监听用户在输入框中输入内容的变化

标签: uniapp, 拨打电话, 电话录音

上面是“如何利用uniapp调用手机拨打电话的功能并录音”的全面内容,想了解更多关于 js 内容,请继续关注web建站教程。

当前网址:https://m.ipkd.cn/webs_3394.html

声明:本站提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请发送到邮箱:admin@ipkd.cn,我们会在看到邮件的第一时间内为您处理!

纯css制作卡通头像(随鼠标转头)
HTTP协议中的HTTP Keep-Alive是什么?它的主要作用是什么?
哪些因素会影响企业网站的优化?
php语法中如何获取数组元素个数的2个方法!
javascript关于数组中使用include方法