HarmonyOS获取设备信息、网络链接信息的常见API

335 阅读3分钟
@ohos.deviceInfo (设备信息)
// 产品名称,可用于区分模拟器(仿真器)、真机(产品型号)
deviceInfo.marketName : string
// 系统版本
deviceInfo.osFullName : string
// 系统软件API版本(API 9、11、12 等)
deviceInfo.sdkApiVersion : number
// 设备类型,可用于区分 手机、平板、PC、车机、手表、电视 等
deviceInfo.deviceType : string
@ohos.hidebug (Debug调试)
//获取cup占用率,返回0-1,如占用率为50%,则返回0.5。
hidebug.getCpuUsage() : number
//获取应用进程实际使用的物理内存大小,单位为KB,1MB = 1000KB ,只有windows执行1024
hidebug.getPss() : bigint
@ohos.batteryInfo (电量信息)
//表示当前设备剩余电池电量百分比。
batteryInfo.batterySOC : number
@ohos.file.statvfs (文件系统空间统计)
//以同步方法获取指定文件系统空闲字节数。(获取指定文件的剩余空间Byte)
statfs.getFreeSizeSync(path : string) : number
@ohos.process (获取进程相关的信息)
//获取当前系统已运行的秒数。
process.uptime() : number
@ohos.display (屏幕属性)
getDisplay() {
  // 获取当前默认的display对象
  const defaultDisplay = display.getDefaultDisplaySync()
  // 屏幕分辨率(像素)
  this.displayHeight = defaultDisplay.height
  this.displayWidth = defaultDisplay.width
  // 屏幕刷新率(Hz)
  this.displayRefreshRate = defaultDisplay.refreshRate
  // 像素密度(DPI)
  this.displayDensityDPI = defaultDisplay.densityDPI
}
@ohos.sensor (传感器)
//获取设备上的所有传感器信息,使用Promise异步方式返回结果。
sensor.getSensorList(): Promise<Array<Sensor>>

结果集Sensor指示传感器信息

sensorNamestring传感器名称。
vendorNamestring传感器供应商。
firmwareVersionstring传感器固件版本。
hardwareVersionstring传感器硬件版本。
sensorIdnumber传感器类型id。
maxRangenumber传感器测量范围的最大值。
minSamplePeriodnumber允许的最小采样周期。
maxSamplePeriodnumber允许的最大采样周期。
precisionnumber传感器精度。
powernumber传感器功率的估计值,单位:mA
名称值(sensorId)说明
SENSOR_TYPE_ID_ACCELEROMETER1加速度传感器。
SENSOR_TYPE_ID_GYROSCOPE2陀螺仪传感器。
SENSOR_TYPE_ID_AMBIENT_LIGHT5环境光传感器。
SENSOR_TYPE_ID_MAGNETIC_FIELD6磁场传感器。
SENSOR_TYPE_ID_BAROMETER8气压计传感器。
SENSOR_TYPE_ID_HALL10霍尔传感器。
SENSOR_TYPE_ID_PROXIMITY12接近光传感器。
SENSOR_TYPE_ID_HUMIDITY13湿度传感器。
SENSOR_TYPE_ID_ORIENTATION256方向传感器。
SENSOR_TYPE_ID_GRAVITY257重力传感器。
SENSOR_TYPE_ID_LINEAR_ACCELERATION258线性加速度传感器。
SENSOR_TYPE_ID_ROTATION_VECTOR259旋转矢量传感器。
SENSOR_TYPE_ID_AMBIENT_TEMPERATURE260环境温度传感器。
SENSOR_TYPE_ID_MAGNETIC_FIELD_UNCALIBRATED261未校准磁场传感器。
SENSOR_TYPE_ID_GYROSCOPE_UNCALIBRATED263未校准陀螺仪传感器。
SENSOR_TYPE_ID_SIGNIFICANT_MOTION264有效运动传感器。
SENSOR_TYPE_ID_PEDOMETER_DETECTION265计步检测传感器。
SENSOR_TYPE_ID_PEDOMETER266计步传感器。
SENSOR_TYPE_ID_HEART_RATE278心率传感器。
SENSOR_TYPE_ID_WEAR_DETECTION280佩戴检测传感器。
SENSOR_TYPE_ID_ACCELEROMETER_UNCALIBRATED281未校准加速度计传感器。
@ohos.net.connection (网络连接管理)

需要先声明接口调用所需要的权限:ohos.permission.GET_NETWORK_INFO, 不配置可能会出现应用闪退情况!!!

"requestPermissions": [
      {
        // 允许应用获取数据网络信息
        "name": "ohos.permission.GET_NETWORK_INFO"
      }
],
//判断当前有无网络链接
connection.hasDefaultNetSync() : boolean

以下API调用都是在有网络链接的情况下,即hasDefaultNetSync()返回值为true

//使用同步方法获取默认激活的数据网络(数据网络的句柄)
connection.getDefaultNetSync() : NetHandle

调用getNetCapabilitiesSync获取NetCapabilities(网络的能力集)

//获取netHandle对应的网络的能力信息,使用同步方式返回(参数:数据网络的句柄)
connection.getNetCapabilitiesSync(netHandle:NetHandle) : NetCapabilities

NetBearType网络类型

//获取网络类型的数组(参数:数据网络的句柄)
//NetCapabilities中包含bearerTypes(Array<[NetBearType]>)
//NetBearType是一个枚举,可以通过if来判断网络类型
//enum NetBearType {
//    BEARER_CELLULAR = 0,
//    BEARER_WIFI = 1,
//    BEARER_ETHERNET = 3
//}
const bearerTypes = connection.getNetCapabilitiesSync(netHandle).bearerTypes
if (bearerTypes.includes(connection.NetBearType.BEARER_ETHERNET)) {
  '以太网网络'
} else if (bearerTypes.includes(connection.NetBearType.BEARER_WIFI)) {
  'Wi-Fi网络'
} else if (bearerTypes.includes(connection.NetBearType.BEARER_CELLULAR)) {
  '蜂窝网络'
}

获取IP地址

getConnectionProperties() {
  //确认有网络链接的情况下,获取当前网络链接
  const netHandle = connection.getDefaultNetSync()
  //获取netHandle对应的网络的连接信息,ConnectionProperties 返回网络的连接信息。
  const connectionProperties = connection.getConnectionPropertiesSync(netHandle)
  //提取链路信息
  const linkAddress = connectionProperties.linkAddresses[0]
  if (linkAddress) {
    //提取IP地址
    this.IPAddress = linkAddress.address.address
  }
}