HarmonyOS 鸿蒙Next中webview类型游戏关闭音乐时会触发取消屏幕常亮,如何解决?

HarmonyOS 鸿蒙Next中webview类型游戏关闭音乐时会触发取消屏幕常亮,如何解决?

3 回复

5.0.4(16) Release以上已修复该Bug

更多关于HarmonyOS 鸿蒙Next中webview类型游戏关闭音乐时会触发取消屏幕常亮,如何解决?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next中,WebView游戏关闭音乐触发取消屏幕常亮的问题,可通过以下方式解决:

  1. 在config.json中配置"keepScreenOn"为true,保持屏幕常亮:
"abilities": [
  {
    "configChanges": ["screenOrientation"],
    "keepScreenOn": true
  }
]
  1. 在WebView所在Ability中调用setKeepScreenOn方法:
import featureAbility from '@ohos.ability.featureAbility';
featureAbility.getWindow().then(window => {
  window.setKeepScreenOn(true);
});

注意:需确保WebView音频事件不会影响屏幕常亮设置。

在HarmonyOS Next中,WebView游戏关闭音乐时触发屏幕常亮取消的问题,可能是由于音频焦点变化导致的系统行为。可以通过以下方式解决:

  1. 在WebView加载的页面中,确保音频播放结束时不会主动释放WakeLock:
// 在游戏代码中保持屏幕常亮
if ('wakeLock' in navigator) {
    let wakeLock = null;
    async function requestWakeLock() {
        try {
            wakeLock = await navigator.wakeLock.request('screen');
        } catch (err) {
            console.error('WakeLock获取失败:', err);
        }
    }
    requestWakeLock();
}
  1. 在Java/ArkTS端通过PowerManager保持屏幕常亮:
import power from '@ohos.power';
// 获取PowerManager实例
let powerManager = power.createPowerManager();
// 保持屏幕常亮
powerManager.setWakeLock(power.WakeLockType.PARTIAL, "MyWebViewGame");
  1. 检查WebView设置,确保没有关联音频状态与屏幕状态:
webController.setWebSettings({
    // 其他设置...
    mediaPlaybackRequiresUserGesture: false // 根据实际需求调整
});
  1. 在音频暂停/停止事件中手动维持WakeLock状态,避免因音频状态变化影响屏幕常亮。

建议先检查游戏代码中的音频管理逻辑,确保关闭音乐时不会意外触发系统休眠策略。如果问题仍然存在,可以结合上述方法在应用层维持屏幕常亮状态。

回到顶部