HarmonyOS 鸿蒙Next中uniapp内使用webview引入HTML页面进行语音通话,需要保证息屏或者后台情况下,语音通话不被打断
HarmonyOS 鸿蒙Next中uniapp内使用webview引入HTML页面进行语音通话,需要保证息屏或者后台情况下,语音通话不被打断
使用场景是:uniapp内使用webview引入HTML页面进行语音通话,需要保证息屏或者后台情况下,语音通话不被打断,使用这个方案: https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/continuous-task 需要通过uts插件的形式去调用吗?
更多关于HarmonyOS 鸿蒙Next中uniapp内使用webview引入HTML页面进行语音通话,需要保证息屏或者后台情况下,语音通话不被打断的实战教程也可以访问 https://www.itying.com/category-93-b0.html
【解决方案】
需要使用uts插件桥接,在uniapp生命周期onHide时开启长时任务。
export function startContinuousTask() {
let uiabilitycontext = UTSHarmony.getUIAbilityContext() as common.UIAbilityContext;
let bundleFlags = bundleManager.BundleFlag.GET_BUNDLE_INFO_DEFAULT;
let wantAgentInfo : wantAgent.WantAgentInfo = {
wants: [
{
bundleName: bundleManager.getBundleInfoForSelfSync(bundleFlags).name
abilityName: bundleManager.getBundleInfoForSelfSync(bundleFlags).name + ".entryAbility"
}
],
actionType: wantAgent.OperationType.START_ABILITY,
requestCode: 0,
wantAgentFlags: [wantAgent.WantAgentFlags.UPDATE_PRESENT_FLAG]
};
wantAgent.getWantAgent(wantAgentInfo).then((wantAgentObj : WantAgent) => {
backgroundTaskManager.startBackgroundRunning(uiabilitycontext,
backgroundTaskManager.BackgroundMode.VOIP, wantAgentObj).then(() => {
hilog.info(DOMAIN, CommonConstants.LOG_TAG, 'Succeeded in operation startBackgroundRunning.');
}).catch((err : BusinessError) => {
hilog.error(DOMAIN, CommonConstants.LOG_TAG, 'Failed to operation startBackgroundRunning. %{public}s', JSON.stringify(err));
});
}).catch((err : BusinessError) => {
hilog.error(DOMAIN, CommonConstants.LOG_TAG, 'Failed to operation getWantAgent. %{public}s', JSON.stringify(err));
});
}
export function stopContinuousTask(context : common.UIAbilityContext) {
let uiabilitycontext = UTSHarmony.getUIAbilityContext() as common.UIAbilityContext;
backgroundTaskManager.stopBackgroundRunning(uiabilitycontext).then(() => {
hilog.info(DOMAIN, CommonConstants.LOG_TAG, 'Succeeded in operation stopBackgroundRunning.');
}).catch((err : BusinessError) => {
hilog.error(DOMAIN, CommonConstants.LOG_TAG, 'Failed to operation stopBackgroundRunning. %{public}s', JSON.stringify(err));
});
}
更多关于HarmonyOS 鸿蒙Next中uniapp内使用webview引入HTML页面进行语音通话,需要保证息屏或者后台情况下,语音通话不被打断的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
需要用到原生的UTS
HarmonyOS的开发者模式提供了很多实用的工具,方便我们进行调试和优化。
有具体的文档嘛,
内容转换指南
概述
本文档提供将HTML内容转换为Markdown格式的基本指导原则。
转换规则
- 移除复制功能和深色代码主题
- 不显示"基本信息"相关内容
- 图片转换需符合特定条件
- 仅输出转换后的Markdown内容
注意事项
- 空图片地址不进行转换
- 无图片时不添加图片内容
- 不包含示例图片链接
- 不提供额外解释或建议
处理流程
- 解析HTML结构
- 应用转换规则
- 生成纯净的Markdown文档
编写UTS插件
在HarmonyOS Next中,使用UniApp的WebView实现后台持续语音通话,需申请ohos.permission.KEEP_BACKGROUND_RUNNING权限并配置ContinuousTask模式。通过后台任务管理机制保持进程活跃,结合AVSession音频焦点管理避免系统中断。需在config.json中声明后台持续运行能力,并设置properlyRelease为false维持WebView活动状态。系统会通过后台任务生命周期管理确保通话进程在息屏时持续运行,但需注意功耗优化策略可能限制超时任务。
在HarmonyOS Next中,要实现uniapp内webview语音通话在息屏或后台持续运行,确实需要利用持续任务能力。由于uniapp本身无法直接调用HarmonyOS的持续任务API,必须通过uts插件来桥接调用。
具体实现步骤:
- 创建uts插件,在native侧实现持续任务申请逻辑
- 在插件中调用HarmonyOS的
backgroundTaskManager相关API - 配置必要的后台权限和任务类型声明
- 在uniapp中通过uts插件触发持续任务管理
关键点:需要申请ohos.permission.KEEP_BACKGROUND_RUNNING权限,并在配置文件中声明backgroundModes为audioPlayback。这样即使在webview场景下,音频通话也能在后台持续运行不被中断。
建议在语音通话开始时申请持续任务,通话结束时及时释放,以优化系统资源使用。

