From 7ae58e90cabae3d0aa04c8fed9aa4b2305201ecb Mon Sep 17 00:00:00 2001 From: lanterngamescn Date: Sat, 27 Jun 2026 18:11:02 +0800 Subject: [PATCH] =?UTF-8?q?fix(=E5=BD=95=E9=9F=B3):=20=E8=A1=A5=E6=9D=BE?= =?UTF-8?q?=E6=89=8B=E7=9E=AC=E9=97=B4=E7=A9=BA=20getaudiourl=20=E5=9B=9E?= =?UTF-8?q?=E6=8A=95(=E5=AF=B9=E9=BD=90=20Android=20reset()=E5=8F=8C?= =?UTF-8?q?=E5=9B=9E=E6=8A=95)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 原工程 webviewActivity/NewwebviewActivity 正常发送=upload()后紧跟reset(), reset()立刻回投 getaudiourl{audiourl:"",time:0},上传完成再回投真实URL。 我们漏了松手那次空回投,H5状态机未复位致录完不播放。改为任何结束都先空回投, send 再补真实URL;上传失败不再重复空回投(已发过)。 Co-Authored-By: Claude Opus 4.8 (1M context) --- .../src/main/ets/providers/AudioProvider.ets | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/feature_capabilities/src/main/ets/providers/AudioProvider.ets b/feature_capabilities/src/main/ets/providers/AudioProvider.ets index 15aa041..3544a42 100644 --- a/feature_capabilities/src/main/ets/providers/AudioProvider.ets +++ b/feature_capabilities/src/main/ets/providers/AudioProvider.ets @@ -374,20 +374,22 @@ export class AudioProvider implements CapabilityProvider { const r: RecordResult | undefined = p as RecordResult | undefined; const action: string = r !== undefined ? r.action : 'cancel'; const timeSec: number = r !== undefined ? r.timeSec : 0; + // 对齐 Android reset():任何结束(发送/取消/太短)松手瞬间都先立刻回投一次空 getaudiourl, + // H5 录音状态机据此复位;正常发送再在上传完成后补发真实 URL(复刻 Android upload()+reset() 双回投)。 + // 缺这次空回投会导致 H5 收到真实 URL 也不处理 → 录完不播放。 + this.emitAudioUrl('', 0); if (action === 'send') { const key: string = this.recorder.key(); this.recorder.stop().then((filePath: string) => this.doUpload(filePath, key, timeSec)); } else { this.recorder.cancel(); - this.emitAudioUrl('', 0); } } private async doUpload(filePath: string, key: string, timeSec: number): Promise { const ctx: common.UIAbilityContext | undefined = this.context; if (ctx === undefined || filePath === '') { - this.emitAudioUrl('', 0); - return; + return; // 已发过空回投(reset 语义);上传不了则保持"无语音" } try { const token: string = await QiniuToken.uploadToken(); @@ -400,12 +402,10 @@ export class AudioProvider implements CapabilityProvider { if (ok) { this.emitAudioUrl(`http://gameaudio.daoqi88.cn/${key}`, timeSec); } else { - this.log.w(`qiniu upload failed key=${key}`); - this.emitAudioUrl('', 0); + this.log.w(`qiniu upload failed key=${key}`); // 已发空回投,不再重复 } } catch (e) { - this.log.w(`upload error: ${(e as BusinessError).message}`); - this.emitAudioUrl('', 0); + this.log.w(`upload error: ${(e as BusinessError).message}`); // 已发空回投,不再重复 } }