From cfdc2863b57493ed067e4bf9f01a15f772b264e0 Mon Sep 17 00:00:00 2001 From: yanyilin Date: Fri, 5 Jul 2024 16:03:05 +0800 Subject: [PATCH] =?UTF-8?q?=E5=90=8C=E6=AD=A5uni-getbatteryinfo=E6=8F=92?= =?UTF-8?q?=E4=BB=B6=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../utssdk/app-android/index.uts | 127 +++++----- .../utssdk/app-ios/index.uts | 69 +++--- .../uni-getbatteryinfo/utssdk/interface.uts | 217 +++++++++--------- .../uni-getbatteryinfo/utssdk/unierror.uts | 34 +++ 4 files changed, 237 insertions(+), 210 deletions(-) create mode 100644 uni_modules/uni-getbatteryinfo/utssdk/unierror.uts diff --git a/uni_modules/uni-getbatteryinfo/utssdk/app-android/index.uts b/uni_modules/uni-getbatteryinfo/utssdk/app-android/index.uts index 060043b8..ea5f4e84 100644 --- a/uni_modules/uni-getbatteryinfo/utssdk/app-android/index.uts +++ b/uni_modules/uni-getbatteryinfo/utssdk/app-android/index.uts @@ -1,83 +1,76 @@ import Context from "android.content.Context"; import BatteryManager from "android.os.BatteryManager"; -import { GetBatteryInfo, GetBatteryInfoOptions, GetBatteryInfoSuccess, GetBatteryInfoResult,GetBatteryInfoSync } from '../interface.uts' -import IntentFilter from 'android.content.IntentFilter'; -import Intent from 'android.content.Intent'; - +import { GetBatteryInfo, GetBatteryInfoOptions, GetBatteryInfoSuccess, GetBatteryInfoResult, GetBatteryInfoSync } from '../interface.uts' +import IntentFilter from 'android.content.IntentFilter'; +import Intent from 'android.content.Intent'; + +import { GetBatteryInfoFailImpl } from '../unierror'; /** * 异步获取电量 */ -export const getBatteryInfo : GetBatteryInfo = function (options : GetBatteryInfoOptions) { - +export const getBatteryInfo : GetBatteryInfo = function (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 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 : GetBatteryInfoSuccess = { - errMsg: 'getBatteryInfo:ok', - level, - isCharging: isCharging - } - options.success?.(res) - options.complete?.(res) - } else { - const res = new UniError("uni-getBatteryInfo", 1001, "getBatteryInfo:fail getAppContext is null") - options.fail?.(res) - options.complete?.(res) + const res : GetBatteryInfoSuccess = { + errMsg: 'getBatteryInfo:ok', + level, + isCharging: isCharging } + options.success?.(res) + options.complete?.(res) + } else { + let res = new GetBatteryInfoFailImpl(1001); + options.fail?.(res) + options.complete?.(res) + } } /** - * 同步获取电量示例 + * 同步获取电量 */ -export const getBatteryInfoSync : GetBatteryInfoSync = function (): GetBatteryInfoResult { - - 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 : GetBatteryInfoResult = { - level: level, - isCharging: isCharging - }; - - return res; - } - else { - /** - * 无有效上下文 - */ - const res : GetBatteryInfoResult = { - level: -1, - isCharging: false - }; - return res; - } +export const getBatteryInfoSync : GetBatteryInfoSync = function () : GetBatteryInfoResult { + 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 : GetBatteryInfoResult = { + level: level, + isCharging: isCharging + }; + return res; + } + else { + /** + * 无有效上下文 + */ + const res : GetBatteryInfoResult = { + level: -1, + isCharging: false + }; + return res; + } } diff --git a/uni_modules/uni-getbatteryinfo/utssdk/app-ios/index.uts b/uni_modules/uni-getbatteryinfo/utssdk/app-ios/index.uts index a78e1abc..05cc7216 100644 --- a/uni_modules/uni-getbatteryinfo/utssdk/app-ios/index.uts +++ b/uni_modules/uni-getbatteryinfo/utssdk/app-ios/index.uts @@ -1,35 +1,36 @@ -// 引用 iOS 原生平台 api -import { UIDevice } from "UIKit"; - -import { GetBatteryInfo, GetBatteryInfoSuccess, GetBatteryInfoResult, GetBatteryInfoSync } from '../interface.uts'; - -/** - * 导出 获取电量方法 - */ -export const getBatteryInfo : GetBatteryInfo = function (options) { - - // 开启电量检测 - UIDevice.current.isBatteryMonitoringEnabled = true - - // 返回数据 - const res : GetBatteryInfoSuccess = { - errMsg: "getBatteryInfo:ok", - level: Math.abs(Number(UIDevice.current.batteryLevel * 100)), - isCharging: UIDevice.current.batteryState == UIDevice.BatteryState.charging, - }; - options.success?.(res); - options.complete?.(res); -} - -export const getBatteryInfoSync : GetBatteryInfoSync = function (): GetBatteryInfoResult { - - // 开启电量检测 - UIDevice.current.isBatteryMonitoringEnabled = true - - // 返回数据 - const res : GetBatteryInfoResult = { - level: Math.abs(Number(UIDevice.current.batteryLevel * 100)), - isCharging: UIDevice.current.batteryState == UIDevice.BatteryState.charging, - }; - return res; +// 引用 iOS 原生平台 api +import { UIDevice } from "UIKit"; + +import { GetBatteryInfo, GetBatteryInfoSuccess, GetBatteryInfoResult, GetBatteryInfoSync } from '../interface.uts'; + +/** + * 异步获取电量 + */ +export const getBatteryInfo : GetBatteryInfo = function (options) { + // 开启电量检测 + UIDevice.current.isBatteryMonitoringEnabled = true + + // 返回数据 + const res : GetBatteryInfoSuccess = { + errMsg: "getBatteryInfo:ok", + level: Math.abs(Number(UIDevice.current.batteryLevel * 100)), + isCharging: UIDevice.current.batteryState == UIDevice.BatteryState.charging, + }; + options.success?.(res); + options.complete?.(res); +} + +/** + * 同步获取电量 + */ +export const getBatteryInfoSync : GetBatteryInfoSync = function () : GetBatteryInfoResult { + // 开启电量检测 + UIDevice.current.isBatteryMonitoringEnabled = true + + // 返回数据 + const res : GetBatteryInfoResult = { + level: Math.abs(Number(UIDevice.current.batteryLevel * 100)), + isCharging: UIDevice.current.batteryState == UIDevice.BatteryState.charging, + }; + return res; } diff --git a/uni_modules/uni-getbatteryinfo/utssdk/interface.uts b/uni_modules/uni-getbatteryinfo/utssdk/interface.uts index d674221a..6b413abe 100644 --- a/uni_modules/uni-getbatteryinfo/utssdk/interface.uts +++ b/uni_modules/uni-getbatteryinfo/utssdk/interface.uts @@ -1,112 +1,107 @@ -export type GetBatteryInfoSuccess = { - errMsg : string, - /** - * 设备电量,范围1 - 100 - */ - level : number, - /** - * 是否正在充电中 - */ - isCharging : boolean -} - -// export type GetBatteryInfoFail = { -// /** -// * 错误码 -// */ -// errCode : number, -// /** -// * 调用API的名称 -// */ -// errSubject : string, -// /** -// * 错误的详细信息 -// */ -// errMsg : string, -// /** -// * 错误来源 -// */ -// cause : any | null -// } - - - -export type GetBatteryInfoOptions = { - /** - * 接口调用结束的回调函数(调用成功、失败都会执行) - */ - success ?: (res : GetBatteryInfoSuccess) => void - /** - * 接口调用失败的回调函数 - */ - fail ?: (res : UniError) => void - /** - * 接口调用成功的回调 - */ - complete ?: (res : any) => void +export type GetBatteryInfoSuccess = { + errMsg : string, + /** + * 设备电量,范围1 - 100 + */ + level : number, + /** + * 是否正在充电中 + */ + isCharging : boolean +} + +export type GetBatteryInfoOptions = { + /** + * 接口调用结束的回调函数(调用成功、失败都会执行) + */ + success ?: (res : GetBatteryInfoSuccess) => void + /** + * 接口调用失败的回调函数 + */ + fail ?: (res : UniError) => void + /** + * 接口调用成功的回调 + */ + complete ?: (res : any) => void +} + +export type GetBatteryInfoResult = { + /** + * 设备电量,范围1 - 100 + */ + level : number, + /** + * 是否正在充电中 + */ + isCharging : boolean } -export type GetBatteryInfoResult = { - /** - * 设备电量,范围1 - 100 - */ - level : number, - /** - * 是否正在充电中 - */ - isCharging : boolean -} - -/** -* 获取电量信息 -* @param {GetBatteryInfoOptions} options -* -* -* @tutorial https://uniapp.dcloud.net.cn/api/system/batteryInfo.html -* @platforms APP-IOS = ^9.0,APP-ANDROID = ^22 -* @since 3.6.11 -* -* @assert () => success({errCode: 0, errSubject: "uni-getBatteryInfo", errMsg: "getBatteryInfo:ok", level: 60, isCharging: false }) -* @assert () => fail({errCode: 1001, errSubject: "uni-getBatteryInfo", errMsg: "getBatteryInfo:fail getAppContext is null" }) -*/ +/** + * 错误码 + * - 1001 getAppContext is null + */ +export type GetBatteryInfoErrorCode = 1001 ; +/** + * GetBatteryInfo 的错误回调参数 + */ +export interface GetBatteryInfoFail extends IUniError { + errCode : GetBatteryInfoErrorCode +}; + +/** +* 获取电量信息 +* @param {GetBatteryInfoOptions} options +* +* +* @tutorial https://uniapp.dcloud.net.cn/api/system/batteryInfo.html +* @platforms APP-IOS = ^9.0,APP-ANDROID = ^22 +* @since 3.6.11 +* +* @assert () => success({errCode: 0, errSubject: "uni-getBatteryInfo", errMsg: "getBatteryInfo:ok", level: 60, isCharging: false }) +* @assert () => fail({errCode: 1001, errSubject: "uni-getBatteryInfo", errMsg: "getBatteryInfo:fail getAppContext is null" }) +*/ export type GetBatteryInfo = (options : GetBatteryInfoOptions) => void - -export type GetBatteryInfoSync = () => GetBatteryInfoResult - -interface Uni { - - /** - * 获取电池电量信息 - * @description 获取电池电量信息 - * @param {GetBatteryInfoOptions} options - * @example - * ```typescript - * uni.getBatteryInfo({ - * success(res) { - * console.log(res); - * } - * }) - * ``` - * @remark - * - 该接口需要同步调用 - * @uniPlatform { - * "app": { - * "android": { - * "osVer": "4.4.4", - * "uniVer": "3.6.11", - * "unixVer": "3.9.0" - * }, - * "ios": { - * "osVer": "9.0", - * "uniVer": "3.6.11", - * "unixVer": "3.9.0" - * } - * } - * } - * @uniVueVersion 2,3 //支持的vue版本 - * - */ + +export type GetBatteryInfoSync = () => GetBatteryInfoResult + +interface Uni { + + /** + * 获取电池电量信息 + * @description 获取电池电量信息 + * @param {GetBatteryInfoOptions} options + * @example + * ```typescript + * uni.getBatteryInfo({ + * success(res) { + * console.log(res); + * } + * }) + * ``` + * @remark + * - 该接口需要同步调用 + * @uniPlatform { + * "app": { + * "android": { + * "osVer": "4.4.4", + * "uniVer": "3.6.11", + * "unixVer": "3.9.0" + * }, + * "ios": { + * "osVer": "12.0", + * "uniVer": "3.6.11", + * "unixVer": "4.11" + * } + * }, + * "web": { + * "uniVer": "3.6.11", + * "unixVer": "4.0" + * } + * } + * @uniVueVersion 2,3 //支持的vue版本 + * + */ getBatteryInfo (options : GetBatteryInfoOptions) : void, /** * 同步获取电池电量信息 @@ -125,15 +120,19 @@ interface Uni { * "unixVer": "3.9.0" * }, * "ios": { - * "osVer": "9.0", + * "osVer": "12.0", * "uniVer": "3.6.11", - * "unixVer": "3.9.0" + * "unixVer": "4.11" * } + * }, + * "web": { + * "uniVer": "3.6.11", + * "unixVer": "4.0" * } * } * @uniVueVersion 2,3 //支持的vue版本 * */ - getBatteryInfoSync():GetBatteryInfoResult - + getBatteryInfoSync():GetBatteryInfoResult + } diff --git a/uni_modules/uni-getbatteryinfo/utssdk/unierror.uts b/uni_modules/uni-getbatteryinfo/utssdk/unierror.uts new file mode 100644 index 00000000..511c66cc --- /dev/null +++ b/uni_modules/uni-getbatteryinfo/utssdk/unierror.uts @@ -0,0 +1,34 @@ +import { GetBatteryInfoErrorCode, GetBatteryInfoFail } from "./interface.uts" +/** + * 错误主题 + */ +export const UniErrorSubject = 'uni-getBatteryInfo'; + + +/** + * 错误信息 + * @UniError + */ +export const UniErrors : Map = new Map([ + /** + * 错误码及对应的错误信息 + */ + [1001, 'getBatteryInfo:fail getAppContext is null'], +]); + + +/** + * 错误对象实现 + */ +export class GetBatteryInfoFailImpl extends UniError implements GetBatteryInfoFail { + + /** + * 错误对象构造函数 + */ + constructor(errCode : GetBatteryInfoErrorCode) { + super(); + this.errSubject = UniErrorSubject; + this.errCode = errCode; + this.errMsg = UniErrors[errCode] ?? ""; + } +} \ No newline at end of file -- GitLab