Added in [version 33.2](https://developer.android.com/topic/libraries/support-library/revisions) Summary: [Constants](https://developer.android.com/reference/com/google/wear/modes/BatterySaverMode#constants) \| [Methods](https://developer.android.com/reference/com/google/wear/modes/BatterySaverMode#pubmethods) \| [Inherited Methods](https://developer.android.com/reference/com/google/wear/modes/BatterySaverMode#inhmethods)

# BatterySaverMode


`
public


class
BatterySaverMode
`


`

extends Object


`

`


`

|---|---|
| java.lang.Object ||
| ↳ | com.google.wear.modes.BatterySaverMode |

<br />

*** ** * ** ***

Battery Saver Mode on Wear attempts to reduce battery consumption. It may disable ambient mode, tilt
to wake, etc.

This class provides an object to interact with the configured and active levels of bedtime
mode.

The supported levels of battery saver mode are:

- `https://developer.android.com/reference/com/google/wear/modes/BatterySaverMode#BATTERY_SAVER_LEVEL_OFF`
- `https://developer.android.com/reference/com/google/wear/modes/BatterySaverMode#BATTERY_SAVER_LEVEL_NORMAL`

An instance of this class can be obtained by `https://developer.android.com/reference/com/google/wear/modes/ModeManager#getBatterySaverMode()` API.

## Summary

| ### Constants ||
|---|---|
| `int` | `https://developer.android.com/reference/com/google/wear/modes/BatterySaverMode#BATTERY_SAVER_LEVEL_NORMAL` This battery saver mode level indicates normal battery saver mode is enabled. |
| `int` | `https://developer.android.com/reference/com/google/wear/modes/BatterySaverMode#BATTERY_SAVER_LEVEL_OFF` This battery saver mode level indicates battery saver mode is off. |

| ### Public methods ||
|---|---|
| ` void` | ` https://developer.android.com/reference/com/google/wear/modes/BatterySaverMode#addActiveLevelListener(java.util.concurrent.Executor,%20java.util.function.Consumer<java.lang.Integer>)(Executor executor, Consumer<Integer> listener) ` Adds a listener to listen for the changes in the active level of battery saver mode. |
| ` int` | ` https://developer.android.com/reference/com/google/wear/modes/BatterySaverMode#getActiveLevel()() ` Gets the active level of battery saver mode. |
| ` int` | ` https://developer.android.com/reference/com/google/wear/modes/BatterySaverMode#getConfiguredLevel()() ` Gets the configured level of battery saver mode. |
| ` long` | ` https://developer.android.com/reference/com/google/wear/modes/BatterySaverMode#getOverriddenReasons()() ` This method allows checking for the reason behind the state of battery saver mode being overridden. |
| ` boolean` | ` https://developer.android.com/reference/com/google/wear/modes/BatterySaverMode#isOverridden()() ` Determine if the state of battery saver mode is overridden or not. |
| ` void` | ` https://developer.android.com/reference/com/google/wear/modes/BatterySaverMode#removeActiveLevelListener(java.util.function.Consumer<java.lang.Integer>)(Consumer<Integer> listener) ` This removes the previously added listener. |
| ` void` | ` https://developer.android.com/reference/com/google/wear/modes/BatterySaverMode#setConfiguredLevel(int)(int level) ` Sets the configured level of battery saver mode which can be fetched via `https://developer.android.com/reference/com/google/wear/modes/BatterySaverMode#getConfiguredLevel()`. |

| ### Inherited methods |
|---|---|
| From class ` java.lang.Object ` |---|---| | ` Object` | ` clone() ` | | ` boolean` | ` equals(Object arg0) ` | | ` void` | ` finalize() ` | | ` final Class<?>` | ` getClass() ` | | ` int` | ` hashCode() ` | | ` final void` | ` notify() ` | | ` final void` | ` notifyAll() ` | | ` String` | ` toString() ` | | ` final void` | ` wait(long arg0, int arg1) ` | | ` final void` | ` wait(long arg0) ` | | ` final void` | ` wait() ` | ||

## Constants

### BATTERY_SAVER_LEVEL_NORMAL

Added in [version 33.2](https://developer.android.com/topic/libraries/support-library/revisions)

```
public static final int BATTERY_SAVER_LEVEL_NORMAL
```

This battery saver mode level indicates normal battery saver mode is enabled.

<br />

Constant Value:

1
(0x00000001)


### BATTERY_SAVER_LEVEL_OFF

Added in [version 33.2](https://developer.android.com/topic/libraries/support-library/revisions)

```
public static final int BATTERY_SAVER_LEVEL_OFF
```

This battery saver mode level indicates battery saver mode is off.

<br />

Constant Value:

0
(0x00000000)


## Public methods

### addActiveLevelListener

Added in [version 33.2](https://developer.android.com/topic/libraries/support-library/revisions)

```
public void addActiveLevelListener (Executor executor, 
                Consumer<Integer> listener)
```

Adds a listener to listen for the changes in the active level of battery saver mode. The listener
will be triggered asynchronously with an initial level on registration and then again when
the level changes.

Due to potential race conditions between calls, use of this method should not be mixed
with `https://developer.android.com/reference/com/google/wear/modes/BatterySaverMode#getActiveLevel()` method and the level the listener is triggered with should be
treated as the latest active level.

Note: This should be balanced with `https://developer.android.com/reference/com/google/wear/modes/BatterySaverMode#removeActiveLevelListener(java.util.function.Consumer<java.lang.Integer>)` to prevent
memory leaks.


Requires com.google.wear.services.Permissions.READ_BATTERY_SAVER

<br />

| Parameters ||
|---|---|
| `executor` | `Executor`: The listener will be triggered on this `https://developer.android.com/reference/java/util/concurrent/Executor` <br /> |
| `listener` | `Consumer`: The listener to add <br /> |

### getActiveLevel

Added in [version 33.2](https://developer.android.com/topic/libraries/support-library/revisions)

```
public int getActiveLevel ()
```

Gets the active level of battery saver mode.

This is the active level of battery saver mode in effect as reflected on the device. It is
determined by the current operating context of the system. Due to potential race conditions
due to change between calls, use of this method should not be mixed with `https://developer.android.com/reference/com/google/wear/modes/BatterySaverMode#addActiveLevelListener(java.util.concurrent.Executor,%20java.util.function.Consumer<java.lang.Integer>)`.


Requires com.google.wear.services.Permissions.READ_BATTERY_SAVER

<br />

| Returns ||
|---|---|
| `int` | the active level of battery saver mode. This could be one of `https://developer.android.com/reference/com/google/wear/modes/BatterySaverMode#BATTERY_SAVER_LEVEL_OFF` or `https://developer.android.com/reference/com/google/wear/modes/BatterySaverMode#BATTERY_SAVER_LEVEL_NORMAL`. Value is one of the following: - `https://developer.android.com/reference/com/google/wear/modes/BatterySaverMode#BATTERY_SAVER_LEVEL_OFF` - `https://developer.android.com/reference/com/google/wear/modes/BatterySaverMode#BATTERY_SAVER_LEVEL_NORMAL` |

### getConfiguredLevel

Added in [version 33.2](https://developer.android.com/topic/libraries/support-library/revisions)

```
public int getConfiguredLevel ()
```

Gets the configured level of battery saver mode.

This reflects the default configured level of battery saver mode and is set via `https://developer.android.com/reference/com/google/wear/modes/BatterySaverMode#setConfiguredLevel(int)`.

Note: If the state of battery saver mode is overridden (`https://developer.android.com/reference/com/google/wear/modes/BatterySaverMode#isOverridden()`), this may
differ from the active level. See `https://developer.android.com/reference/com/google/wear/modes/BatterySaverMode#isOverridden()` for details.


Requires com.google.wear.services.Permissions.READ_BATTERY_SAVER

<br />

| Returns ||
|---|---|
| `int` | the configured level of battery saver mode. This could be one of `https://developer.android.com/reference/com/google/wear/modes/BatterySaverMode#BATTERY_SAVER_LEVEL_OFF` or `https://developer.android.com/reference/com/google/wear/modes/BatterySaverMode#BATTERY_SAVER_LEVEL_NORMAL`. Value is one of the following: - `https://developer.android.com/reference/com/google/wear/modes/BatterySaverMode#BATTERY_SAVER_LEVEL_OFF` - `https://developer.android.com/reference/com/google/wear/modes/BatterySaverMode#BATTERY_SAVER_LEVEL_NORMAL` |

### getOverriddenReasons

Added in [version 33.2](https://developer.android.com/topic/libraries/support-library/revisions)

```
public long getOverriddenReasons ()
```

This method allows checking for the reason behind the state of battery saver mode being
overridden. See `https://developer.android.com/reference/com/google/wear/modes/BatterySaverMode#isOverridden()` for details.

This method returns a flag (defined in `https://developer.android.com/reference/com/google/wear/modes/ModeManager`) comprising reason(s)
indicating the factors playing a role in overriding the state of battery saver mode. Each flag has
a permission associated with it, and this method only returns the flags the caller already
has the permission for. Please check the respective flag for its permission requirement.

Note: The returned level might also contain `https://developer.android.com/reference/com/google/wear/modes/ModeManager#FLAG_OVERRIDDEN_BY_UNKNOWN_REASON` indicating an unknown cause behind the state
of battery saver mode being overridden.


Requires com.google.wear.services.Permissions.READ_BATTERY_SAVER

<br />

| Returns ||
|---|---|
| `long` | the combination of flags defined in `https://developer.android.com/reference/com/google/wear/modes/ModeManager` specifying the cause behind the state of battery saver mode being overridden. Returned level of `OL` implies that the state of battery saver mode is not overridden. Value is either `0` or a combination of the following: - `https://developer.android.com/reference/com/google/wear/modes/ModeManager#FLAG_OVERRIDDEN_BY_UNKNOWN_REASON` - `https://developer.android.com/reference/com/google/wear/modes/ModeManager#FLAG_OVERRIDDEN_BY_BEDTIME_MODE` - `https://developer.android.com/reference/com/google/wear/modes/ModeManager#FLAG_OVERRIDDEN_BY_THEATER_MODE` - `https://developer.android.com/reference/com/google/wear/modes/ModeManager#FLAG_OVERRIDDEN_BY_SCREEN_READER` - `https://developer.android.com/reference/com/google/wear/modes/ModeManager#FLAG_OVERRIDDEN_BY_BATTERY_SAVER_MODE` - `https://developer.android.com/reference/com/google/wear/modes/ModeManager#FLAG_OVERRIDDEN_BY_SCHOOL_MODE` - `https://developer.android.com/reference/com/google/wear/modes/ModeManager#FLAG_OVERRIDDEN_BY_DOWNTIME_MODE` |

### isOverridden

Added in [version 33.2](https://developer.android.com/topic/libraries/support-library/revisions)

```
public boolean isOverridden ()
```

Determine if the state of battery saver mode is overridden or not.

Battery saver has a configured level which is the default level for its state. The active
level as reflected on the device, on the other hand, is determined by the current operating
context of the system and depends on either of the following:

- Either the configured level of battery saver mode
- Or the configured values of all other modes

The state of battery saver mode can be defined as overridden if its configured level does not
play a role in determining its active level. This does not necessarily mean that the
configured level will be different from the active level but rather means that if the
configured level is updated, the active level will not be updated till the override is
lifted.


Requires com.google.wear.services.Permissions.READ_BATTERY_SAVER

<br />

| Returns ||
|---|---|
| `boolean` | true if the state of battery saver mode is overridden, i.e. updating configured level does not update the active level <br /> |

### removeActiveLevelListener

Added in [version 33.2](https://developer.android.com/topic/libraries/support-library/revisions)

```
public void removeActiveLevelListener (Consumer<Integer> listener)
```

This removes the previously added listener.

<br />

| Parameters ||
|---|---|
| `listener` | `Consumer`: The listener to remove <br /> |

### setConfiguredLevel

Added in [version 33.2](https://developer.android.com/topic/libraries/support-library/revisions)

```
public void setConfiguredLevel (int level)
```

Sets the configured level of battery saver mode which can be fetched via `https://developer.android.com/reference/com/google/wear/modes/BatterySaverMode#getConfiguredLevel()`. In case an override is not in place, this will also update its active
level as reflected on the device which can be fetched via `https://developer.android.com/reference/com/google/wear/modes/BatterySaverMode#getActiveLevel()`. However,
in case the state of battery saver mode is overridden, its active level as on the device will be
updated to reflect this configured level once the override is uplifted.


Requires com.google.wear.services.Permissions.WRITE_BATTERY_SAVER

<br />

| Parameters ||
|---|---|
| `level` | `int`: The level of battery saver mode to state. This could be one of `https://developer.android.com/reference/com/google/wear/modes/BatterySaverMode#BATTERY_SAVER_LEVEL_OFF` or `https://developer.android.com/reference/com/google/wear/modes/BatterySaverMode#BATTERY_SAVER_LEVEL_NORMAL`. Value is one of the following: - `https://developer.android.com/reference/com/google/wear/modes/BatterySaverMode#BATTERY_SAVER_LEVEL_OFF` - `https://developer.android.com/reference/com/google/wear/modes/BatterySaverMode#BATTERY_SAVER_LEVEL_NORMAL` |