Skip to content

Commit

Permalink
feat: disable Battery Optimization
Browse files Browse the repository at this point in the history
  • Loading branch information
guozhigq committed Mar 8, 2024
1 parent 3bf6136 commit 105a29f
Show file tree
Hide file tree
Showing 5 changed files with 56 additions and 0 deletions.
2 changes: 2 additions & 0 deletions lib/main.dart
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ import 'package:pilipala/pages/search/index.dart';
import 'package:pilipala/pages/video/detail/index.dart';
import 'package:pilipala/router/app_pages.dart';
import 'package:pilipala/pages/main/view.dart';
import 'package:pilipala/services/disable_battery_opt.dart';
import 'package:pilipala/services/service_locator.dart';
import 'package:pilipala/utils/app_scheme.dart';
import 'package:pilipala/utils/data.dart';
Expand Down Expand Up @@ -71,6 +72,7 @@ void main() async {
));
Data.init();
PiliSchame.init();
DisableBatteryOpt();
});
}

Expand Down
40 changes: 40 additions & 0 deletions lib/services/disable_battery_opt.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
import 'dart:io';

import 'package:disable_battery_optimization/disable_battery_optimization.dart';
import 'package:pilipala/utils/storage.dart';

void DisableBatteryOpt() async {
if (!Platform.isAndroid) {
return;
}
// 本地缓存中读取 是否禁用了电池优化 默认未禁用
bool isDisableBatteryOptLocal =
GStrorage.localCache.get('isDisableBatteryOptLocal', defaultValue: false);
if (!isDisableBatteryOptLocal) {
final isBatteryOptimizationDisabled =
await DisableBatteryOptimization.isBatteryOptimizationDisabled;
if (isBatteryOptimizationDisabled == false) {
final hasDisabled = await DisableBatteryOptimization
.showDisableBatteryOptimizationSettings();
// 设置为已禁用
GStrorage.localCache.put('isDisableBatteryOptLocal', hasDisabled == true);
}
}

bool isManufacturerBatteryOptimizationDisabled = GStrorage.localCache
.get('isManufacturerBatteryOptimizationDisabled', defaultValue: false);
if (!isManufacturerBatteryOptimizationDisabled) {
final isManBatteryOptimizationDisabled = await DisableBatteryOptimization
.isManufacturerBatteryOptimizationDisabled;
if (isManBatteryOptimizationDisabled == false) {
final hasDisabled = await DisableBatteryOptimization
.showDisableManufacturerBatteryOptimizationSettings(
"当前设备可能有额外的电池优化",
"按照步骤操作以禁用电池优化,以保证应用在后台正常运行",
);
// 设置为已禁用
GStrorage.localCache.put(
'isManufacturerBatteryOptimizationDisabled', hasDisabled == true);
}
}
}
4 changes: 4 additions & 0 deletions lib/utils/storage.dart
Original file line number Diff line number Diff line change
Expand Up @@ -170,6 +170,10 @@ class LocalCacheKey {
// 代理host port
systemProxyHost = 'systemProxyHost',
systemProxyPort = 'systemProxyPort';

static const String isDisableBatteryOptLocal = 'isDisableBatteryOptLocal',
isManufacturerBatteryOptimizationDisabled =
'isManufacturerBatteryOptimizationDisabled';
}

class VideoBoxKey {
Expand Down
8 changes: 8 additions & 0 deletions pubspec.lock
Original file line number Diff line number Diff line change
Expand Up @@ -393,6 +393,14 @@ packages:
url: "https://pub.flutter-io.cn"
source: hosted
version: "2.4.0"
disable_battery_optimization:
dependency: "direct main"
description:
name: disable_battery_optimization
sha256: "6b2ba802f984af141faf1b6b5fb956d5ef01f9cd555597c35b9cc335a03185ba"
url: "https://pub.flutter-io.cn"
source: hosted
version: "1.1.1"
dismissible_page:
dependency: "direct main"
description:
Expand Down
2 changes: 2 additions & 0 deletions pubspec.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -140,6 +140,8 @@ dependencies:
catcher_2: ^1.1.0
logger: ^2.0.2+1
path: 1.8.3
# 电池优化
disable_battery_optimization: ^1.1.1

dev_dependencies:
flutter_test:
Expand Down

0 comments on commit 105a29f

Please sign in to comment.