web建站教程
  1. 首页
  2. vuejs
  3. js
  4. 好玩
  5. seo教程
  6. 前端知识
  7. 百度echarts
  8. 更多
    php入门
    nodejs
    mockjs
    reactjs
    mysql
    wordpress
    织梦cms
    帝国cms
    git教程
    IT知识
    模板大全
    休息站

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

1007 ℃
     

如何利用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://ipkd.cn/webs_3394.html

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

当前位置: 网站首页 > js
本文共计2877个字,预计阅读时长20分钟
生活小工具,收录了80多款小工具
上一篇: 介绍几款带有中国风古韵的免费可商用中文字体
下一篇: 推荐9款支持 Vue3 免费开源的前端 UI 组件库
x 打工人ai神器