| | |
| | | import {onHide, onLoad, onShow} from "@dcloudio/uni-app"; |
| | | import WebViewPlus from "@/components/WebViewPlus.vue"; |
| | | import {getWebViewUrl} from "@/utils/index.js"; |
| | | import Recorder from "js-audio-recorder"; |
| | | import dayjs from "dayjs"; |
| | | import {startVoice} from "@/api/drone.js"; |
| | | import {showToast} from "@dcloudio/uni-h5"; |
| | | |
| | | const viewUrl = ref('') |
| | | const wayLineJodInfoId = ref(null) |
| | | function onPostMessage(event) { |
| | | const startState = ref('0') |
| | | let recorder |
| | | const soundVideoName = ref('') // 喊话名称 |
| | | soundVideoName.value = `${dayjs().format('YYYYMMDDHHmmss')}实时喊话` |
| | | |
| | | const viewUrl = computed(()=>{ |
| | | return getWebViewUrl('/DroneConsole', { |
| | | wayLineJodInfoId: wayLineJodInfoId.value, |
| | | startState: startState.value |
| | | }) |
| | | }) |
| | | |
| | | function onPostMessage(data) { |
| | | if (data.type === 'record') { |
| | | startState.value = 1 |
| | | recorder = new Recorder({ |
| | | sampleBits: 16, // 采样位数,支持8或16,默认16 |
| | | sampleRate: 16000, // 采样率,支持11025、16000、22050、24000、44100、48000 |
| | | numChannels: 1, // 声道,支持1或2,默认1 |
| | | }) |
| | | nextTick(() => { |
| | | recorder.start().then(() => { |
| | | recorder.onprocess = duration => { |
| | | } |
| | | }) |
| | | }) |
| | | }else if (data.type === 'stopRecord') { |
| | | startState.value = '2' |
| | | recorder.stop() |
| | | }else if(data.type === 'trialListening'){ |
| | | recorder.play() |
| | | }else if (data.type === 'resetRecording'){ |
| | | startState.value = '0' |
| | | recorder?.destroy().then(() => { |
| | | recorder = null // 释放资源 |
| | | }) |
| | | }else if(data.type === 'pushToDrone'){ |
| | | pushToDrone() |
| | | } |
| | | } |
| | | |
| | | // 无人机开始喊话 |
| | | function pushToDrone() { |
| | | let formData = new FormData() |
| | | const wavBlob = recorder.getWAVBlob() |
| | | const wavform = new File([wavBlob], new Date().getTime() + '.wav') |
| | | formData.append('file', wavform) |
| | | formData.append('sn', dockSn.value) |
| | | formData.append('psdk_index', 2) |
| | | formData.append('name', soundVideoName.value) |
| | | formData.append('volumn', 100) |
| | | startVoice(formData).then(res => { |
| | | showToast('喊话成功') |
| | | }) |
| | | } |
| | | |
| | | onLoad((options) => { |
| | | wayLineJodInfoId.value = options.wayLineJodInfoId |
| | | viewUrl.value = getWebViewUrl('/DroneConsole', {wayLineJodInfoId: wayLineJodInfoId.value}) |
| | | }) |
| | | |
| | | |