站長資訊網(wǎng)
        最全最豐富的資訊網(wǎng)站

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

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

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

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

        最近需要實現(xiàn)一個通過 uniapp 調(diào)用手機撥打電話的功能,撥打之后同時錄音,掛斷電話之后將錄音文件進(jìn)行上傳,現(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、電話掛斷,上傳錄音")                     // 結(jié)束錄音                     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); },
        登錄后復(fù)制

        需要申請的權(quán)限,可以放到 App.vue 中

        if (plus.os.name == 'Android') {       plus.android.requestPermissions(          ['android.permission.ANSWER_PHONE_CALLS',//手動 掛斷和接聽 需要這個權(quán)限           "android.permission.MODIFY_AUDIO_SETTINGS",//手動 掛斷和接聽 需要這個權(quán)限           "android.permission.CALL_PHONE",//手動 掛斷和接聽 需要這個權(quán)限           "android.permission.READ_PHONE_STATE",//>監(jiān)聽電話狀態(tài) 需要這個權(quán)限           "android.permission.READ_CALL_LOG",//獲取號碼需要這個權(quán)限           "android.permission.READ_AUDIO" // 錄音權(quán)限           ],       function(resultObj) {           var result = 0;           for (var i = 0; i < resultObj.granted.length; i++) {           var grantedPermission = resultObj.granted[i];           console.log('已獲取的權(quán)限:' + grantedPermission);           result = 1       }       for (var i = 0; i < resultObj.deniedPresent.length; i++) {           var deniedPresentPermission = resultObj.deniedPresent[i];           console.log('拒絕本次申請的權(quán)限:' + deniedPresentPermission);           result = 0       }       for (var i = 0; i < resultObj.deniedAlways.length; i++) {           var deniedAlwaysPermission = resultObj.deniedAlways[i];           console.log('永久拒絕申請的權(quán)限:' + deniedAlwaysPermission);           result = -1       }      },  function(error) {           console.log('申請權(quán)限錯誤:' + error.code + " = " + error.message);      } ); }
        登錄后復(fù)制

        注意點

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

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

        推薦學(xué)習(xí):《uni-app視頻教程》

        贊(0)
        分享到: 更多 (0)
        網(wǎng)站地圖   滬ICP備18035694號-2    滬公網(wǎng)安備31011702889846號
        主站蜘蛛池模板: 精品无码人妻夜人多侵犯18| 国产精品女同久久久久电影院| 久久成人精品| 欧美精品色精品一区二区三区| 欧美精品一区二区蜜臀亚洲| 99久久夜色精品国产网站| 无码精品A∨在线观看中文| 国产精品成人久久久久久久| 国产精品一区二区av| 久久久久久国产精品美女| 精品三级在线观看| 亚洲AV永久无码精品网站在线观看| 国产精品 码ls字幕影视| 国产亚洲欧美精品久久久| 亚洲无码日韩精品第一页| 国产精品视频九九九| 国产成人A人亚洲精品无码| 亚洲精品国产日韩无码AV永久免费网| 777欧美午夜精品影院| HEYZO无码综合国产精品227| 亚洲国产精品自在拍在线播放| 国产精品偷伦视频免费观看了 | 久久亚洲中文字幕精品一区| 久久精品免费观看| 国产精品无码日韩欧| 无码少妇精品一区二区免费动态| 久久精品国产精品亚洲下载| 精品久久久久久亚洲| 国产精品99精品久久免费| 中文字幕精品亚洲无线码二区 | 精品久久久久国产免费| 91午夜精品亚洲一区二区三区| 97久久超碰国产精品旧版| 久久精品国产亚洲av高清漫画| 亚洲AⅤ永久无码精品AA| 国产精品99久久久久久宅男| 久久99国产精品久久99| 2018国产精华国产精品| 精品乱码久久久久久久| 亚洲午夜精品一级在线播放放| 欧美激情精品久久久久久|