import Context from "android.content.Context"; import BatteryManager from "android.os.BatteryManager"; import { UTSAndroid } from "io.dcloud.uts"; import IntentFilter from 'android.content.IntentFilter'; import Intent from 'android.content.Intent'; export type GetBatteryInfoOptions = { success?: (res: object) => void fail?: (res: object) => void complete?: (res: object) => void } export function getBatteryInfo(options: GetBatteryInfoOptions) { const context = UTSAndroid.getAppContext(); if (context != null) { const manager = context.getSystemService( Context.BATTERY_SERVICE ) as BatteryManager; const level = manager.getIntProperty( BatteryManager.BATTERY_PROPERTY_CAPACITY ); let ifilter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED); let batteryStatus = context.registerReceiver(null, ifilter); let status = batteryStatus?.getIntExtra(BatteryManager.EXTRA_STATUS, -1); let isCharging = status == BatteryManager.BATTERY_STATUS_CHARGING || status == BatteryManager.BATTERY_STATUS_FULL; const res = { errCode: 0, errSubject: "uni-getBatteryInfo", errMsg: "getBatteryInfo:ok", level, isCharging: isCharging } options.success?.(res) options.complete?.(res) } else { const res = { errCode: 1001, errSubject: "uni-getBatteryInfo", errMsg: 'getBatteryInfo:fail getAppContext is null' } options.fail?.(res) options.complete?.(res) } }