1## 保持屏幕常亮 2 3### 场景说明 4 5在使用开发板进行应用开发调试时,不操作屏幕一段时间后,屏幕会熄屏变黑,再操作时需要再次点亮屏幕,耗费时间不利于调试。本例将介绍如何通过窗口管理相关接口实现屏幕常亮。 6 7### 效果呈现 8 9本示例最终效果如下(在开发板中可验证实际常亮效果): 10 11![screenon](figures/screenon.gif) 12 13### 运行环境 14 15本例基于以下环境开发,开发者也可以基于其他适配的版本进行开发: 16 17- IDE:DevEco Studio 3.1 Release 18- SDK:Ohos_sdk_public 3.2.12.2 (API Version 9 Release) 19 20### 实现思路 21 22通过Window的setWindowKeepScreenOn方法,在需要时控制屏幕是否常亮,并通过Window的getWindowProperties().isKeepScreenOn查看窗口属性中屏幕常亮的状态。 23 24### 开发步骤 25 261. 构建简易界面,用于显示当前屏幕常亮的状态,并绘制按钮用于设置常亮和取消常亮。 27 28 ```ts 29 build() { 30 Row() { 31 Column() { 32 Text(this.message + this.isScreenOn) 33 ... 34 35 Button('设置常亮') 36 ... 37 .onClick(()=>{ 38 this.keepScreenOn(true) 39 }) 40 41 Button('取消常亮') 42 ... 43 .onClick(()=>{ 44 this.keepScreenOn(false) 45 }) 46 } 47 .width('100%') 48 } 49 .height('100%') 50 } 51 ``` 52 532. 获取应用上下文并通过其获取到当前窗口实例,通过窗口实例的setWindowKeepScreenOn方法控制屏幕是否常亮,并通过getWindowProperties获取窗口属性,从而查看属性中屏幕常亮状态isKeepScreenOn的取值。 54 55 ```ts 56 import common from '@ohos.app.ability.common'; 57 import window from '@ohos.window'; 58 59 private context: common.BaseContext = getContext(this) as common.BaseContext 60 61 async keepScreenOn(status) { 62 let windowClass = await window.getLastWindow(this.context) //获取窗口实例 63 await windowClass.setWindowKeepScreenOn(status) //设置窗口常亮或取消 64 this.isScreenOn = await windowClass.getWindowProperties().isKeepScreenOn//查看屏幕常亮状态 65 } 66 ``` 67 68### 完整代码 69 70通过上述步骤可以完成整个示例的开发,完整代码如下: 71 72```ts 73import common from '@ohos.app.ability.common'; 74import window from '@ohos.window'; 75 76@Entry 77@Component 78struct KeepScreenOn { 79 @State message: string = '常亮状态 : ' 80 @State isScreenOn: boolean = false 81 private context: common.BaseContext = getContext(this) as common.BaseContext 82 83 async keepScreenOn(status) { 84 let windowClass = await window.getLastWindow(this.context) //获取窗口实例 85 await windowClass.setWindowKeepScreenOn(status) //设置窗口常亮或取消 86 this.isScreenOn = await windowClass.getWindowProperties().isKeepScreenOn//查看屏幕常亮状态 87 } 88 89 build() { 90 Row() { 91 Column() { 92 Text(this.message + this.isScreenOn) 93 .fontSize(50) 94 .fontWeight(FontWeight.Bold) 95 96 Button('设置常亮') 97 .fontSize(16) 98 .height(50) 99 .width(100) 100 .borderRadius(10) 101 .margin({top:20}) 102 .backgroundColor('#A4AE77') 103 .onClick(()=>{ 104 this.keepScreenOn(true) 105 }) 106 107 Button('取消常亮') 108 .fontSize(16) 109 .height(50) 110 .width(100) 111 .borderRadius(10) 112 .margin({top:20}) 113 .backgroundColor('#A4AE77') 114 .onClick(()=>{ 115 this.keepScreenOn(false) 116 }) 117 } 118 .width('100%') 119 } 120 .height('100%') 121 } 122} 123```