Flutter如何通过Android获取电池电量

在Flutter中如何通过Android平台获取设备的电池电量?我尝试过使用battery插件,但不确定是否需要额外配置Android端的权限或代码。有没有完整的实现示例,包括如何监听电量变化和获取当前电量百分比?另外,这种方法是否兼容不同Android版本?

2 回复

在Flutter中获取Android设备的电池电量,可以通过battery插件实现。步骤如下:

  1. 添加依赖:在pubspec.yaml文件中添加:

    dependencies:
      battery: ^2.0.3
    
  2. 获取电量

    import 'package:battery/battery.dart';
    
    final Battery battery = Battery();
    int batteryLevel = await battery.batteryLevel;
    print('当前电量:$batteryLevel%');
    
  3. 权限:Android无需额外权限,但需确保设备支持。

简单高效,适合快速集成。

更多关于Flutter如何通过Android获取电池电量的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


在Flutter中获取Android设备的电池电量,可以通过battery_plus插件实现。以下是具体步骤:

1. 添加依赖

pubspec.yaml 文件中添加依赖:

dependencies:
  battery_plus: ^5.0.1

运行 flutter pub get 安装插件。

2. 配置Android权限

android/app/src/main/AndroidManifest.xml 中添加权限:

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

3. 代码实现

import 'package:flutter/material.dart';
import 'package:battery_plus/battery_plus.dart';

class BatteryPage extends StatefulWidget {
  @override
  _BatteryPageState createState() => _BatteryPageState();
}

class _BatteryPageState extends State<BatteryPage> {
  final Battery _battery = Battery();
  int _batteryLevel = 0;

  @override
  void initState() {
    super.initState();
    _getBatteryLevel();
  }

  Future<void> _getBatteryLevel() async {
    final level = await _battery.batteryLevel;
    setState(() {
      _batteryLevel = level;
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Center(
        child: Text('当前电量: $_batteryLevel%'),
      ),
    );
  }
}

4. 高级功能(可选)

监听电量变化:

@override
void initState() {
  _battery.onBatteryStateChanged.listen((BatteryState state) {
    // 处理状态变化
  });
}

注意事项:

  • 插件会自动处理平台差异,iOS无需额外配置
  • 实际电量获取可能因设备而异
  • 建议处理异常情况

这种方法通过Flutter插件桥接原生API,无需编写平台特定代码,是最简便的实现方式。

回到顶部