SDK开发文档
背景
此专栏主题旨在于帮助使用iMin POS机应用开发者,快速适配iMin的设备,从Android13开始,我们做了全新的升级,相比之前的SDK,可以做到一次适配,后续移植到其他iMin的设备或者版本升级,无需重新适配,同时针对Android大版本升级本身带来的适配工作量,我们做了适配指引,可参考Android版本应用适配指南
1. 快速集成SDK
方式一:(推荐)
在 settings.gradle 添加
dependencyResolutionManagement {
repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
repositories {
mavenCentral()
maven { url 'https://jitpack.io' }
}
}在 app/build.gradle 中增加以下代码
implementation 'com.github.iminsoftware:IminDeviceLibrary:3.0.0'完成后,重新build项目。
Demo可以参考该链接:https://github.com/iminsoftware/IminDeviceLibrary
方式二
下载 IminLib3.0.jar ,将jar文件放在libs目录下
在 app/build.gradle 中增加以下代码
implementation 'files("libs/IminLibs.jar")'导入jar包完成后,重新build项目。
开发文档,参考 IminLibs3.0接入指南,可以下载demo源码,进行功能测试
2. 初始化SDK
2.1 初始化
//在项目Application中初始化
DeviceManager.initialize(this);2.2 获取组件管理器
//获取组件管理器
DeviceManager mDeviceManager = DeviceManager.getDeviceManager(this);2.3 判断初始化是否成功
if(mDeviceManager.isInitialized()){
//初始化成功后才能调用相关功能
}3. API列表
3.1 获取设备信息相关API
3.1.1 获取设备型号
属性 |
描述 |
|---|---|
方法 |
|
参数 |
name:DEVICE_INFO_GET_MODEL |
返回参数 |
String result: 设备型号 |
示例 |
mDeviceManager.getDeviceInfoAsyn("DEVICE_INFO_GET_MODEL", new IAsyncCallback.Stub() {
@Override
public void onResult(String result) throws RemoteException {
Log.d(TAG, result);
}
}); |
3.1.2 获取设备的硬件平台
属性 |
描述 |
|---|---|
方法 |
|
参数 |
name:DEVICE_INFO_GET_PLATFORM |
返回参数 |
String result: 硬件平台 |
示例 |
mDeviceManager.getDeviceInfoAsyn("DEVICE_INFO_GET_PLATFORM", new IAsyncCallback.Stub() {
@Override
public void onResult(String result) throws RemoteException {
Log.d(TAG, result);
}
}); |
3.1.3 获取设备品牌
属性 |
描述 |
|---|---|
方法 |
|
参数 |
name:DEVICE_INFO_GET_BRAND |
返回参数 |
String result: 设备品牌 |
示例 |
mDeviceManager.getDeviceInfoAsyn("DEVICE_INFO_GET_BRAND", new IAsyncCallback.Stub() {
@Override
public void onResult(String result) throws RemoteException {
Log.d(TAG, result);
}
}); |
3.1.4 获取设备SN
属性 |
描述 |
|---|---|
方法 |
|
参数 |
name:DEVICE_INFO_GET_SN |
返回参数 |
String result: 设备SN |
示例 |
mDeviceManager.getDeviceInfoAsyn("DEVICE_INFO_GET_SN", new IAsyncCallback.Stub() {
@Override
public void onResult(String result) throws RemoteException {
Log.d(TAG, result);
}
}); |
3.1.5 获取设备是否为双屏
属性 |
描述 |
|---|---|
方法 |
|
参数 |
name:DEVICE_INFO_GET_DUALSCREEN |
返回参数 |
result: |
示例 |
mDeviceManager.getDeviceInfoAsyn("DEVICE_INFO_GET_DUALSCREEN", new IAsyncCallback.Stub() {
@Override
public void onResult(String result) throws RemoteException {
Log.d(TAG, result);
}
}); |
3.1.6 获取硬件设备信息
属性 |
描述 |
|---|---|
方法 |
|
参数 |
name:DEVICE_INFO_HW_INFO |
返回参数 |
String result: 返回数据参考 HardwareInfo 类 |
示例 |
mDeviceManager.getDeviceInfoAsyn("DEVICE_INFO_HW_INFO", new IAsyncCallback.Stub() {
@Override
public void onResult(String result) throws RemoteException {
Log.d(TAG, result);
}
}); |
3.1.7 获取网络信息相关信息
属性 |
描述 |
|---|---|
方法 |
|
参数 |
name:DEVICE_INFO_NETWORK_INFO |
返回参数 |
String result: 返回数据参考 NetworkInfo 类 |
示例 |
mDeviceManager.getDeviceInfoAsyn("DEVICE_INFO_NETWORK_INFO", new IAsyncCallback.Stub() {
@Override
public void onResult(String result) throws RemoteException {
Log.d(TAG, result);
}
}); |
3.1.8 获取设备软件的相关信息
属性 |
描述 |
|---|---|
方法 |
|
参数 |
name:DEVICE_INFO_SW_INFO |
返回参数 |
String result: 返回数据参考 SoftwareInfo 类 |
示例 |
mDeviceManager.getDeviceInfoAsyn("DEVICE_INFO_SW_INFO", new IAsyncCallback.Stub() {
@Override
public void onResult(String result) throws RemoteException {
Log.d(TAG, result);
}
}); |
3.1.9 获取设备显示的相关信息
属性 |
描述 |
|---|---|
方法 |
|
参数 |
name:DEVICE_INFO_DISPLAY_INFO |
返回参数 |
String result: 返回数据参考 DisplayInfo 类 |
示例 |
mDeviceManager.getDeviceInfoAsyn("DEVICE_INFO_DISPLAY_INFO", new IAsyncCallback.Stub() {
@Override
public void onResult(String result) throws RemoteException {
Log.d(TAG, result);
}
}); |
3.1.10 获取设备内存和存储空间的信息
属性 |
描述 |
|---|---|
方法 |
|
参数 |
name:DEVICE_INFO_MEMORY_INFO |
返回参数 |
String result: 返回数据参考 MemoryInfo 类 |
示例 |
mDeviceManager.getDeviceInfoAsyn("DEVICE_INFO_MEMORY_INFO", new IAsyncCallback.Stub() {
@Override
public void onResult(String result) throws RemoteException {
Log.d(TAG, result);
}
}); |
3.1.11 获取设备内存的详细信息
属性 |
描述 |
|---|---|
方法 |
|
参数 |
name:DEVICE_INFO_MEMORY_DETIAL_INFO |
返回参数 |
String result: 返回数据参考 MemoryDetail 类 |
示例 |
mDeviceManager.getDeviceInfoAsyn("DEVICE_INFO_MEMORY_DETIAL_INFO", new IAsyncCallback.Stub() {
@Override
public void onResult(String result) throws RemoteException {
Log.d(TAG, result);
}
}); |
3.1.12 获取设备存储空间的详细信息
属性 |
描述 |
|---|---|
方法 |
|
参数 |
name:DEVICE_INFO_STORAGE_INFO |
返回参数 |
String result: 返回数据参考 StorageDetail 类 |
示例 |
mDeviceManager.getDeviceInfoAsyn("DEVICE_INFO_STORAGE_INFO", new IAsyncCallback.Stub() {
@Override
public void onResult(String result) throws RemoteException {
Log.d(TAG, result);
}
}); |
3.1.13 获取cpu的相关信息
属性 |
描述 |
|---|---|
方法 |
|
参数 |
name:DEVICE_INFO_CPU_INFO |
返回参数 |
String result: 返回数据参考 CPUDetail 类 |
示例 |
mDeviceManager.getDeviceInfoAsyn("DEVICE_INFO_CPU_INFO", new IAsyncCallback.Stub() {
@Override
public void onResult(String result) throws RemoteException {
Log.d(TAG, result);
}
}); |
3.2 设备操作相关API
3.2.1 设置蓝牙名称
属性 |
描述 |
|---|---|
方法 |
|
功能 |
设置蓝牙名称 |
API限制 |
Android 15 |
参数 |
json:{"oemConfig":{"setBTName":"bt11"}} |
示例 |
JsonObject controlBean = new JsonObject();
JsonObject oemConfig = new JsonObject();
controlBean.add("oemConfig", oemConfig);
oemConfig.addProperty("setBTName", "bt11");
try {
mDeviceManager.sendAMCommandAsyn(new Gson().toJson(controlBean),
new IAsyncCallback.Stub() {
@Override
public void onResult(String result) throws RemoteException {
Log.d(TAG, result);
}
});
} catch (RemoteException e) {
e.printStackTrace();
} |
3.2.2 设置虚拟蓝牙名称
属性 |
描述 |
|---|---|
方法 |
|
功能 |
设置虚拟蓝牙名称 |
API限制 |
Android 15 |
参数 |
json:{"oemConfig":{"setDeviceVirtualBluetoothName":"vbt11"}} |
示例 |
JsonObject controlBean = new JsonObject();
JsonObject oemConfig = new JsonObject();
controlBean.add("oemConfig", oemConfig);
oemConfig.addProperty("setDeviceVirtualBluetoothName", "vbt11");
try {
mDeviceManager.sendAMCommandAsyn(new Gson().toJson(controlBean),
new IAsyncCallback.Stub() {
@Override
public void onResult(String result) throws RemoteException {
Log.d(TAG, result);
}
});
} catch (RemoteException e) {
e.printStackTrace();
} |
3.2.3 设置屏幕超时
属性 |
描述 |
|---|---|
方法 |
|
功能 |
设置屏幕超时 |
API限制 |
Android 15 |
参数 |
json:{"oemConfig":{"screenTimeout":"2000"}} |
示例 |
JsonObject controlBean = new JsonObject();
JsonObject oemConfig = new JsonObject();
controlBean.add("oemConfig", oemConfig);
oemConfig.addProperty("screenTimeout", "2000");
try {
mDeviceManager.sendAMCommandAsyn(new Gson().toJson(controlBean),
new IAsyncCallback.Stub() {
@Override
public void onResult(String result) throws RemoteException {
Log.d(TAG, result);
}
});
} catch (RemoteException e) {
e.printStackTrace();
} |
3.2.4 设置浮动窗口权限
属性 |
描述 |
|---|---|
方法 |
|
功能 |
设置浮动窗口权限 |
API限制 |
Android 15 |
参数 |
json:{"oemConfig":{"setAppsHaveAlertWindowPermiss":"com.example.app"}} |
示例 |
JsonObject controlBean = new JsonObject();
JsonObject oemConfig = new JsonObject();
JsonObject floatWindow = new JsonObject();
controlBean.add("oemConfig", oemConfig);
oemConfig.add("setAppsHaveAlertWindowPermiss", "com.example.app");
try {
mDeviceManager.sendAMCommandAsyn(new Gson().toJson(controlBean),
new IAsyncCallback.Stub() {
@Override
public void onResult(String result) throws RemoteException {
Log.d(TAG, result);
}
});
} catch (RemoteException e) {
e.printStackTrace();
} |
3.2.5 打开钱箱
属性 |
描述 |
|---|---|
方法 |
|
功能 |
打开钱箱 |
参数 |
json:{"peripheralConfig":{"openCashBox":true}} |
示例 |
JsonObject controlBean = new JsonObject();
JsonObject peripheral = new JsonObject();
controlBean.add("peripheralConfig", peripheral);
peripheral.addProperty("openCashBox", true);
try {
mDeviceManager.sendAMCommandAsyn(new Gson().toJson(controlBean),
new IAsyncCallback.Stub() {
@Override
public void onResult(String result) throws RemoteException {
Log.d(TAG, result);
}
});
} catch (RemoteException e) {
e.printStackTrace();
} |
3.2.6 设置主屏背光亮度
属性 |
描述 |
|---|---|
方法 |
|
功能 |
设置主屏背光亮度 |
API限制 |
Android 15 |
参数 |
json:{"peripheralConfig":{"screenBrightness":"3"}} |
示例 |
JsonObject controlBean = new JsonObject();
JsonObject peripheralConfig = new JsonObject();
controlBean.add("peripheralConfig", peripheralConfig);
oemConfig.addProperty("screenBrightness", "3");
try {
mDeviceManager.sendAMCommandAsyn(new Gson().toJson(controlBean),
new IAsyncCallback.Stub() {
@Override
public void onResult(String result) throws RemoteException {
Log.d(TAG, result);
}
});
} catch (RemoteException e) {
e.printStackTrace();
} |
3.2.7 副屏背光亮度
属性 |
描述 |
|---|---|
方法 |
|
功能 |
设置副屏背光亮度 |
API限制 |
Android 15 |
参数 |
json:{"peripheralConfig":{"subScreenBrightness":"3"}} |
示例 |
JsonObject controlBean = new JsonObject();
JsonObject peripheralConfig = new JsonObject();
controlBean.add("peripheralConfig", peripheralConfig);
oemConfig.addProperty("subScreenBrightness", "3");
try {
mDeviceManager.sendAMCommandAsyn(new Gson().toJson(controlBean),
new IAsyncCallback.Stub() {
@Override
public void onResult(String result) throws RemoteException {
Log.d(TAG, result);
}
});
} catch (RemoteException e) {
e.printStackTrace();
} |
3.2.8 设置WIFI开关
属性 |
描述 |
|---|---|
方法 |
|
功能 |
设置WIFI开关 |
参数 |
json:{"oemConfig":{"setWifiSwitch":true}} |
示例 |
JsonObject controlBean = new JsonObject();
JsonObject oemConfig = new JsonObject();
controlBean.add("oemConfig", oemConfig);
oemConfig.addProperty("setWifiSwitch", true);
try {
mDeviceManager.sendAMCommandAsyn(new Gson().toJson(controlBean),
new IAsyncCallback.Stub() {
@Override
public void onResult(String result) throws RemoteException {
Log.d(TAG, result);
}
});
} catch (RemoteException e) {
e.printStackTrace();
} |
3.2.9 设置蓝牙开关
属性 |
描述 |
|---|---|
方法 |
|
功能 |
设置蓝牙开关 |
参数 |
json:{"oemConfig":{"setBlueToothSwitch":true}} |
示例 |
JsonObject controlBean = new JsonObject();
JsonObject oemConfig = new JsonObject();
controlBean.add("oemConfig", oemConfig);
oemConfig.addProperty("setBlueToothSwitch", true);
try {
mDeviceManager.sendAMCommandAsyn(new Gson().toJson(controlBean),
new IAsyncCallback.Stub() {
@Override
public void onResult(String result) throws RemoteException {
Log.d(TAG, result);
}
});
} catch (RemoteException e) {
e.printStackTrace();
} |
3.2.10 显示隐藏状态栏
属性 |
描述 |
|---|---|
方法 |
|
功能 |
显示隐藏状态栏 |
参数 |
context:上下文 |
示例 |
mDeviceManager.setHideStatusBar(UIControlActivity.this, false); |
3.2.12 静默安装apk
属性 |
描述 |
|---|---|
方法 |
|
功能 |
静默安装apk |
API限制 |
Android 15 |
参数 |
json:{"oemConfig":{"installApkPackage":"cn.wch.usbdemo","installApkPath":"/sdcard/com.example.deletefile/usbTest.apk","isLaunchAfterInstallation":true,"isDeleteAfterInstallation":true}} |
示例 |
JsonObject controlBean = new JsonObject();
JsonObject oemConfig = new JsonObject();
controlBean.add("oemConfig", oemConfig);
oemConfig.addProperty("installApkPackage", "cn.wch.usbdemo");
oemConfig.addProperty("installApkPath", "/sdcard/com.example.deletefile/usbTest.apk");
oemConfig.addProperty("isLaunchAfterInstallation", true);
oemConfig.addProperty("isDeleteAfterInstallation", true);
try {
mDeviceManager.sendAMCommandAsyn(new Gson().toJson(controlBean),
new IAsyncCallback.Stub() {
@Override
public void onResult(String result) throws RemoteException {
Log.d(TAG, result);
}
});
} catch (RemoteException e) {
e.printStackTrace();
} |
3.2.13 设置权限授权
属性 |
描述 |
|---|---|
方法 |
|
功能 |
设置权限授权 |
API限制 |
Android 15 |
参数 |
json:{"oemConfig":{"defaultPermissionPolicy":{"permissionStatus":true,"permissionPkg":"com.device.manager.demo","permissionName":"android.permission.WRITE_EXTERNAL_STORAGE"}}} |
示例 |
JsonObject controlBean = new JsonObject();
JsonObject oemConfig = new JsonObject();
JsonObject permissionPolicy = new JsonObject();
controlBean.add("oemConfig", oemConfig);
oemConfig.add("defaultPermissionPolicy", permissionPolicy);
permissionPolicy.addProperty("permissionStatus", true);
permissionPolicy.addProperty("permissionName", "android.permission.WRITE_EXTERNAL_STORAGE");
permissionPolicy.addProperty("permissionPkg", "com.example.iminlibsdemo");
try {
mDeviceManager.sendAMCommandAsyn(new Gson().toJson(controlBean),
new IAsyncCallback.Stub() {
@Override
public void onResult(String result) throws RemoteException {
Log.d(TAG, result);
}
});
} catch (RemoteException e) {
e.printStackTrace();
} |
3.2.14 授予申明的所有权限
属性 |
描述 |
|---|---|
方法 |
|
功能 |
授予申明的所有权限 |
API限制 |
Android 15 |
参数 |
json:{"OEMApplicationPolicy":[{"packageName":"com.example.iminlibsdemo","allRuntimePermissionPolicy":"GRANT"}]} |
示例 |
JsonObject controlBean = new JsonObject();
JsonArray OEMApplicationPolicy = new JsonArray();
controlBean.add("OEMApplicationPolicy", OEMApplicationPolicy);
JsonObject item = new JsonObject();
item.addProperty("packageName", "com.example.iminlibsdemo");
item.addProperty("allRuntimePermissionPolicy", "GRANT");
OEMApplicationPolicy.add(item);
try {
mDeviceManager.sendAMCommandAsyn(new Gson().toJson(controlBean),
new IAsyncCallback.Stub() {
@Override
public void onResult(String result) throws RemoteException {
Log.d(TAG, result);
}
});
} catch (RemoteException e) {
e.printStackTrace();
} |
3.2.15 指定包名应用开机后启动
属性 |
描述 |
|---|---|
方法 |
|
功能 |
指定包名应用开机后启动 |
API限制 |
Android 15 |
参数 |
json:{"OEMApplicationPolicy":[{"packageName":"com.example.iminlibsdemo","setAppStartOnBoot":true}]} |
示例 |
JsonObject controlBean = new JsonObject();
JsonArray OEMApplicationPolicy = new JsonArray();
controlBean.add("OEMApplicationPolicy", OEMApplicationPolicy);
JsonObject item = new JsonObject();
item.addProperty("packageName", "com.example.iminlibsdemo");
item.addProperty("setAppStartOnBoot", true);
OEMApplicationPolicy.add(item);
try {
mDeviceManager.sendAMCommandAsyn(new Gson().toJson(controlBean),
new IAsyncCallback.Stub() {
@Override
public void onResult(String result) throws RemoteException {
Log.d(TAG, result);
}
});
} catch (RemoteException e) {
e.printStackTrace();
} |
3.2.16 设置系统时间与时区
属性 |
描述 |
|---|---|
方法 |
|
功能 |
设置系统时间与时区 |
API限制 |
Android 15 |
参数 |
json:{"oemConfig":{"setTime":1767086226000,"setTimeZone":"Asia/Shanghai"}} |
示例 |
JsonObject controlBean = new JsonObject();
JsonObject oemConfig = new JsonObject();
controlBean.add("oemConfig", oemConfig);
oemConfig.addProperty("setTime", 1767086226000L);
oemConfig.addProperty("setTimeZone", "Asia/Shanghai");
try {
mDeviceManager.sendAMCommandAsyn(new Gson().toJson(controlBean),
new IAsyncCallback.Stub() {
@Override
public void onResult(String result) throws RemoteException {
Log.d(TAG, result);
}
});
} catch (RemoteException e) {
e.printStackTrace();
} |
3.3 Psam
3.3.1 配置psam参数
属性 |
描述 |
|---|---|
方法 |
|
功能 |
配置psam参数 |
参数 |
context:上下文 |
示例 |
byte slot = 0x01;
mDeviceManager.iccDevParaSet(context, slot, (byte) 0, (byte) 0, (byte) 0); |
3.3.2 打开psam
属性 |
描述 |
|---|---|
方法 |
|
功能 |
打开psam |
参数 |
slot:卡通道号 |
示例 |
byte[] atr = new byte[40];
byte slot = 0x01;
mDeviceManager.openPsam(context, slot, (byte) 1, atr); |
3.3.3 关闭psam
属性 |
描述 |
|---|---|
方法 |
|
功能 |
关闭psam |
参数 |
context:上下文 |
示例 |
byte slot = 0x01;
mDeviceManager.closePsam(context, slot); |
3.3.4 发送psam指令
属性 |
描述 |
|---|---|
方法 |
|
功能 |
发送psam指令 |
参数 |
context:上下文 |
示例 |
byte slot = 0x01;
byte[] apduSend = new byte[600];
byte[] apduRecv = new byte[600];
apduSend[0] = = (byte) 0x00;
apduSend[1] = = (byte) 0xa4;
apduSend[2] = = (byte) 0x04;
apduSend[3] = = (byte) 0x00;
apduSend[4] = = (byte) 0x00;
apduSend[5] = = (byte) 0x0e;
System.arraycopy("1PAY.SYS.DDF01".getBytes(), 0, apduSend, 6, 14);
mDeviceManager.commandPsam(context, slot, apduSend, apduRecv); |
3.3.5 发送psam指令(new)
属性 |
描述 |
|---|---|
方法 |
|
功能 |
发送psam指令(新版本) |
参数 |
context:上下文 |
示例 |
byte slot = 0x01;
byte[] apduSend = new byte[600];
byte[] apduRecv = new byte[600];
apduSend[0] = = (byte) 0x00;
apduSend[1] = = (byte) 0xa4;
apduSend[2] = = (byte) 0x04;
apduSend[3] = = (byte) 0x00;
apduSend[4] = = (byte) 0x00;
apduSend[5] = = (byte) 0x0e;
System.arraycopy("1PAY.SYS.DDF01".getBytes(), 0, apduSend, 6, 14);
mDeviceManager.sendPsamCommandNew(context, slot, apduSend, apduRecv); |
3.4 USB Light
3.4.1 获取设备
属性 |
描述 |
|---|---|
方法 |
|
功能 |
获取设备 |
示例 |
mDeviceManager.getLightDevice(context) |
3.4.2 连接设备
属性 |
描述 |
|---|---|
方法 |
|
功能 |
连接USB灯设备 |
参数 |
context:上下文 |
示例 |
UsbDevice device = mDeviceManager.getLightDevice(context);
mDeviceManager.connectLightDevice(context); |
3.4.3 打开usb绿灯
属性 |
描述 |
|---|---|
方法 |
|
功能 |
打开usb绿灯 |
示例 |
mDeviceManager.turnOnGreenLight(context) |
3.4.4 打开usb红灯
属性 |
描述 |
|---|---|
方法 |
|
功能 |
打开usb红灯 |
示例 |
mDeviceManager.turnOnRedLight(context) |
3.4.5 关闭usb灯
属性 |
描述 |
|---|---|
方法 |
|
功能 |
关闭usb灯 |
示例 |
mDeviceManager.turnOffLight(context) |
3.4.6 断开连接设备
属性 |
描述 |
|---|---|
方法 |
|
功能 |
断开USB灯设备连接 |
参数 |
context:上下文 |
示例 |
mDeviceManager.disconnectLightDevice(context); |
4. 设备信息返回数据参考表
类名:HardwareInfo
设备硬件的相关信息。仅当设备政策中的 hardwareStatusEnabled 为 true 时,与温度阈值相关的字段才可用。
字段 |
类型 |
字段长度 |
是否必须 |
说明 |
|---|---|---|---|---|
brand |
String |
128 |
是 |
设备的品牌。例如 Google。 |
hardware |
String |
128 |
否 |
硬件的名称。例如 Angler。 |
deviceBasebandVersion |
String |
128 |
否 |
基带版本。例如 MDM9625_104662.22.05.34p。 |
manufacturer |
String |
128 |
否 |
制造商。例如 imin。 |
serialNumber |
String |
128 |
否 |
设备序列号。 |
model |
String |
128 |
否 |
设备的型号。例如I25D01 。 |
deviceName |
String |
128 |
否 |
设备名称 例如Swift 2 Pro |
batteryShutdownTemperatures |
Number[] |
10 |
否 |
设备上每块电池的电池关闭温度阈值(以摄氏度为单位)。 |
cpuShutdownTemperatures |
Number[] |
10 |
否 |
设备上每个 CPU 的 CPU 关闭温度阈值(以摄氏度为单位)。 |
cpuThrottlingTemperatures |
Number[] |
10 |
否 |
设备上每个 CPU 的 CPU 节流温度阈值(以摄氏度为单位)。 |
gpuShutdownTemperatures |
Number[] |
10 |
否 |
设备上每个 GPU 的 GPU 关闭温度阈值(以摄氏度为单位)。 |
gpuThrottlingTemperatures |
Number[] |
10 |
否 |
设备上每个 GPU 的 GPU 节流温度阈值(以摄氏度为单位)。 |
skinShutdownTemperatures |
Number[] |
10 |
否 |
设备皮肤关闭温度阈值(以摄氏度为单位)。 |
skinThrottlingTemperatures |
Number[] |
10 |
否 |
设备皮肤节流温度阈值(以摄氏度为单位)。 |
enterpriseSpecificId |
String |
128 |
否 |
仅限输出。用于唯一标识特定组织中的个人自有设备的 ID。在同一实体设备上注册到同一组织后,此 ID 在设置乃至恢复出厂设置后依然有效。此 ID 适用于装有工作资料的个人自有设备(搭载 Android 12 及更高版本的设备)。 |
类名:NetworkInfo
设备网络信息
字段 |
类型 |
字段长度 |
是否必须 |
说明 |
|---|---|---|---|---|
imei |
String |
128 |
是 |
GSM 设备的 IMEI 号码。例如 A1000031212。 |
meid |
String |
128 |
是 |
CDMA 设备的 MEID 号。例如 A00000292788E1。 |
wifiMacAddress |
String |
128 |
否 |
设备的 Wi-Fi MAC 地址。例如 7c:11:11:11:11:11。 |
telephonyInfos |
TelephonyInfo[] |
10 |
否 |
提供与设备上的每张 SIM 卡相关联的电话信息。 |
类名:TelephonyInfo
与设备上指定 SIM 卡相关的电话信息。仅在 Android API 级别 23 及更高版本的全代管式设备上受支持。
字段 |
类型 |
字段长度 |
是否必须 |
说明 |
|---|---|---|---|---|
phoneNumber |
String |
32 |
否 |
与此设备关联的电话号码(如果有)。 |
carrierName |
String |
128 |
否 |
运营商名称。 |
类名:SoftwareInfo
设备软件的相关信息
字段 |
类型 |
字段长度 |
是否必须 |
说明 |
|---|---|---|---|---|
androidVersion |
String |
128 |
是 |
用户可见的 Android 版本字符串 |
androidBuildNumber |
String |
128 |
否 |
旨在向用户显示的 Android build ID 字符串。 |
deviceKernelVersion |
String |
64 |
否 |
内核版本,例如 2.6.32.9-g103d848。 |
bootloaderVersion |
String |
128 |
否 |
系统引导加载程序版本号,例如0.6.7 |
securityPatchLevel |
String |
128 |
否 |
安全补丁级别,例如2016-05-01。 |
androidBuildTime |
String |
128 |
否 |
构建时间。时间戳采用 RFC3339 世界协调时间(UTC,即"祖鲁时")格式,精确到纳秒,最多九个小数位。示例:"2014-10-02T15:01:23Z" 和 "2014-10-02T15:01:23.045123456Z"。 |
primaryLanguageCode |
String |
128 |
否 |
设备上主要语言区域的 IETF BCP 47 语言代码。 |
deviceBuildSignature |
String |
128 |
否 |
与系统软件包关联的 android.content.pm.Signature 的 SHA-256 哈希值,可用于验证系统 build 是否未经修改。 |
类名:DisplayInfo
设备显示信息
字段 |
类型 |
字段长度 |
是否必须 |
说明 |
|---|---|---|---|---|
name |
String |
128 |
是 |
显示设备的名称。 |
displayId |
Integer |
32 |
是 |
唯一显示 ID。 |
width |
Integer |
32 |
否 |
屏幕宽度(像素)。 |
height |
Integer |
32 |
否 |
屏幕高度(像素)。 |
density |
Integer |
32 |
否 |
屏幕密度(DPI)。 |
refreshRate |
Integer |
32 |
是 |
显示屏的刷新率(以每秒帧数为单位)。 |
state |
String |
128 |
否 |
屏幕的状态。 |
类名:MemoryInfo
设备内存和存储空间的信息
字段 |
类型 |
字段长度 |
是否必须 |
说明 |
|---|---|---|---|---|
totalRam |
String |
32 |
否 |
设备上的 RAM 总容量(以字节为单位)。 |
totalInternalStorage |
String |
32 |
否 |
设备内部存储空间总量(以字节为单位) |
类名:MemoryDetail
有关设备内存信息。
字段 |
类型 |
字段长度 |
是否必须 |
说明 |
|---|---|---|---|---|
totalMemory |
String |
32 |
是 |
总内存 |
freeMemory |
String |
32 |
是 |
free memory 未分配内存 |
availableMemory |
String |
32 |
否 |
available memory 未分配内存+可回收内存,可用内存以该属性为主 |
usedMemory |
String |
32 |
否 |
used memory |
buffers |
String |
32 |
否 |
Buffer是为了cpu和块设备(block device)之间读写速度不对等而设计的,Buffers统计的就是这部分缓冲区的内存总大小。这部分内存drop cache可以被回收。 |
cached |
String |
32 |
否 |
cached用于文件高速缓存,不包括swapcache和buffers即Cached = file pages-swapcache-buffers约等于 Active(file) + Inactive(file) |
swapTotal |
String |
32 |
否 |
swap total |
swapFree |
String |
32 |
否 |
swap free |
shmem |
String |
32 |
否 |
shmem被各个进程共享的内存页的数量tmpfs所使用的内存.tmpfs即利用物理内存来提供RAM磁盘的功能。在tmpfs上保存文件时,文件系统会暂时将它们保存到磁盘高速缓存上,因此它是属于磁盘高速缓存对应的"buffers+cached"一类。但是由于磁盘上并没有与之对应的内容,因此它并未记录在File-backed内存对应的LRU列表上,而是记录在匿名内存的LRU表上。这就是 buffers + cached = Active(file) + Inactive(file) + Shmem 公式的由来 |
sreclaimable |
String |
32 |
否 |
sreclaimable count Slab可被回收的量。调用kmem_getpages()时加上SLAB_RECLAIM_ACCOUNT标记,表明是可回收的,计入SReclaimable,否则计入SUnreclaim。 |
swap |
String |
32 |
否 |
swap |
类名:CPUDetail
有关CPU的信息
字段 |
类型 |
字段长度 |
是否必须 |
说明 |
|---|---|---|---|---|
model |
String |
128 |
是 |
model |
manufacturer |
String |
128 |
否 |
manufacturer Name |
totalCPU |
String |
128 |
否 |
cpu总赫兹数 |
usedCPU |
String |
128 |
否 |
cpu已占用赫兹 |
cores |
String |
128 |
否 |
核心数 |
cpuList |
List<CPUItem> |
128 |
否 |
cpu簇 sys/devices/system/cpu/cpufreq/policyXX表示簇的路径 |
-- frequency |
String |
128 |
否 |
当前频率 sys/devices/system/cpu/cpufreq/policyX/scaling_cur_freq |
-- minfreq |
String |
128 |
否 |
当前最小频率 sys/devices/system/cpu/cpufreq/policyX/scaling_min_freq |
-- maxfreq |
String |
128 |
否 |
当前最大频率 sys/devices/system/cpu/cpufreq/policyX/cpuinfo_max_freq |
-- frequencyList |
List<String> |
N |
否 |
支持频率 sys/devices/system/cpu/cpufreq/policyX/scaling_available_frequencies |
-- mode |
String |
128 |
否 |
当前模式 sys/devices/system/cpu/cpufreq/policyX/scaling_governor |
-- modeList |
List<String> |
128 |
否 |
支持模式 sys/devices/system/cpu/cpufreq/policyX/scaling_available_governors |
-- online |
String |
128 |
否 |
在线状态 /sys/devices/system/cpu/cpuX/online |
类名:StorageDetail
设备存储空间详细信息
字段 |
类型 |
字段长度 |
是否必须 |
说明 |
|---|---|---|---|---|
id |
String |
- |
否 |
存储唯一标识 |
availableStorage |
String |
- |
否 |
可用存储大小 |
totalStorage |
String |
- |
否 |
总存储大小 |
usedStorage |
String |
- |
否 |
已用存储大小 |
volumes |
StorageVolume |
- |
否 |
存储卷信息 |
类名:StorageVolume
存储卷信息
字段 |
类型 |
字段长度 |
是否必须 |
说明 |
|---|---|---|---|---|
type |
String |
- |
否 |
卷名称 |
fsType |
String |
- |
否 |
类型 |
state |
String |
- |
否 |
卷的当前状态 |
fsUuid |
String |
- |
否 |
存储卷的唯一标识符 |
path |
String |
- |
否 |
卷的挂载点路径 |