• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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```