本文同步发表于我的微信公众号,微信搜索 程语新视界 即可关注,每个工作日都有文章更新
一、系统属性与信息
1. 设备信息获取
import system from '@ohos.system';
// 获取设备信息
const deviceInfo: system.DeviceInfo = system.getDeviceInfo();
DeviceInfo = system.getDeviceInfo();
console.log(`设备型号: ${deviceInfo.deviceType}`); // 设备类型(phone/tablet/tv等)
console.log(`设备名称: ${deviceInfo.deviceName}`); // 设备名称
console.log(`系统版本: ${deviceInfo.osVersion}`); // 系统版本
console.log(`序列号: ${deviceInfo.serial}`); // 设备序列号
console.log(`主板名称: ${deviceInfo.board}`); // 主板信息
console.log(`品牌: ${deviceInfo.brand}`); // 设备品牌
console.log(`安全补丁级别: ${deviceInfo.securityPatch}`); // 安全补丁日期
console.log(`ABI列表: ${deviceInfo.abiList}`); // 支持的ABI架构
2. 系统配置信息
// 获取系统配置
const config: system.SystemConfig = system.getSystemConfig();
console.log(`语言: ${config.language}`); // 系统语言
console.log(`地区: ${config.region}`); // 系统地区
console.log(`屏幕方向: ${config.screenDensity}`); // 屏幕密度(dpi)
console.log(`时区: ${config.timeZone}`); // 系统时区
3. 系统能力查询
// 检查系统能力
const capabilities: system.SystemCapability[] = [
'SystemCapability.Multimedia.Camera',
'SystemCapability.Communication.Bluetooth'
];
capabilities.forEach(cap => {
console.log(`支持${cap}: ${system.hasSystemCapability(cap)}`);
});
二、系统状态监控
1. 电量信息
// 获取电量信息
const batteryInfo: system.BatteryInfo = system.getBatteryInfo();
console.log(`电量百分比: ${batteryInfo.batteryLevel}%`);
console.log(`充电状态: ${batteryInfo.chargingStatus}`); // 1-充电中, 2-未充电
console.log(`健康状态: ${batteryInfo.healthStatus}`); // 1-良好, 2-过热等
console.log(`充电类型: ${batteryInfo.pluggedType}`); // 0-未充电, 1-AC充电等
// 监听电量变化
system.on('batteryChange', (data) => {
console.log('电量变化:', data);
});
2. 内存信息
// 获取内存信息
const memoryInfo: system.MemoryInfo = system.getMemoryInfo();
console.log(`总内存: ${memoryInfo.totalMem} bytes`);
console.log(`可用内存: ${memoryInfo.availMem} bytesmemoryInfo.availMem} bytes`);
console.log(`是否低内存: ${memoryInfo.isLowMemory}`);
// 监听内存状态
system.on('memoryWarning', (level) => {
console.log(`内存警告级别: ${level}`); // 1-低, 2-中等, 3-严重
});
3. 存储信息
// 获取存储信息
const storageInfo: system.StorageInfo = system.getStorageInfo();
console.log(`总存储: ${storageInfo.totalSize} bytes`);
console.log(`可用存储: ${storageInfo.availSize} bytes`);
4. 网络状态
// 获取网络信息
const networkInfo: system.NetworkInfo = system.getNetworkInfo();
console.log(`网络类型: ${networkInfo.networkType}`); // 1-WiFi, 2-蜂窝等
console.log(`是否联网: ${networkInfo.isConnected}`);
console.log(`是否计费网络: ${networkInfo.isMetered}`);
// 监听网络变化
system.on('networkChange', (data) => {
console.log('网络状态变化:', data);
});
三、系统控制功能
1. 电源管理
// 保持屏幕常亮
system.setScreenKeepOn(true);
// 获取屏幕状态
const screenState: system.ScreenState = system.getScreenState();
console.log(`屏幕状态: ${screenState}`); // 0-关闭, 1-开启, 2-锁屏
// 监听屏幕状态变化
system.on('screenChange', (state) => {
console.log('屏幕状态变化:', state);
});
2. 振动控制
// 单次振动(100ms)
system.vibrate(100);
// 复杂振动模式
const vibrator: system.Vibrator = system.getVibrator();
vibrator.vibrate({
timings: [100, 200, 100, 300], // 振动-暂停-振动-暂停(ms)
intensities: [100, 0, 80, 0] // 对应强度(0-100)
}, {
usage: 'alarm' // 振动用途(alarm/notification/ring等)
});
// 停止振动
vibrator.stop();
3. 亮度调节
// 设置屏幕亮度(0-255)
system.setScreenBrightness(150);
// 获取当前亮度
const brightness = system.getScreenBrightness();
// 设置自动亮度模式
system.setScreenAutoBrightness(true);
4. 系统设置
// 修改系统音量
system.setVolume(system.VolumeType.MUSIC, 80); // 音乐音量设为80%
// 获取音量
const volume = system.getVolume(system.VolumeType.RINGTONE); // 铃声音量
// 设置系统时区
system.setTimeZone('Asia/Shanghai');
// 设置系统时间(毫秒时间戳)
system.setTime(Date.now());
四、系统事件监听
1. 按键事件
// 监听物理按键
system.on('keyDown', (keyEvent) => {
console.log(`按键按下: ${keyEvent.keyCode}`);
if (keyEvent.keyCode === system.KeyCode.KEYCODE_BACK) {
// 返回键处理
}
});
system.on('keyUp', (keyEvent) => {
console.log(`按键释放: ${keyEvent.keyCode}`);
});
2. 系统状态事件
// 监听系统启动完成
system.on('bootCompleted', () => {
console.log('系统启动完成');
});
// 监听关机事件
system.on('shutdown', () => {
console.log('系统即将关机');
});
// 监听时区变化
system.on('timeZoneChange', (newZone) => {
console.log('时区变更为:', newZone);
});
3. 包管理事件
// 监听应用安装
system.on('packageAdded', (packageInfo) => {
console.log('应用安装:', packageInfo.name);
});
// 监听应用卸载
system.on('packageRemoved', (packageName) => {
console.log('应用卸载:', packageName);
});
五、系统工具方法
1. 进程管理
// 获取进程信息
const processInfo: system.ProcessInfo = system.getProcessInfo();
console.log(`进程ID: ${processInfo.pid}`);
console.log(`进程名: ${processInfo.processName}`);
console.log(`UID: ${processInfo.uid}`);
// 获取所有运行中进程
const runningProcesses: system.ProcessInfo[] = system.getRunningProcesses();
// 结束指定进程
system.killProcess(pid);
2. 系统属性访问
// 获取系统属性
const version = system.getProperty('ro.build.version.release');
const model = system.getProperty('ro.product.model');
// 设置系统属性(需要权限)
system.setProperty('debug.myapp.enabled', 'true');
3. 系统工具
// 重启设备(需要权限)
system.reboot('系统更新');
// 关机(需要权限)
system.shutdown('维护');
// 获取系统启动时间
const uptime = system.getUptime(); // 秒数
六、高级系统功能
1. 系统权限管理
// 检查权限
const permissions: system.Permission[] = [
'ohos.permission.CAMERA',
'ohos.permission.LOCATION'
];
permissions.forEach(perm => {
system.checkPermission(perm).then(granted => {
console.log(`权限${perm}: ${granted ? '已授予' : '未授予'}`);
});
});
// 请求权限
system.requestPermissions(['ohos.permission.READ_CONTACTS'])
.then(result => {
console.log('权限请求结果:', result);
});
2. 系统电源优化
// 检查电池优化状态
system.isIgnoringBatteryOptimizations().then(ignoring => {
console.log(`是否忽略电池优化: ${ignoring}`);
});
// 请求忽略电池优化
system.requestIgnoreBatteryOptimizations();
3. 系统更新
// 检查系统更新
system.checkUpdate().then(updateInfo => {
console.log(`可用版本: ${updateInfo.versionName}`);
console.log(`更新大小: ${updateInfo.size} bytes`);
});
// 下载系统更新
system.downloadUpdate(updateInfo, {
onProgress: (progress) => {
console.log(`下载进度: ${progress}%`);
}
});
// 安装系统更新
system.installUpdate();
七、系统API封装
1. 设备信息工具类
class DeviceUtils {
// 获取设备基本信息
static getDeviceSummary(): string {
const info = system.getDeviceInfo();
return `
设备型号: ${info.deviceType}
设备名称: ${info.deviceName}
系统版本: ${info.osVersion}
硬件信息: ${info.board}/${info.brand}
安全补丁: ${info.securityPatch}
`;
}
// 检查是否为TV设备
static isTV(): boolean {
return system.getDeviceInfo().deviceType === 'tv';
}
// 获取设备唯一标识
static async getDeviceId(): Promise<string> {
try {
const id = await system.getUniqueDeviceId();
return id;
} catch (err) {
console.error('获取设备ID失败:', err);
return 'unknown';
}
}
}
2. 系统状态监控器
class SystemMonitor {
private static instance: SystemMonitor;
private batteryListener: system.BatteryChangeCallback | null = null;
private networkListener: system.NetworkChangeCallback | null = null;
private constructor() {}
static getInstance(): SystemMonitor {
if (!SystemMonitor.instance) {
SystemMonitor.instance = new SystemMonitor();
}
return SystemMonitor.instance;
}
// 开始监控电池状态
startBatteryMonitoring(callback: (info: system.BatteryInfo) => void) {
this.batteryListener = (info) => callback(info);
system.on('batteryChange', this.batteryListener);
}
// 开始监控网络状态
startNetworkMonitoring(callback: (info: system.NetworkInfo) => void) {
this.networkListener = (info) => callback(info);
system.on('networkChange', this.networkListener);
}
// 停止所有监控
stopAllMonitoring() {
if (this.batteryListener) {
system.off('batteryChange', this.batteryListener);
}
if (this.networkListener) {
system.off('networkChange', this.networkListener);
}
}
}
// 使用示例
const monitor = SystemMonitor.getInstance();
monitor.startBatteryMonitoring(info => {
console.log('电池状态更新:', info.batteryLevel);
});
八、注意事项
- 权限声明:
// module.json5
"requestPermissions": [
{
"name": "ohos.permission.GET_BUNDLE_INFO",
"reason": "获取应用信息"
},
{
"name": "ohos.permission.MANAGE_MISSIONS",
"reason": "管理任务"
}
]