例子为获取并显示 Android 手机电量,要在工程中生成 Android,iOS 文件,需要使用如下命令创建工程:

flutter create -i objc -a java myapp

生成的工程目录如下:

Windows os 上安装的 flutter 版本:

flutter --version
Flutter 3.0.5

在 Android 机上显示手机电量:

1. main.dart:

import 'package:flutter/material.dart';
import 'package:flutter/services.dart';void main() {runApp(const MyApp());
}class MyApp extends StatelessWidget {const MyApp({Key? key}) : super(key: key);// This widget is the root of your application.Widget build(BuildContext context) {return MaterialApp(title: 'Flutter Demo',theme: ThemeData(primarySwatch: Colors.blue,),home: const MyHomePage(title: 'Native Code'),);}
}class MyHomePage extends StatefulWidget {const MyHomePage({Key? key, required this.title}) : super(key: key);final String title;State<MyHomePage> createState() => _MyHomePageState();
}class _MyHomePageState extends State<MyHomePage> {int _batteryLevel = -999;Future<void> _getBatteryLevel() async {// ourse.flutter.dev/battery is a random identifierconst platform = MethodChannel('course.flutter.dev/battery');try {final batteryLevel = await platform.invokeMethod('getBatteryLevel');setState(() {_batteryLevel = batteryLevel;});} on PlatformException catch (error) {setState(() {_batteryLevel = -9999;});}}void initState() {// TODO: implement initStatesuper.initState();_getBatteryLevel();}Widget build(BuildContext context) {return Scaffold(appBar: AppBar(title: Text(widget.title),),body: Center(child: Text('Battery Level:${_batteryLevel.toString()}'),),);}
}

2. 修改 MainActivity.java 代码

此文件为 java 文件,所在位置:

代码:

package com.example.myapp;import androidx.annotation.NonNull;
import io.flutter.embedding.android.FlutterActivity;
import io.flutter.embedding.engine.FlutterEngine;
import io.flutter.plugins.GeneratedPluginRegistrant;
import io.flutter.plugin.common.MethodCall;
import io.flutter.plugin.common.MethodChannel;
import io.flutter.plugin.common.MethodChannel.Result;
import io.flutter.plugin.common.MethodChannel.MethodCallHandler;
import android.content.ContextWrapper;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.BatteryManager;
import android.os.Build.VERSION;
import android.os.Build.VERSION_CODES;
import android.os.Bundle;public class MainActivity extends FlutterActivity { public void configureFlutterEngine( FlutterEngine flutterEngine) {super.configureFlutterEngine(flutterEngine);new MethodChannel(flutterEngine.getDartExecutor().getBinaryMessenger(), "course.flutter.dev/battery").setMethodCallHandler(new MethodCallHandler() {public void onMethodCall(MethodCall call, Result result) {if (call.method.equals("getBatteryLevel")) {int batteryLevel = getBatteryLevel();if (batteryLevel != -1) {result.success(batteryLevel);} else {result.error("UNAVAILABLE", "Could not fetch battery level.", null);}} else {result.notImplemented();}}});}private int getBatteryLevel() {int batteryLevel = -1;if (VERSION.SDK_INT >= VERSION_CODES.LOLLIPOP) {BatteryManager batteryManager = (BatteryManager) getSystemService(BATTERY_SERVICE);batteryLevel = batteryManager.getIntProperty(BatteryManager.BATTERY_PROPERTY_CAPACITY);} else {Intent intent = new ContextWrapper(getApplicationContext()).registerReceiver(null,new IntentFilter(Intent.ACTION_BATTERY_CHANGED));batteryLevel = (intent.getIntExtra(BatteryManager.EXTRA_LEVEL, -1) * 100)/ intent.getIntExtra(BatteryManager.EXTRA_SCALE, -1);}return batteryLevel;}
}

运行界面如下,电量 100%。


虽然这样写代码是可行的, 但在实际中,要运行 Android 代码,并不一定需要自己这样写 java 代码,通常使用现有的插件等等。

Flutter: 运行 Android 代码获取手机电量相关推荐

  1. Android中获取手机电量信息

    有些时候我们需要在我们的应用上为用户展示当前手机的电量,这时候我们就需要用到广播了,我们都知道在动态注册广播的时候,我们需要传入一个BroadcastReceiver类对象,还有一个意图过滤器Inte ...

  2. android主动获取手机电量,获取Android手机的电量信息

    电池的电量是手机用户为关心问题之一,而在Android系统中,专门提供了一个取得电池电量信息的Action--ACTION_BATTERY_CHANGED,在此Action中定义了许多附加信息的名称和 ...

  3. [Android] 代码获取手机系统类型(小米MIUI、华为EMUI、魅族FLYME)

    我们都知道,现在Android系统手机各式各样,包括三星.华为.小米.魅族等等,它们的系统都不是原生的Android系统,都是经过手机厂商修改过的,并且通过刷机可以在不同手机刷各式各样的系统,在一些应 ...

  4. 小米 android项目代码,[Android] 代码获取手机系统类型(小米MIUI、华为EMUI、魅族FLYME)...

    我们都知道,现在Android系统手机各式各样,包括三星.华为.小米.魅族等等,它们的系统都不是原生的Android系统,都是经过手机厂商修改过的,并且通过刷机可以在不同手机刷各式各样的系统,在一些应 ...

  5. Android获取手机电量

    Android获取手机电量 当手机电量发生改变时,系统会对外发送Intent的Action 为**ACTION_BATTERY_CHANGED**常量广播. 当手机电量过低时,系统会发送Intent的 ...

  6. Android 代码操控手机粘贴板(复制到/获取)

    Android 代码操控手机粘贴板 以下方法皆为工具方法,直接复制可用 将字符串复制到粘贴板: //系统剪贴板-复制: s为内容public static void copy(Context cont ...

  7. Android适配 获取手机屏幕的分辨率

    如何将一个应用程序适配在不同的手机上,虽然这不算是一个技术问题,但是对于刚刚做屏幕的开发人员来说,还真不是一件多么简单的事情. 首先:你需要在AndroidManifest.xml文件的<man ...

  8. Android杂谈---获取手机屏幕大小

    Android杂谈---获取手机屏幕大小 SurfaceView简单例子 玩转Android---UI篇---ZoomControls放大缩小图片 更多相关推荐 这里总结下android中关于手机屏幕 ...

  9. android 监听手机电量变化

    今天,简单讲讲如何监听手机电量的变化. 监听电量是不能静态注册的. 后来上网搜索,发现有五个不能静态注册的广播,这里记录一下,免得下次再后知后觉的发现并惊讶于自己的笨拙. 不能静态注册的广播: and ...

  10. android平台获取手机IMSI,IMEI ,序列号,和 手机号的方法

    android平台获取手机IMSI,IMEI ,序列号,和 手机号的方法 1)获取运营商sim卡imsi号: String android_imsi = telephonyManager.getSub ...

最新文章

  1. java建立_利用Java创建Windows服务
  2. 震后首游都江堰感怀(二)
  3. 洛谷——P2678 跳石头
  4. 面试官问我有环链表中怎么找到入口,本以为很简单当场却想傻了
  5. 跨平台应用集成(在ASP.NET Core MVC 应用程序中集成 Microsoft Graph)
  6. 新一代 Windows 即将发布、GPT-3 成功商业化,这届微软 Build 大会究竟带来了什么?
  7. 物理内存充足,但是为什么用代码总申请不到内存呢?
  8. NSNotification 消息通知的3种方式
  9. CentOS 7安装zabbix 4.4(资源)
  10. 项目日报模板_笔杆子材料:写作技巧之如何写好日报、周报、月报(一)
  11. 应用计算机测pn结正向电压,PN结正向压降与温度关系的研究实验报告
  12. 基于AT89S52单片机的汽车尾灯控制电路设计
  13. 要有遥不可及的梦想,也要有脚踏实地的本事
  14. echarts 饼图移动端_使用Echarts实现饼图
  15. 19杭电计算机考研科目,2019杭电计算机考研初试科目、参考书目、报录比汇总
  16. 笔记--javascript对象及简单,复杂数据类型
  17. 2022年全球原味奶酪片行业分析报告
  18. java qq邮箱服务器端口_spring mail借助qq邮箱服务器发送邮件
  19. linux centos7 解决挖矿病毒kthreaddk 高CPU占用
  20. 菜鸟程序员如何才能快速提高自己的技术

热门文章

  1. Unified Access Control
  2. Centos 6.2部署Extmail企业邮箱
  3. Codeforces Round #427 (Div. 2) C.Star sky(二维前缀和/线性dp)
  4. iPhone X网页适配问题
  5. C语言8:分断计算水费
  6. python程序员工资一般多少-没想到,学会Python即使不做程序员都能月入过万!
  7. ios开发--iOS APP安全策略之加固保护原理
  8. 盘点谷歌管理层重组赢家和输家
  9. 0基础学Python笔记(长文警告)
  10. WordPress搭建自己的网站