站長資訊網
        最全最豐富的資訊網站

        實例詳解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 , 打包后安裝正常使用,部分手機需要到系統設置的權限中,將應用的【開啟手機設備狀態碼】進行開啟即可,目前遇到的就這個。

        推薦學習:《uni-app視頻教程》

        贊(0)
        分享到: 更多 (0)
        網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
        主站蜘蛛池模板: 99热热久久这里只有精品68| 久久激情亚洲精品无码?V| 欧美精品在线一区二区三区| 亚洲国产精品日韩| 国产乱人伦精品一区二区在线观看 | 99精品国产在热久久| 一本一道久久a久久精品综合| 99久久国产综合精品五月天喷水| AAA级久久久精品无码片| 亚洲国产精品无码久久久蜜芽| 久久99精品九九九久久婷婷| 92精品国产自产在线观看| 2021最新国产精品网站| 人妻少妇偷人精品无码| 亚洲日韩国产精品乱| 色哟哟国产精品免费观看| 免费看一级毛片在线观看精品视频| 国产精品99久久不卡| 91精品国产高清久久久久久国产嫩草| 国产成人精品久久免费动漫| 国产成人精品日本亚洲网站| 久久国产亚洲精品无码| 无码人妻精品一区二区三| 一级A毛片免费观看久久精品| 午夜精品久久影院蜜桃| 亚洲av午夜精品一区二区三区 | 国产天天综合永久精品日| 囯产精品一区二区三区线| 久久国产精品久久国产精品| 久久精品一区二区国产| 亚洲国产精品国自产拍电影| 久久99国产精品二区不卡| 国产精品成人不卡在线观看| 国产精品第13页| 日韩精品国产自在久久现线拍| 九九热这里只有在线精品视| 日韩一级精品视频在线观看| 久久精品国产亚洲AV香蕉| 999精品视频| 无码人妻精品一区二区三区99不卡| 精品国精品国产自在久国产应用男|