Flutter: 运行 Android 代码获取手机电量
例子为获取并显示 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 代码获取手机电量相关推荐
- Android中获取手机电量信息
有些时候我们需要在我们的应用上为用户展示当前手机的电量,这时候我们就需要用到广播了,我们都知道在动态注册广播的时候,我们需要传入一个BroadcastReceiver类对象,还有一个意图过滤器Inte ...
- android主动获取手机电量,获取Android手机的电量信息
电池的电量是手机用户为关心问题之一,而在Android系统中,专门提供了一个取得电池电量信息的Action--ACTION_BATTERY_CHANGED,在此Action中定义了许多附加信息的名称和 ...
- [Android] 代码获取手机系统类型(小米MIUI、华为EMUI、魅族FLYME)
我们都知道,现在Android系统手机各式各样,包括三星.华为.小米.魅族等等,它们的系统都不是原生的Android系统,都是经过手机厂商修改过的,并且通过刷机可以在不同手机刷各式各样的系统,在一些应 ...
- 小米 android项目代码,[Android] 代码获取手机系统类型(小米MIUI、华为EMUI、魅族FLYME)...
我们都知道,现在Android系统手机各式各样,包括三星.华为.小米.魅族等等,它们的系统都不是原生的Android系统,都是经过手机厂商修改过的,并且通过刷机可以在不同手机刷各式各样的系统,在一些应 ...
- Android获取手机电量
Android获取手机电量 当手机电量发生改变时,系统会对外发送Intent的Action 为**ACTION_BATTERY_CHANGED**常量广播. 当手机电量过低时,系统会发送Intent的 ...
- Android 代码操控手机粘贴板(复制到/获取)
Android 代码操控手机粘贴板 以下方法皆为工具方法,直接复制可用 将字符串复制到粘贴板: //系统剪贴板-复制: s为内容public static void copy(Context cont ...
- Android适配 获取手机屏幕的分辨率
如何将一个应用程序适配在不同的手机上,虽然这不算是一个技术问题,但是对于刚刚做屏幕的开发人员来说,还真不是一件多么简单的事情. 首先:你需要在AndroidManifest.xml文件的<man ...
- Android杂谈---获取手机屏幕大小
Android杂谈---获取手机屏幕大小 SurfaceView简单例子 玩转Android---UI篇---ZoomControls放大缩小图片 更多相关推荐 这里总结下android中关于手机屏幕 ...
- android 监听手机电量变化
今天,简单讲讲如何监听手机电量的变化. 监听电量是不能静态注册的. 后来上网搜索,发现有五个不能静态注册的广播,这里记录一下,免得下次再后知后觉的发现并惊讶于自己的笨拙. 不能静态注册的广播: and ...
- android平台获取手机IMSI,IMEI ,序列号,和 手机号的方法
android平台获取手机IMSI,IMEI ,序列号,和 手机号的方法 1)获取运营商sim卡imsi号: String android_imsi = telephonyManager.getSub ...
最新文章
- java建立_利用Java创建Windows服务
- 震后首游都江堰感怀(二)
- 洛谷——P2678 跳石头
- 面试官问我有环链表中怎么找到入口,本以为很简单当场却想傻了
- 跨平台应用集成(在ASP.NET Core MVC 应用程序中集成 Microsoft Graph)
- 新一代 Windows 即将发布、GPT-3 成功商业化,这届微软 Build 大会究竟带来了什么?
- 物理内存充足,但是为什么用代码总申请不到内存呢?
- NSNotification 消息通知的3种方式
- CentOS 7安装zabbix 4.4(资源)
- 项目日报模板_笔杆子材料:写作技巧之如何写好日报、周报、月报(一)
- 应用计算机测pn结正向电压,PN结正向压降与温度关系的研究实验报告
- 基于AT89S52单片机的汽车尾灯控制电路设计
- 要有遥不可及的梦想,也要有脚踏实地的本事
- echarts 饼图移动端_使用Echarts实现饼图
- 19杭电计算机考研科目,2019杭电计算机考研初试科目、参考书目、报录比汇总
- 笔记--javascript对象及简单,复杂数据类型
- 2022年全球原味奶酪片行业分析报告
- java qq邮箱服务器端口_spring mail借助qq邮箱服务器发送邮件
- linux centos7 解决挖矿病毒kthreaddk 高CPU占用
- 菜鸟程序员如何才能快速提高自己的技术