返回顶部
首页 > 资讯 > 前端开发 > 其他 >实例详解uniapp如何实现电话录音功能(附代码)
  • 185
分享到

实例详解uniapp如何实现电话录音功能(附代码)

uni-app 2023-05-14 21:05:31 185人浏览 薄情痞子
摘要

本篇文章给大家带来了关于uniapp的相关知识,其中主要介绍了怎么用uniapp实现拨打电话并且还能同步录音的功能,感兴趣的朋友一起来看一下吧,希望对大家有帮助。uniapp 实现打电话录音功能最近需要实现一个通过 uniapp 调用手机拨

本篇文章给大家带来了关于uniapp的相关知识,其中主要介绍了怎么用uniapp实现拨打电话并且还能同步录音的功能,感兴趣的朋友一起来看一下吧,希望对大家有帮助。

实例详解uniapp如何实现电话录音功能(附代码)

uniapp 实现打电话录音功能

最近需要实现一个通过 uniapp 调用手机拨打电话的功能,拨打之后同时录音,挂断电话之后将录音文件进行上传,现在将几个核心代码分享给大家!

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);
     } );
}

注意点

  • 调试模式下可以正常监听通话挂断并且上传文件的,但是打包之后就失效?

一般的手机打包是可以正常使用的,我用的是 oneplus7 , 打包后安装正常使用,部分手机需要到系统设置的权限中,将应用的【开启手机设备状态码】进行开启即可,目前遇到的就这个。

以上就是实例详解uniapp如何实现电话录音功能(附代码)的详细内容,更多请关注编程网其它相关文章!

--结束END--

本文标题: 实例详解uniapp如何实现电话录音功能(附代码)

本文链接: https://lsjlt.com/news/206681.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 实例详解uniapp如何实现电话录音功能(附代码)
    本篇文章给大家带来了关于uniapp的相关知识,其中主要介绍了怎么用uniapp实现拨打电话并且还能同步录音的功能,感兴趣的朋友一起来看一下吧,希望对大家有帮助。uniapp 实现打电话录音功能最近需要实现一个通过 uniapp 调用手机拨...
    99+
    2023-05-14
    uni-app
  • 详解uniapp实现打电话录音功能(附核心代码)
    本篇文章给大家带来了关于uniapp的相关知识,其中主要跟大家介绍uniapp怎么实现打电话录音功能,感兴趣的朋友下面一起来看一下吧,希望对大家有帮助。最近需要实现一个通过uniapp调用手机拨打电话的功能,拨打之后同时录音,挂断电话之后将...
    99+
    2023-05-14
    uniapp
  • Android 实现电话来去自动录音的功能
    我们在使用Android手机打电话时,有时可能会需要对来去电通话自动录音,本文就详细讲解实现Android来去电通话自动录音的方法,大家按照文中的方法编写程序就可以完成此功能。...
    99+
    2022-06-06
    自动 电话 Android
  • Android拨打电话功能实例详解
    本文实例分析了Android拨打电话功能。分享给大家供大家参考,具体如下: 打电话是手机的一个最基本的功能,现在android智能手机非常流行,里面有多种多样的精彩的手机功能,...
    99+
    2022-06-06
    电话 Android
  • QtC++实现录屏录音功能的示例详解
    目录录屏部分录音部分合成部分转成动态库完整项目录屏部分 录屏的主要思路为抓取屏幕截图,然后将其合成视频。抓取屏幕若使用qt自带的抓屏会出现抓不到鼠标的问题,所以应重写抓屏: stat...
    99+
    2023-03-08
    Qt C++录屏录音 Qt 录屏录音 C++ 录屏录音
  • 基于Python实现录音功能的示例代码
    目录安装查找可用的麦克风录制音频将音频保存到文件今天我们来介绍一个好玩且实用的东西,我们使用python来实现一个录音的功能,废话不多说,让我们直接开始。 安装 使用 PIP 安装 ...
    99+
    2023-02-07
    Python实现录音功能 Python录音功能 Python录音
  • Android6.0如何实现双向通话自动录音功能
    这篇文章主要为大家展示了“Android6.0如何实现双向通话自动录音功能”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Android6.0如何实现双向通话自动录音功能”这篇文章吧。具体如下:项...
    99+
    2023-05-31
  • uniapp如何调用百度语音实现录音转文字功能
    这篇文章给大家分享的是有关uniapp如何调用百度语音实现录音转文字功能的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。经历三天时间各种遇到困难 之后终于实现了这个功能,参照网上了许多文章 才找到一个能正常实现的方...
    99+
    2023-06-22
  • HTML5如何实现录音功能
    这篇文章主要介绍了HTML5如何实现录音功能,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。获取 PCM 数据处理 PCM 数据Float32 转 Int16ArrayBuff...
    99+
    2023-06-09
  • Android如何实现录音功能
    这篇文章给大家分享的是有关Android如何实现录音功能的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。本文介绍了Android实现录音的实例代码(MediaRecorder),分享给大家,具体如下:Android...
    99+
    2023-05-30
    android
  • Qt C++如何实现录屏录音功能
    这篇文章主要介绍了Qt C++如何实现录屏录音功能的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Qt C++如何实现录屏录音功能文章都会有所收获,下面我们一起来看看吧。录屏部分录屏的主要思路...
    99+
    2023-07-05
  • JavaScript实现星座查询功能 附详细代码
    目录一、题目二、代码 三、结果四、总结 一、题目 在文本框中输入一个生日值,点击按钮,可以显示此生日的对应星座。定义一个函数,该函数用来接收一个生日值(月日组成的...
    99+
    2024-04-02
  • Python实现录屏功能的示例代码
    目录一、界面开发二、录屏参数设置1.设置录屏范围2.鼠标事件监听3.键盘事件监听三、录屏操作一、界面开发 #设置主界面 def set_init_window(self): ...
    99+
    2023-03-24
    Python实现录屏功能 Python录屏功能 Python录屏
  • JS实现一个微信录音功能过程示例详解
    目录功能原型图拆解需求评估时间代码实现功能原型图 其实就是微信发送语音的功能。没有转文字的功能。 拆解需求 根据原型图可以很容易的得出我们需要做的内容包括下面三个部分: 接入微信...
    99+
    2023-02-21
    JS微信录音功能 JS 微信录音
  • Vue实现悬浮框自由移动+录音功能的示例代码
    目录效果如下主要功能实现1.封装第一个漂浮组件FloatBall.vue2.封装第二个组件录音组件Audio.vue3.recorder.js效果如下 主要功能 1.一个漂浮的球...
    99+
    2024-04-02
  • VuePC端实现扫码登录功能示例代码
    目录需求描述思路解析前端功能实现如何控制二维码的时效性?前端如何获取服务器二维码的状态?本篇文章给大家带来了关于Vue的相关知识,其中主要介绍了在PC端实现扫码的原理是什么?怎么生成...
    99+
    2023-01-28
    Vue PC端扫码登录 Vue 扫码登录 vue登录功能
  • android语音即时通讯之录音、播放功能实现代码
    在android中,实现录音与语音播放的功能算是比较简单的,但是作为参考,还是很有必要将语音相关的知识做一个简要的记录。首先,在android中,支持录音支持两种方式。主要包括:字节流模式和文件流模式。用文件流模式进行录音操作比较简单,而且...
    99+
    2023-05-30
    android 语音 通讯
  • 步骤详解Vue怎么实现语音播报(附代码)
    Vue中使用speak-tts插件实现点击按钮后进行语音播报(TTS/文字转语音)场景speak-tts插件https://www.npmjs.com/package/speak-tts(学习视频分享:vue视频教程) 实现点击按钮触发语音...
    99+
    2022-11-22
    speak-tts插件 Vue
  • 详解Vue PC端如何实现扫码登录功能
    本篇文章给大家带来了关于Vue的相关知识,其中主要介绍了在PC端实现扫码的原理是什么?怎么生成二维码图片?怎么用Vue实现前端扫码登录?感兴趣的朋友,下面一起来看一下吧,希望对大家有帮助。.markdown-body{word-break:...
    99+
    2023-05-14
    前端 Vue.js
  • recorder.js如何实现基于Html5录音功能
    这篇文章将为大家详细讲解有关recorder.js如何实现基于Html5录音功能,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。recorder.jsmicrophone基于HTML5的录音功能,输出格式为...
    99+
    2023-06-09
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作