HarmonyOS 鸿蒙Next web组件嵌套H5页面二维码加载后调整屏幕亮度

发布于 1周前 作者 wuwangju 来自 鸿蒙OS

HarmonyOS 鸿蒙Next web组件嵌套H5页面二维码加载后调整屏幕亮度

web组件里面嵌套的H5页面中有二维码,有没有办法在二维加载出来后,同事控制调整手机屏幕的亮度,使得更加亮一些二呢

2 回复
可以在H5加载二维码时调用ArkTS方法,调整屏幕亮度,具体可参考API:
Web:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/web-in-page-app-function-invoking-V5
设置屏幕亮度:https://developer.huawei.com/consumer/cn/doc/harmonyos-faqs-V5/faqs-arkui-132-V5

//index.ets
import { window } from '@kit.ArkUI'
import { webview } from '@kit.ArkWeb';

@Entry
@Component
struct Index{
  @State message: string = 'Hello World';
  webviewController: webview.WebviewController = new webview.WebviewController();
  @State testObj: testClass = new testClass();

  build() {
    Column() {
      Web({src:$rawfile("test.html"), controller: this.webviewController})
        // 将对象注入到web端
        .javaScriptProxy({
          object: this.testObj,
          name: "testObjName",
          methodList: ["changeBright"],
          controller: this.webviewController
        })
    }
    .height('100%')
    .width('100%')
  }
}


class testClass {
  windowStage: window.WindowStage = AppStorage.get('windowStage') as window.WindowStage;
  // 获取主窗口的方式
  mainWin: window.Window = this.windowStage.getMainWindowSync();

  constructor() {
  }

  changeBright() {
    // 修改brightness即可改变屏幕亮度
    let brightness = 1;
    this.windowStage = AppStorage.get('windowStage') as window.WindowStage;
    // 获取主窗口的方式
    this.mainWin = this.windowStage.getMainWindowSync();
    // 获取最上层窗口的方式
    window.getLastWindow(getContext(this));
    try {
      this.mainWin.setWindowBrightness(brightness, (err) => {
        if (err.code) {
          console.error('Failed to set the brightness. Cause: ' + JSON.stringify(err));
          return;
        }
        console.info('Succeeded in setting the brightness.');
      });
    } catch (exception) {
      console.error('Failed to set the brightness. Cause: ' + JSON.stringify(exception));
    }
  }
}

h5:
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>基础HTML页面</title>
    <!-- 可以在这里添加CSS样式或JavaScript脚本的链接 -->
</head>
<body>
<script>
    function callArkTS() {
        testObjName.changeBright();
<!--        document.getElementById("demo").innerHTML = str;-->
<!--        console.info('ArkTS Hello World! :' + str);-->
    }
</script>
<h1>欢迎来到我的网站</h1>
<p>这是一个基础的HTML页面示例。</p>

<div>
<!--    <p style="width:200px;height:100px;font-size:15px" id="demo1">demo</p>-->
    <button style="width:200px;height:50px" onclick="callArkTS()">changeBright</button>
</div>
</br>
<form style="height:200px">
    <label for="username1">用户名:</label>
    <input type="text" id="username1" name="username" placeholder="请输入用户名"></br>

    <label for="password1">密码:</label>
    <input type="password" id="password1" name="password" placeholder="请输入密码"></br>

    <input type="submit" value="提交">
</form>

<!-- 可以在这里添加更多的HTML内容 -->
</body>
</html>

针对HarmonyOS 鸿蒙Next中web组件嵌套H5页面二维码加载后调整屏幕亮度的问题,作为IT专家,提供以下解决方案:

HarmonyOS 鸿蒙Next系统允许通过编程方式调整屏幕亮度。开发者可以利用ArkUI的window模块中的setWindowBrightness方法,异步设置窗口的亮度值,取值范围为0.0~1.0,1.0表示最亮。在二维码加载完成后,可通过此方法将屏幕亮度调整至所需亮度。

需要注意的是,HarmonyOS 鸿蒙Next系统并未直接支持通过音量键或触摸屏侧边滑动来调整屏幕亮度。此外,在应用中如果一个页面调节了亮度,在页面返回后,如果没有做恢复操作,跳转或返回到其他页面后还会保持该亮度,这可能导致页面亮度和预期不符。因此,开发者在调整亮度后,应在页面隐藏或跳转时恢复默认亮度。

如果通过上述方法仍无法解决问题,可能是系统或硬件层面的问题。此时,建议联系官网客服以获取进一步的帮助。官网地址是:https://www.itying.com/category-93-b0.html

回到顶部