uniapp通话录音功能

您所在的位置:网站首页 如何设置hd通话录音权限管理 uniapp通话录音功能

uniapp通话录音功能

2024-07-03 03:00:33| 来源: 网络整理| 查看: 265

注:目前只测了安卓8可以用,安卓13不可用,因为安全性问题,安卓把一些权限改成了系统权限,所以不可用,还有一种办法就是把app打包成系统app,目前还未处理。

app.vue文件里面

export default { onLaunch: function() { if (plus.os.name == 'Android') { plus.android.requestPermissions( [ // 'android.permission.ACCESS_WIFI_STATE', //手动 挂断和接听 需要这个权限 // "android.permission.MODIFY_AUDIO_SETTINGS", //手动 挂断和接听 需要这个权限 // "android.permission.CALL_PHONE", //手动 挂断和接听 需要这个权限 // "android.permission.READ_PHONE_STATE", //>监听电话状态 需要这个权限 // "android.permission.READ_CALL_LOG",//获取号码需要这个权限 "android.permission.RECORD_AUDIO", // 录音权限 "android.permission.CAPTURE_AUDIO_OUTPUT", // 录音权限 // "android.permission.READ_CONTACTS" //获取联系人 '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", // 录音权限, "android.permission.READ_EXTERNAL_STORAGE", "android.permission.WRITE_EXTERNAL_STORAGE", "android.permission.RECORD_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); }); } }, onShow: function() { console.log('App Show') }, onHide: function() { console.log('App Hide') } } /*每个页面公共css */

当前页面index.vue:

开始录音 结束录音 播放录音 const recorderManager = uni.getRecorderManager(); const innerAudioContext = uni.createInnerAudioContext(); innerAudioContext.autoplay = true; export default { data() { return { text: 'uni-app', voicePath: '' } }, onLoad() { 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(); }, methods: { start() { console.log('2、通话存在') // 延迟录音 this.start_time = Math.round(new Date().getTime() / 1000); recorderManager.start(); }, end() { console.log("3、电话挂断,上传录音") // 结束录音 recorderManager.stop(); }, playVoice() { console.log(this.voicePath) // if (this.voicePath) { innerAudioContext.src = this.voicePath; console.log("播放录音") innerAudioContext.play(); }, 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(); break; } } }); let IntentFilter = plus.android.importClass('android.content.IntentFilter'); let filter = new IntentFilter(); filter.addAction(telephonyManager.ACTION_PHONE_STATE_CHANGED); maintest.registerReceiver(receiver, filter); } } } .content { display: flex; flex-direction: column; align-items: center; justify-content: center; } .logo { height: 200rpx; width: 200rpx; margin-top: 200rpx; margin-left: auto; margin-right: auto; margin-bottom: 50rpx; } .text-area { display: flex; justify-content: center; } .title { font-size: 36rpx; color: #8f8f94; }


【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


图片新闻

实验室药品柜的特性有哪些
实验室药品柜是实验室家具的重要组成部分之一,主要
小学科学实验中有哪些教学
计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
实验室各种仪器原理动图讲
1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
高中化学常见仪器及实验装
1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
微生物操作主要设备和器具
今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
浅谈通风柜使用基本常识
 众所周知,通风柜功能中最主要的就是排气功能。在

专题文章

    CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭