android+获取电池信息,Delphi XE5 Android应用程序获取电池信息
将android.os.BatteryManager类移植到Delphi。
uses Androidapi.JNI.JavaTypes,
Androidapi.JNIBridge;
type
JBatteryManagerClass = interface(JObjectClass)
['{739F38F8-E2A2-4016-8739-3F073A0E3E60}'] // CTRL+SHIFT+G
function _GetBATTERY_HEALTH_COLD: Integer;
function _GetBATTERY_HEALTH_DEAD: Integer;
function _GetBATTERY_HEALTH_GOOD: Integer;
function _GetBATTERY_HEALTH_OVERHEAT: Integer;
function _GetBATTERY_HEALTH_OVER_VOLTAGE: Integer;
function _GetBATTERY_HEALTH_UNKNOWN: Integer;
function _GetBATTERY_HEALTH_UNSPECIFIED_FAILURE: Integer;
function _GetBATTERY_PLUGGED_AC: Integer;
function _GetBATTERY_PLUGGED_USB: Integer;
function _GetBATTERY_PLUGGED_WIRELESS: Integer;
function _GetBATTERY_STATUS_CHARGING: Integer;
function _GetBATTERY_STATUS_DISCHARGING: Integer;
function _GetBATTERY_STATUS_FULL: Integer;
function _GetBATTERY_STATUS_NOT_CHARGING: Integer;
function _GetBATTERY_STATUS_UNKNOWN: Integer;
function _GetEXTRA_HEALTH: JString;
function _GetEXTRA_ICON_SMALL: JString;
function _GetEXTRA_LEVEL: JString;
function _GetEXTRA_PLUGGED: JString;
function _GetEXTRA_PRESENT: JString;
function _GetEXTRA_SCALE: JString;
function _GetEXTRA_STATUS: JString;
function _GetEXTRA_TECHNOLOGY: JString;
function _GetEXTRA_TEMPERATURE: JString;
function _GetEXTRA_VOLTAGE: JString;
property BATTERY_HEALTH_COLD: Integer read _GetBATTERY_HEALTH_COLD;
property BATTERY_HEALTH_DEAD: Integer read _GetBATTERY_HEALTH_DEAD;
property BATTERY_HEALTH_GOOD: Integer read _GetBATTERY_HEALTH_GOOD;
property BATTERY_HEALTH_OVERHEAT: Integer read _GetBATTERY_HEALTH_OVERHEAT;
property BATTERY_HEALTH_OVER_VOLTAGE: Integer
read _GetBATTERY_HEALTH_OVER_VOLTAGE;
property BATTERY_HEALTH_UNKNOWN: Integer read _GetBATTERY_HEALTH_UNKNOWN;
property BATTERY_HEALTH_UNSPECIFIED_FAILURE: Integer
read _GetBATTERY_HEALTH_UNSPECIFIED_FAILURE;
property BATTERY_PLUGGED_AC: Integer read _GetBATTERY_PLUGGED_AC;
property BATTERY_PLUGGED_USB: Integer read _GetBATTERY_PLUGGED_USB;
property BATTERY_PLUGGED_WIRELESS: Integer
read _GetBATTERY_PLUGGED_WIRELESS;
property BATTERY_STATUS_CHARGING: Integer read _GetBATTERY_STATUS_CHARGING;
property BATTERY_STATUS_DISCHARGING: Integer
read _GetBATTERY_STATUS_DISCHARGING;
property BATTERY_STATUS_FULL: Integer read _GetBATTERY_STATUS_FULL;
property BATTERY_STATUS_NOT_CHARGING: Integer
read _GetBATTERY_STATUS_NOT_CHARGING;
property BATTERY_STATUS_UNKNOWN: Integer read _GetBATTERY_STATUS_UNKNOWN;
property EXTRA_HEALTH: JString read _GetEXTRA_HEALTH;
property EXTRA_HEALTHEXTRA_HEALTHEXTRA_ICON_SMALL: JString
read _GetEXTRA_ICON_SMALL;
property EXTRA_LEVEL: JString read _GetEXTRA_LEVEL;
property EXTRA_PLUGGED: JString read _GetEXTRA_PLUGGED;
property EXTRA_PRESENT: JString read _GetEXTRA_PRESENT;
property EXTRA_SCALE: JString read _GetEXTRA_SCALE;
property EXTRA_STATUS: JString read _GetEXTRA_STATUS;
property EXTRA_TECHNOLOGY: JString read _GetEXTRA_TECHNOLOGY;
property EXTRA_TEMPERATURE: JString read _GetEXTRA_TEMPERATURE;
property EXTRA_VOLTAGE: JString read _GetEXTRA_VOLTAGE;
end;
[JavaSignature('android/os/BatteryManager')]
JBatteryManager = interface(JObject)
['{73085A7C-18A7-4295-A0E2-A7B7D2C0EACB}'] // CTRL+SHIFT+G
end;
TJBatteryManager = class(TJavaGenericImport
JBatteryManager>)
end;
在窗体上放置一个按钮(TButton)和一个注释(TMemo)。
001
为按钮添加一个OnClick事件。
uses Androidapi.JNI.JavaTypes,
Androidapi.JNIBridge,
FMX.Platform.Android,
Androidapi.JNI.GraphicsContentViewText;
procedure TForm1.Button1Click(Sender: TObject);
var
Filter: JIntentFilter;
Battery: JIntent;
Status, Health, Level, Scale, IconSmall, Plugged, Voltage,
Temperature: Integer;
Present: Boolean;
Technology, StatusString, HealthString, ScString: string;
begin
Filter := TJIntentFilter.JavaClass.init
(TJIntent.JavaClass.ACTION_BATTERY_CHANGED);
Battery := MainActivity.registerReceiver(nil, Filter);
Status := Battery.getIntExtra(StringToJString('status'), 0);
Health := Battery.getIntExtra(StringToJString('health'), 0);
Present := Battery.getBooleanExtra(StringToJString('present'), false);
Level := Battery.getIntExtra(StringToJString('level'), 0);
Scale := Battery.getIntExtra(StringToJString('scale'), 0);
IconSmall := Battery.getIntExtra(StringToJString('icon-small'), 0);
Plugged := Battery.getIntExtra(StringToJString('plugged'), 0);
Voltage := Battery.getIntExtra(StringToJString('voltage'), 0);
Temperature := Battery.getIntExtra(StringToJString('temperature'), 0);
Technology := JStringToString
(Battery.getStringExtra(StringToJString('technology')));
StatusString := '';
if Status = TJBatteryManager.JavaClass.BATTERY_STATUS_UNKNOWN then
StatusString := 'UNKNOWN'
else if Status = TJBatteryManager.JavaClass.BATTERY_STATUS_CHARGING then
StatusString := 'CHARGING'
else if Status = TJBatteryManager.JavaClass.BATTERY_STATUS_DISCHARGING then
StatusString := 'DISCHARGING'
else if Status = TJBatteryManager.JavaClass.BATTERY_STATUS_NOT_CHARGING then
StatusString := 'NOT CHARGING'
else if Status = TJBatteryManager.JavaClass.BATTERY_STATUS_FULL then
StatusString := 'FULL';
HealthString := '';
if Health = TJBatteryManager.JavaClass.BATTERY_HEALTH_UNKNOWN then
HealthString := 'UNKNOWN'
else if Health = TJBatteryManager.JavaClass.BATTERY_HEALTH_GOOD then
HealthString := 'GOOD'
else if Health = TJBatteryManager.JavaClass.BATTERY_HEALTH_OVERHEAT then
HealthString := 'OVERHEAT'
else if Health = TJBatteryManager.JavaClass.BATTERY_HEALTH_DEAD then
HealthString := 'DEAD'
else if Health = TJBatteryManager.JavaClass.BATTERY_HEALTH_OVER_VOLTAGE then
HealthString := 'OVER VOLTAGE'
else if Health = TJBatteryManager.JavaClass.BATTERY_HEALTH_UNSPECIFIED_FAILURE
then
HealthString := 'UNSPECIFIED FAILURE';
ScString := '';
if Plugged = TJBatteryManager.JavaClass.BATTERY_PLUGGED_AC then
ScString := 'AC'
else if Plugged = TJBatteryManager.JavaClass.BATTERY_PLUGGED_USB then
ScString := 'USB';
Memo1.Lines.Clear;
Memo1.Lines.Add(Format('%s=%s', ['Status(充電状態)', StatusString]));
Memo1.Lines.Add(Format('%s=%s', ['Health(电池状态)', HealthString]));
Memo1.Lines.Add(Format('%s=%s', ['Present(是否存在电池)',
BoolToStr(Present, True)]));
Memo1.Lines.Add(Format('%s=%d', ['Level(电池余量)', Level]));
Memo1.Lines.Add(Format('%s=%d', ['Scale(最大电池余量)', Scale]));
Memo1.Lines.Add(Format('%s=%d', ['Icon Small', IconSmall]));
Memo1.Lines.Add(Format('%s=%s', ['Plugged(AC or USB)', ScString]));
Memo1.Lines.Add(Format('%s=%d', ['Voltage(电池电压)', Voltage]));
Memo1.Lines.Add(Format('%s=%d', ['Temperature(电池电压)', Temperature]));
Memo1.Lines.Add(Format('%s=%s', ['Technology', Technology]));
end;
运行该应用程序,然后按按钮以显示电池信息。
android+获取电池信息,Delphi XE5 Android应用程序获取电池信息相关推荐
- delphi10android保存数据,DELPHI XE5 Android – SDCard的SAVE / LOAD文件
我正在使用Delphi XE5进行 Android开发. 我喜欢将TStringList保存并加载到SDCard上的文本文件中. 当我将TStringList保存到文件时,一切正常.保存后我可以调用L ...
- php 微信小程序获取手机号_实例讲解微信小程序获取手机号授权用户登录功能...
小程序中有很多地方都会用到注册用户信息的地方,用户需要填写手机号等,有了这个组件可以快速获取微信绑定手机号码,无须用户填写.本文主要给大家分享微信小程序获取手机号授权用户登录功能,需要的朋友参考下吧, ...
- 微信公众号获取用户openId(扩展:小程序获取openId和手机号)
微信公众号获取用户openId 拼接的参数[可以直接配菜单中]: https://open.weixin.qq.com/connect/oauth2/authorize?appid=wxb2363dd ...
- delphi android 短信,delphi xe5 android 开发实现手机打电话和发短信
其实都可以通过intent和URI调用系统功能.Windows程序员可以理解成是ShellExecute.这个是万金油.可以有调用各种功能.后面会介绍. 1.短信息.很简单 方法a.不使用Intent ...
- android 如何打开s3db,[转载]xe5 android 手机上使用sqlite
本篇我们介绍一下在android手机上怎样使用sqlite数据库,这里用Navigator实现 增删改查. 1.新建firemonkey mobile application 2.选择blank ap ...
- 叮叮获取所有用户信息_钉钉小程序获取用户信息
1.钉钉小程序只允许开发办公类的程序,不能开发娱乐型的程序. 2.钉钉小程序审核需要产品说明书,最大大小不能超过30M(文档). 3.貌似可以用IP,暂时没有看到有关https的限制. (业务提供商( ...
- 小程序获取openid保存缓存吗_小程序获取openid踩坑
在app.js添加此函数,使用promise获取 getOpenid: function () { var that = this; return new Promise(function (reso ...
- linux c获取内存和cpu使用率,linux c程序获取cpu使用率及内存使用情况
fgets (buff, sizeof(buff), fd); fgets (buff, sizeof(buff), fd); fgets (buff, sizeof(buff), fd); ssca ...
- Delphi XE5 for Android (八)
delphi xe5 编译的程序在启动时会有短暂的黑屏出现,这个现象产生是因为启动首个activity时会加载一些初始化数据,整个时间大约在2~3秒,如何处理? 网上有些资料,这里主要参考和整理了CS ...
最新文章
- [BZOJ3693]圆桌会议[霍尔定理+线段树]
- 硬件安全系列 逻辑电路基础知识介绍(三)
- 二叉树的基本特性和二叉树的几种基本操作的机制_深入理解二叉树01 二叉树基础
- 认识伪类元素:before和:after
- 微信公众号php提交表单,PHP教程:使用YII2框架实现微信公众号中表单提交功能...
- 如何用PPT编制方案 (4)PPT中的图形设计
- 排除“使用主题 css 文件要求页上有标头控件。(例如 head runat=server /)”错误...
- 20万DBA在关注的11个问题
- file对象怎么才会有值_怎么去聊天女生才会跟你约会
- JAVA后端开发浅谈
- Pytorch训练SSD网络时遇到的问题
- 移动端cpu天梯图2020_台式机CPU天梯图(十月)
- 使用篇十 --- 模板代码创建
- wzoi‘‘买苹果‘‘
- 华山全敏还是全劲_一梦江湖华山加点_一梦江湖华山加点推荐2020_攻略
- 证明四元数表示旋转的过程实部为0,虚部为罗德里格斯公式结果
- PWM直流马达速度控制
- 使用DirectDraw直接显示YUV视频数据
- JS双引号转义,号切割
- 春天喝这五种花草茶 身体排毒又美容养颜
热门文章
- Android_openCV图片处理
- java中特殊符号怎么校验_校验中文、空格和特殊符号的方法
- 计算机怎样将多行文字转换成表格,怎么把表格里的字变成两行
- 关于File.separator[转]
- 无损数据压缩算法c语言,短短的C代码,帮忙,看看压缩算法,感激不尽
- 我虽买不起99朵玫瑰花送你,但它可以——(看完还不肯当我女朋友?)
- 自然语言处理 第二期
- 六十甲子亡命安葬山向宜忌
- 镇雄县赤水源品区域公用品牌介绍——中国赤水河源 好品世界珍享
- wan端口未连接怎么弄_路由器WAN口未连接解决方法,WAN口未连接怎么办