androidandroid-5.0-lollipopandroid-5.1.1-lollipopbattery-saver

How to check if Android Lollipop battery saver is on


Android Lollipop introduced a battery saver mode that can be turned on at any time, and turns on by default when the battery is at 15% or lower. This poses a problem for my app, since the battery saver disables animations that provide crucial information. (Just to give context, my app allows users to configure an Android Wear watch face; when they save a new "theme," I animate the theme moving to a button on the action bar so that they know where it was saved to. When animations are disabled by the battery saver, nothing happens when they hit save, which I think would be confusing.)

So, is there a way to programmatically determine whether the battery saver is on? That way I can provide an alternative to the animation(s) such as displaying a Toast.


Solution

  • Take a look at power manager

    It has a method isPowerSaveMode() that will tell you if battery saver is on

    Example code:

    PowerManager powerManager = (PowerManager)
        getActivity().getSystemService(Context.POWER_SERVICE);
    if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP
            && powerManager.isPowerSaveMode()) {
        // Animations are disabled in power save mode, so just show a toast instead.
        Toast.makeText(mContext, getString(R.string.toast), Toast.LENGTH_SHORT).show();
    }