Rumah > hujung hadapan web > uni-app > teks badan

Contoh terperinci tentang cara uniapp melaksanakan fungsi rakaman telefon (dengan kod)

藏色散人
Lepaskan: 2023-01-05 21:15:52
ke hadapan
4004 orang telah melayarinya

Artikel ini membawakan anda pengetahuan yang berkaitan tentang uniapp terutamanya cara menggunakan uniapp untuk membuat panggilan dan menyegerakkan rakaman. Saya harap ia dapat membantu semua orang.

Contoh terperinci tentang cara uniapp melaksanakan fungsi rakaman telefon (dengan kod)

uniapp merealisasikan fungsi rakaman panggilan

Baru-baru ini, saya perlu melaksanakan fungsi memanggil telefon bimbit untuk membuat panggilan melalui uniapp panggilan, ia akan merakam pada masa yang sama Selepas menutup panggilan, ia akan Memuat naik fail rakaman dan kini berkongsi beberapa kod teras dengan semua orang!

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);
},
Salin selepas log masuk

Kebenaran yang anda perlukan untuk memohon boleh diletakkan dalam 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(&#39;已获取的权限:&#39; + grantedPermission);
          result = 1
      }
      for (var i = 0; i < resultObj.deniedPresent.length; i++) {
          var deniedPresentPermission = resultObj.deniedPresent[i];
          console.log(&#39;拒绝本次申请的权限:&#39; + deniedPresentPermission);
          result = 0
      }
      for (var i = 0; i < resultObj.deniedAlways.length; i++) {
          var deniedAlwaysPermission = resultObj.deniedAlways[i];
          console.log(&#39;永久拒绝申请的权限:&#39; + deniedAlwaysPermission);
          result = -1
      }
     },  function(error) {
          console.log(&#39;申请权限错误:&#39; + error.code + " = " + error.message);
     } );
}
Salin selepas log masuk

Nota

  • Dalam mod nyahpepijat, adalah mungkin untuk memantau penutupan panggilan dan memuat naik fail seperti biasa, tetapi adakah ia menjadi tidak sah selepas pembungkusan?

Pembungkusan telefon mudah alih umum boleh digunakan seperti biasa. Selepas pembungkusan, ia boleh dipasang dan digunakan seperti biasa tukar aplikasi [Buka telefon [Kod Status Peranti] Hidupkan sahaja Ini yang saya temui setakat ini.

Pembelajaran yang disyorkan: "tutorial video uni-app"

Atas ialah kandungan terperinci Contoh terperinci tentang cara uniapp melaksanakan fungsi rakaman telefon (dengan kod). Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:learnku.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!