handleInitAudio(src: string) { const audioContext = wx.createInnerAudioContext(); innerAudioContextRef.current = audioContext; audioContext.src = src //解决真机无法获取音频时长,被迫用这么**的写法 audioContext.autoplay = false; const switchAudioPlay = setInterval(() => { audioContext.play(); audioContext.pause(); }, 100) audioContext.onPlay(() => { const getDuration = setInterval(() => { if (audioContext.duration > 0) { const durationStr = this.parseTime(audioContext.duration) this.setData({ durationStr, remainTimeStr: durationStr }) clearInterval(getDuration); clearInterval(switchAudioPlay); } }, 100) }) ... }
createInnerAudioContext 获取到duration是0,这个怎么解决?setTimeout了也是duration还是0,奇怪的是另外一个小程序同样的代码,同样的环境是可以获取到的 var src ='share/static/voice/openauto.wav' var innerAudioContext = wx.createInnerAudioContext() innerAudioContext.autoplay = true innerAudioContext.src = src console.log(innerAudioContext.duration); innerAudioContext.onPlay(() => { console.log('onPlay:开始播放'); }); innerAudioContext.onError((res) => { console.log("onError:" + res.errMsg); }); innerAudioContext.onCanplay(()=> { innerAudioContext.duration; setTimeout(() => {console.log(innerAudioContext.duration);}, 3000) });
03-18handleInitAudio(src: string) { const audioContext = wx.createInnerAudioContext(); innerAudioContextRef.current = audioContext; audioContext.src = src //解决真机无法获取音频时长,被迫用这么**的写法 audioContext.autoplay = false; const switchAudioPlay = setInterval(() => { audioContext.play(); audioContext.pause(); }, 100) audioContext.onPlay(() => { const getDuration = setInterval(() => { if (audioContext.duration > 0) { const durationStr = this.parseTime(audioContext.duration) this.setData({ durationStr, remainTimeStr: durationStr }) clearInterval(getDuration); clearInterval(switchAudioPlay); } }, 100) }) ... }
createInnerAudioContext获取到的duration为0呢?[图片] 使用wx.createInnerAudioContext()获取音频长度时,总是得到0,官方请帮忙解决一下吧,谢谢
03-18handleInitAudio(src: string) { const audioContext = wx.createInnerAudioContext(); innerAudioContextRef.current = audioContext; audioContext.src = src //解决真机无法获取音频时长,被迫用这么**的写法 audioContext.autoplay = false; const switchAudioPlay = setInterval(() => { audioContext.play(); audioContext.pause(); }, 100) audioContext.onPlay(() => { const getDuration = setInterval(() => { if (audioContext.duration > 0) { const durationStr = this.parseTime(audioContext.duration) this.setData({ durationStr, remainTimeStr: durationStr }) clearInterval(getDuration); clearInterval(switchAudioPlay); } }, 100) }) ... }
createInnerAudioContext生成的实例在安卓环境下不能获取到音频的时长?安卓微信版本 8.0.49 ios 机型测试没问题, 一到安卓就获取不到音频的时长,我加了循环获取也不行 getAudioInfo(url = '') { const obj = { src: url, duration: 0, } return new Promise((resolve, reject) => { const audioContext = wx.createInnerAudioContext() audioContext.src = url audioContext.onCanplay(() => { let jsTime = 5 let intervalID = setInterval(function () { if (audioContext.duration !== 0 || jsTime === 0) { obj.duration = audioContext.duration; clearInterval(intervalID); resolve(obj); audioContext.destroy(); } --jsTime }, 500); }) audioContext.onError((err) => { console.log(`发生错误:`, err) this.$message.warning('无效的音频文件') }) }) } // 函数返回的数据音频信息 {"src": "wxfile://tmp_504b6a68382d12b167a8ff05b9e0fdc1a97b727dd109579f.m4a", "duration": 0}
03-182025了还是不行
使用addMarkers添加marker的时候customCallout自定义气泡窗口不显示?用setData设置marker时候customCallout可以正常显示,但是用addMarkers这个方法去添加marker时customCallout就无法正常显示 版本库2.13.2 安卓和ios都试过有问题,编译器倒是可以正常显示
02-082025了还是不行
【map】context 的 addMarkers 添加的节点的 customCallout 无效代码在上面链接中,是这样的,我使用的是文档中 “marker 上的自定义气泡 customCallout” 附带的示例修改的,修改的内容如下: 将基础库调整为 `2.13.2`修改 `index.js` 中 `addMarker` 的代码如下:addMarker() { const markers = allMarkers this.mapCtx.addMarkers({ markers, clear: false, }) this.setData({ // markers, customCalloutMarkerIds: [2,3,4], }) }, 此时的结果为: 开发工具(1.03.2010204)中,点击添加marker按钮,没有任何反应手机端(iOS)中点击添加marker后,绿色的marker出现了,`normalCallout` 这个 marker 的 `callout` 有出现,但是其他的 `customCallout` 均未出现
02-08