将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应用程序获取电池信息相关推荐

  1. delphi10android保存数据,DELPHI XE5 Android – SDCard的SAVE / LOAD文件

    我正在使用Delphi XE5进行 Android开发. 我喜欢将TStringList保存并加载到SDCard上的文本文件中. 当我将TStringList保存到文件时,一切正常.保存后我可以调用L ...

  2. php 微信小程序获取手机号_实例讲解微信小程序获取手机号授权用户登录功能...

    小程序中有很多地方都会用到注册用户信息的地方,用户需要填写手机号等,有了这个组件可以快速获取微信绑定手机号码,无须用户填写.本文主要给大家分享微信小程序获取手机号授权用户登录功能,需要的朋友参考下吧, ...

  3. 微信公众号获取用户openId(扩展:小程序获取openId和手机号)

    微信公众号获取用户openId 拼接的参数[可以直接配菜单中]: https://open.weixin.qq.com/connect/oauth2/authorize?appid=wxb2363dd ...

  4. delphi android 短信,delphi xe5 android 开发实现手机打电话和发短信

    其实都可以通过intent和URI调用系统功能.Windows程序员可以理解成是ShellExecute.这个是万金油.可以有调用各种功能.后面会介绍. 1.短信息.很简单 方法a.不使用Intent ...

  5. android 如何打开s3db,[转载]xe5 android 手机上使用sqlite

    本篇我们介绍一下在android手机上怎样使用sqlite数据库,这里用Navigator实现 增删改查. 1.新建firemonkey mobile application 2.选择blank ap ...

  6. 叮叮获取所有用户信息_钉钉小程序获取用户信息

    1.钉钉小程序只允许开发办公类的程序,不能开发娱乐型的程序. 2.钉钉小程序审核需要产品说明书,最大大小不能超过30M(文档). 3.貌似可以用IP,暂时没有看到有关https的限制. (业务提供商( ...

  7. 小程序获取openid保存缓存吗_小程序获取openid踩坑

    在app.js添加此函数,使用promise获取 getOpenid: function () { var that = this; return new Promise(function (reso ...

  8. linux c获取内存和cpu使用率,linux c程序获取cpu使用率及内存使用情况

    fgets (buff, sizeof(buff), fd); fgets (buff, sizeof(buff), fd); fgets (buff, sizeof(buff), fd); ssca ...

  9. Delphi XE5 for Android (八)

    delphi xe5 编译的程序在启动时会有短暂的黑屏出现,这个现象产生是因为启动首个activity时会加载一些初始化数据,整个时间大约在2~3秒,如何处理? 网上有些资料,这里主要参考和整理了CS ...

最新文章

  1. [BZOJ3693]圆桌会议[霍尔定理+线段树]
  2. 硬件安全系列 逻辑电路基础知识介绍(三)
  3. 二叉树的基本特性和二叉树的几种基本操作的机制_深入理解二叉树01 二叉树基础
  4. 认识伪类元素:before和:after
  5. 微信公众号php提交表单,PHP教程:使用YII2框架实现微信公众号中表单提交功能...
  6. 如何用PPT编制方案 (4)PPT中的图形设计
  7. 排除“使用主题 css 文件要求页上有标头控件。(例如 head runat=server /)”错误...
  8. 20万DBA在关注的11个问题
  9. file对象怎么才会有值_怎么去聊天女生才会跟你约会
  10. JAVA后端开发浅谈
  11. Pytorch训练SSD网络时遇到的问题
  12. 移动端cpu天梯图2020_台式机CPU天梯图(十月)
  13. 使用篇十 --- 模板代码创建
  14. wzoi‘‘买苹果‘‘
  15. 华山全敏还是全劲_一梦江湖华山加点_一梦江湖华山加点推荐2020_攻略
  16. 证明四元数表示旋转的过程实部为0,虚部为罗德里格斯公式结果
  17. PWM直流马达速度控制
  18. 使用DirectDraw直接显示YUV视频数据
  19. JS双引号转义,号切割
  20. 春天喝这五种花草茶 身体排毒又美容养颜

热门文章

  1. Android_openCV图片处理
  2. java中特殊符号怎么校验_校验中文、空格和特殊符号的方法
  3. 计算机怎样将多行文字转换成表格,怎么把表格里的字变成两行
  4. 关于File.separator[转]
  5. 无损数据压缩算法c语言,短短的C代码,帮忙,看看压缩算法,感激不尽
  6. 我虽买不起99朵玫瑰花送你,但它可以——(看完还不肯当我女朋友?)
  7. 自然语言处理 第二期
  8. 六十甲子亡命安葬山向宜忌
  9. 镇雄县赤水源品区域公用品牌介绍——中国赤水河源 好品世界珍享
  10. wan端口未连接怎么弄_路由器WAN口未连接解决方法,WAN口未连接怎么办