3

I`m trying to detect the changing between power save mode states - enabled or disabled, on android 5.0 lollipop but without any luck.

I read the [article of this user][1]

[1]: Android power save mode listener? but with the example there it just doesn't work on my device - Samsung galaxy S5, based on android 5.0

The source which I`m using is :

  <receiver android:enabled="true" android:name=".core.receiver.PowerSaveModeReceiver" >
        <intent-filter>
            <action android:name="android.os.action.POWER_SAVE_MODE_CHANGED"/>
        </intent-filter>
    </receiver>

So I just don't receive any broadcast when I manually change power saving mode on my device. Thank you for the help!

Community
  • 1
  • 1
user1106234
  • 223
  • 4
  • 15

1 Answers1

1

This is because both Samsung and HTC have decided to store their power manager settings in Settings.System.

HTC uses the key "user_powersaver_enable" and Samsung uses the key "psm_switch".

An example ContentObserver would be:

getContentResolver().registerContentObserver(Settings.System.CONTENT_URI, true, new ContentObserver(null){
  @Override
  public void onChange(boolean selfChange, Uri uri){
    super.onChange(selfChange, uri);
    String key = uri.getPath();
    key = key.substring(key.lastIndexOf("/") + 1, key.length());

    if (key.equals("user_powersaver_enable") || key.equals("psm_switch")){
      boolean batterySaverEnabled = Settings.System.getString(getContentResolver(), key).equals("1");

    }
  }
});

src: Checking for Power Saver Mode Programically

Community
  • 1
  • 1
afathman
  • 5,993
  • 2
  • 20
  • 28