Optimize Battery Fixed

A Flutter plugin for checking and managing battery optimization settings on Android devices. This is a fixed and optimized version of the original optimize_battery package, maintained for production use with enhanced stability and documentation.

πŸ“¦ Installation

dependencies:
  optimize_battery_fixed: ^1.0.0

From GitHub

dependencies:
  optimize_battery_fixed:
    git:
      url: https://github.com/boughdiri-dorsaf/optimize_battery_fixed.git
      ref: main

From Local Path

dependencies:
  optimize_battery_fixed:
    path: ./optimize_battery_fixed

πŸš€ Features

  • Battery Optimization Check: Check if app is ignoring battery optimization
  • Settings Navigation: Open battery optimization settings
  • Disable Dialog: Show battery optimization disable dialog
  • Null Safety: Full null safety support
  • Android V2 Embedding: Modern Android embedding support

πŸ“± Platform Support

Android

  • Battery optimization status checking
  • Settings navigation
  • Disable optimization dialog
  • Permission handling

iOS

  • Not supported (battery optimization is iOS system feature)

πŸ”§ Usage

Check Battery Optimization Status

import 'package:optimize_battery_fixed/optimize_battery_fixed.dart';

// Check if app is ignoring battery optimization
OptimizeBattery.isIgnoringBatteryOptimizations().then((onValue) {
  setState(() {
    if (onValue) {
      // App is ignoring battery optimization
      print('App is ignoring battery optimization');
    } else {
      // App is under battery optimization
      print('App is under battery optimization');
    }
  });
});

Open Battery Optimization Settings

// Take user to battery optimization settings
OptimizeBattery.openBatteryOptimizationSettings();

Show Disable Dialog

// Show battery optimization disable dialog
OptimizeBattery.stopOptimizingBatteryUsage();

This opens the battery optimization disable dialog.

Example

πŸ› οΈ Setup

Android Setup

Add the permission in android/app/src/main/AndroidManifest.xml:

<uses-permission android:name="android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS"/>

Important Note: This permission uses the intent ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS, which is not recommended unless it's an exemption case. Such as when the application's main functionality needs battery optimization to be disabled.

Read more here: https://developer.android.com/training/monitoring-device-state/doze-standby#exemption-cases

πŸ“‹ API Reference

Methods

  • isIgnoringBatteryOptimizations() - Check if app is ignoring battery optimization
  • openBatteryOptimizationSettings() - Open battery optimization settings
  • stopOptimizingBatteryUsage() - Show disable optimization dialog

Return Values

  • isIgnoringBatteryOptimizations() returns Future<bool>
  • Other methods return Future<void>

🚨 Troubleshooting

Common Issues

  1. Permission Denied: Ensure the permission is added to AndroidManifest.xml
  2. Settings Not Opening: Check if the device supports battery optimization
  3. Dialog Not Showing: Verify the app has the required permission

Debug Information

// Check battery optimization status
bool isIgnoring = await OptimizeBattery.isIgnoringBatteryOptimizations();
print('Is ignoring battery optimization: $isIgnoring');

🀝 Contributing

  1. Fork the repository
  2. Create a feature branch
  3. Make your changes
  4. Test thoroughly
  5. Submit a pull request

πŸ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.

πŸ“ž Support

For support and questions:

  • Create an issue in the GitHub repository
  • Check the troubleshooting section above
  • Review the API documentation

πŸ”„ Updates

This package is maintained and updated regularly. Check the CHANGELOG.md for version history and updates.

πŸ™ Credit

This plugin is inspired from battery_optimization but with supporting Null safety and Android V2 embedding. This fixed version includes additional improvements and optimizations.

πŸ“Š Package Information


Note: This version is optimized for production use and includes all necessary fixes and improvements. It's a drop-in replacement for the original optimize_battery package with enhanced stability and documentation.