鸿蒙 设备信息获取System模块

本文同步发表于我的微信公众号,微信搜索 程语新视界 即可关注,每个工作日都有文章更新

一、系统属性与信息

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);
});

八、注意事项

  1. 权限声明
   // module.json5
   "requestPermissions": [
     {
       "name": "ohos.permission.GET_BUNDLE_INFO",
       "reason": "获取应用信息"
     },
     {
       "name": "ohos.permission.MANAGE_MISSIONS",
       "reason": "管理任务"
     }
   ]

      <think>好的,用户需要查找与鸿蒙SystemUI项目相关的资料,包括源码、教程和开发文档。首先,我需要回忆一下鸿蒙系统的开发资源通常在哪里发布。 根据之前的引用,鸿蒙的开发资料主要在官方开发者网站和开源社区。比如引用[2]提到了DevEco Studio的下载链接和一本实战书籍,这可能涉及到开发工具和基础教程。而SystemUI作为系统级的UI组件,可能在开源项目中能找到源码。 接下来,我应该确认鸿蒙的开源项目名称。鸿蒙的开源版本是OpenHarmony,其代码托管在Gitee和码云平台上。SystemUI作为系统用户界面,应该属于OpenHarmony项目的一部分,所以需要引导用户去这些仓库查找。 另外,官方文档中心肯定是最权威的来源,用户可能在这里找到开发指南和API参考。需要提供具体的链接,比如OpenHarmony的官方文档中心链接。 关于教程,引用[2]中的书籍可能涉及JS开发,但SystemUI可能更多使用Java或C++,所以可能需要分方向说明。同时,社区论坛如CSDN、知乎可能有开发者分享的经验,这也是重要的资源。 用户还可能遇到的问题包括如何搭建开发环境,这里需要提到DevEco Studio,并确保提供正确的下载链接。此外,源码的模块结构可能需要指导,比如在代码仓库中如何定位SystemUI相关模块。 最后,需要生成相关问题,覆盖用户可能的后续疑问,比如如何参与开源贡献、常见问题解决、调试方法等。这些问题需要基于常见的开发挑战来设计,帮助用户深入探索。</think>关于鸿蒙HarmonyOSSystemUI项目的源码、教程及开发文档,以下是分步骤的获取途径和关键资源: --- ### 一、官方开发文档与资源 1. **OpenHarmony项目仓库** - SystemUI源码属于OpenHarmony系统核心组件,可在官方代码仓库查找: $$ \text{Gitee: https://gitee.com/openharmony} $$ 搜索`foundation_ace_engine`或`applications_systemui`等模块[^1]。 - 代码目录示例: ```text /applications/standard/systemui/ ``` 2. **官方文档中心** - OpenHarmony开发指南: $$ \text{https://gitee.com/openharmony/docs} $$ 包含UI开发规范、系统服务接口等[^2]。 --- ### 二、开发工具与教程 1. **DevEco Studio** - 鸿蒙专用IDE,支持SystemUI模块的代码编辑与调试: $$ \text{下载地址: https://developer.harmonyos.com/cn/develop/deveco-studio} $$ 需配置SDK中的`SystemUI`组件。 2. **实战书籍与视频** - 参考《HarmonyOS实战——前端开发华为鸿蒙系统应用》中“系统级UI开发”章节。 - 华为开发者学堂(https://developer.huawei.com/consumer/cn/training/)提供免费课程。 --- ### 三、社区与开源资源 1. **技术论坛** - 华为开发者论坛(https://developer.huawei.com/consumer/cn/forum/)搜索“SystemUI”相关问题。 - CSDN、知乎等平台有开发者分享的SystemUI定制案例。 2. **GitHub/Gitee第三方项目** - 部分开发者开源了简化版SystemUI实现,例如: $$ \text{https://github.com/HarmonyOS-SIG} $$ --- ### 四、关键源码模块解析 - **SystemUI核心功能模块**: ```text 状态栏(StatusBar):显示信号、电量、时间等 导航栏(NavigationBar):提供返回、主页、多任务按键 通知中心(NotificationPanel):管理通知消息 ``` 源码路径示例:`/applications/standard/systemui/statusbar/` ---
      评论
      添加红包

      请填写红包祝福语或标题

      红包个数最小为10个

      红包金额最低5元

      当前余额3.43前往充值 >
      需支付:10.00
      成就一亿技术人!
      领取后你会自动成为博主和红包主的粉丝 规则
      hope_wisdom
      发出的红包
      实付
      使用余额支付
      点击重新获取
      扫码支付
      钱包余额 0

      抵扣说明:

      1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
      2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

      余额充值