# Power Manager
The Power Manager module provides APIs for rebooting and shutting down the system, as well as querying the screen status.
> **NOTE**
> The initial APIs of this module are supported since API version 7. Newly added APIs will be marked with a superscript to indicate their earliest API version.
## Modules to Import
```js
import power from '@ohos.power';
```
## power.shutdownDevice
shutdownDevice(reason: string): void
Shuts down the system.
This is a system API and cannot be called by third-party applications.
**Required permission**: ohos.permission.REBOOT
**System capability:** SystemCapability.PowerManager.PowerManager.Core
**Parameters**
| Name | Type | Mandatory | Description |
| ------ | ------ | ---- | ----- |
| reason | string | Yes | Reason for system shutdown.|
**Example**
```js
power.shutdownDevice("shutdown_test");
console.info('power_shutdown_device_test success')
```
## power.rebootDevice
rebootDevice(reason: string): void
Reboots the system.
**Required permission**: ohos.permission.REBOOT
**System capability:** SystemCapability.PowerManager.PowerManager.Core
**Parameters**
| Name | Type | Mandatory | Description |
| ------ | ------ | ---- | ----- |
| reason | string | Yes | Reason for system reboot.|
**Example**
```js
power.rebootDevice("reboot_test");
console.info('power_reboot_device_test success')
```
## power.isScreenOn
isScreenOn(callback: AsyncCallback<boolean>): void
Checks the screen status of the current device.
**System capability:** SystemCapability.PowerManager.PowerManager.Core
**Parameters**
| Name | Type | Mandatory | Description |
| -------- | ---------------------------- | ---- | ---------------------------------------- |
| callback | AsyncCallback<boolean> | Yes | Callback used to obtain the return value.
Return value: The value **true** indicates that the screen is on, and the value **false** indicates the opposite.|
**Example**
```js
power.isScreenOn((error, screenOn) => {
if (typeof error === "undefined") {
console.info('screenOn status is ' + screenOn);
} else {
console.log('error: ' + error);
}
})
```
## power.isScreenOn
isScreenOn(): Promise<boolean>
Checks the screen status of the current device.
**System capability:** SystemCapability.PowerManager.PowerManager.Core
**Return value**
| Type | Description |
| ---------------------- | --------------------------------------- |
| Promise<boolean> | Promise used to obtain the return value.
Return value: The value **true** indicates that the screen is on, and the value **false** indicates the opposite.|
**Example**
```js
power.isScreenOn()
.then(screenOn => {
console.info('screenOn status is ' + screenOn);
})
.catch(error => {
console.log('error: ' + error);
})
```
## power.wakeupDevice9+
wakeupDevice(detail: string): void
Wakes up a device.
This is a system API and cannot be called by third-party applications.
**System capability:** SystemCapability.PowerManager.PowerManager.Core
**Parameters**
| Name| Type | Mandatory| Description |
| ------ | ------ | ---- | ---------- |
| detail | string | Yes | Reason for wakeup.|
**Example**
```js
power.wakeupDevice("application");
console.info('power_wakeup_device_test success')
```
## power.suspendDevice9+
suspendDevice(): void
Hibernates a device.
This is a system API and cannot be called by third-party applications.
**System capability:** SystemCapability.PowerManager.PowerManager.Core
**Example**
```js
power.suspendDevice();
console.info('power_suspend_device_test success')
```
## power.getPowerMode9+
getPowerMode(callback: AsyncCallback<DevicePowerMode>): void
Obtains the power mode of this device.
**Required permission**: ohos.permission.POWER_OPTIMIZATION
**System capability:** SystemCapability.PowerManager.PowerManager.Core
**Parameters**
| Name | Type | Mandatory| Description |
| -------- | ------------------------------------ | ---- | ------------------------------------------------------------ |
| callback | AsyncCallback<DevicePowerMode> | Yes | Callback used to obtain the return value.
Return value: [DevicePowerMode](#devicepowermode9)|
**Example**
```js
power.getPowerMode((error, mode) => {
if (typeof error === "undefined") {
console.info('power mode is ' + mode);
} else {
console.log('error: ' + error);
}
})
```
## power.getPowerMode9+
getPowerMode(): Promise<DevicePowerMode>
Obtains the power mode of this device.
**Required permission**: ohos.permission.POWER_OPTIMIZATION
**System capability:** SystemCapability.PowerManager.PowerManager.Core
**Return value**
| Type | Description |
| ------------------------------ | ------------------------------------------------------------ |
| Promise<DevicePowerMode> | Promise used to obtain the return value.
Return value: [DevicePowerMode](#devicepowermode9)|
**Example**
```js
power.getPowerMode()
.then(mode => {
console.info('power mode is ' + mode);
})
.catch(error => {
console.log('error: ' + error);
})
```
## power.setPowerMode9+
setPowerMode(mode: DevicePowerMode, callback: AsyncCallback<void>): void
Sets the power mode of this device.
This is a system API and cannot be called by third-party applications.
**Required permission**: ohos.permission.POWER_OPTIMIZATION
**System capability:** SystemCapability.PowerManager.PowerManager.Core
**Parameters**
| Name | Type | Mandatory| Description |
| -------- | ------------------------------------ | ---- | ------------------------ |
| mode | [DevicePowerMode](#devicepowermode9) | Yes | Power mode. |
| callback | AsyncCallback<void> | Yes | Callback used to return the result.|
**Example**
```js
power.setPowerMode(power.DevicePowerMode.MODE_PERFORMANCE, error => {
if (typeof error === "undefined") {
console.info('set power mode to MODE_PERFORMANCE');
} else {
console.log('error: ' + error);
}
})
```
## power.setPowerMode9+
setPowerMode(mode: DevicePowerMode): Promise<void>
Sets the power mode of this device.
This is a system API and cannot be called by third-party applications.
**Required permission**: ohos.permission.POWER_OPTIMIZATION
**System capability:** SystemCapability.PowerManager.PowerManager.Core
**Parameters**
| Name| Type | Mandatory| Description |
| ------ | ------------------------------------ | ---- | ---------- |
| mode | [DevicePowerMode](#devicepowermode9) | Yes | Power mode.|
**Return value**
| Type | Description |
| ------------------- | ------------- |
| Promise<void> | Promise used to return the result.|
**Example**
```js
power.setPowerMode(power.DevicePowerMode.MODE_PERFORMANCE)
.then(() => {
console.info('set power mode to MODE_PERFORMANCE');
})
.catch(error => {
console.log('error: ' + error);
})
```
## DevicePowerMode9+
Enumerates power modes.
**System capability:** SystemCapability.PowerManager.PowerManager.Core
| Name | Default Value| Description |
| ----------------------- | ------ | ---------------------- |
| MODE_NORMAL | 600 | Standard mode. It is the default value.|
| MODE_POWER_SAVE | 601 | Power saving mode. |
| MODE_PERFORMANCE | 602 | Performance mode. |
| MODE_EXTREME_POWER_SAVE | 603 | Ultra power saving mode. |