欧美亚洲中文,在线国自产视频,欧洲一区在线观看视频,亚洲综合中文字幕在线观看

      1. <dfn id="rfwes"></dfn>
          <object id="rfwes"></object>
        1. 站長資訊網(wǎng)
          最全最豐富的資訊網(wǎng)站

          實例詳解uniapp如何實現(xiàn)電話錄音功能(附代碼)

          本篇文章給大家?guī)砹岁P于uniapp的相關知識,其中主要介紹了怎么用uniapp實現(xiàn)撥打電話并且還能同步錄音的功能,感興趣的朋友一起來看一下吧,希望對大家有幫助。

          實例詳解uniapp如何實現(xiàn)電話錄音功能(附代碼)

          uniapp 實現(xiàn)打電話錄音功能

          最近需要實現(xiàn)一個通過 uniapp 調(diào)用手機撥打電話的功能,撥打之后同時錄音,掛斷電話之后將錄音文件進行上傳,現(xiàn)在將幾個核心代碼分享給大家!

          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; //電話狀態(tài) 0->空閑狀態(tài) 1->振鈴狀態(tài) 2->通話存在             switch (phoneStatus) {                 case 0:                     console.log("3、電話掛斷,上傳錄音")                     // 結束錄音                     recorderManager.stop();                     break;                 case 1:                     // console.log('1、振鈴狀態(tài)');                     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",//>監(jiān)聽電話狀態(tài) 需要這個權限           "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);      } ); }
          登錄后復制

          注意點

          • 調(diào)試模式下可以正常監(jiān)聽通話掛斷并且上傳文件的,但是打包之后就失效?

          一般的手機打包是可以正常使用的,我用的是 oneplus7 , 打包后安裝正常使用,部分手機需要到系統(tǒng)設置的權限中,將應用的【開啟手機設備狀態(tài)碼】進行開啟即可,目前遇到的就這個。

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

          贊(0)
          分享到: 更多 (0)
          網(wǎng)站地圖   滬ICP備18035694號-2    滬公網(wǎng)安備31011702889846號