HarmonyOS 5开发从入门到精通(十一):设备能力调用
HarmonyOS 5开发从入门到精通(十一):设备能力调用
设备能力调用让应用能访问手机的硬件功能,比如获取设备信息、使用传感器、定位位置等。本章介绍如何调用这些设备能力。
一、获取设备信息
1.1 获取基本设备信息
import deviceInfo from '@ohos.deviceInfo';
// 获取设备型号
let model = deviceInfo.model;
// 获取厂商
let manufacturer = deviceInfo.manufacturer;
// 获取品牌
let brand = deviceInfo.brand;
// 获取系统语言
let language = deviceInfo.language;
1.2 获取屏幕信息
import display from '@ohos.display';
// 获取默认屏幕
let defaultDisplay = await display.getDefaultDisplay();
// 屏幕宽度
let width = defaultDisplay.width;
// 屏幕高度
let height = defaultDisplay.height;
// 屏幕密度
let density = defaultDisplay.densityDPI;
二、传感器使用
2.1 加速度传感器
import sensor from '@ohos.sensor';
// 监听加速度变化
sensor.on(sensor.SensorId.ACCELEROMETER, (data) => {
console.log(`X: ${data.x}, Y: ${data.y}, Z: ${data.z}`);
});
2.2 光线传感器
// 监听光线强度
sensor.on(sensor.SensorId.LIGHT, (data) => {
console.log(`光线强度: ${data.intensity} lux`);
});
2.3 距离传感器
// 监听距离变化
sensor.on(sensor.SensorId.PROXIMITY, (data) => {
console.log(`距离: ${data.distance} cm`);
});
三、电池管理
3.1 获取电池状态
import batteryInfo from '@ohos.batteryInfo';
// 获取电池电量
let batteryLevel = batteryInfo.batteryLevel;
// 充电状态
let chargingStatus = batteryInfo.chargingStatus;
// 电池健康状态
let healthStatus = batteryInfo.healthStatus;
3.2 监听电池变化
// 监听电量变化
batteryInfo.on('batteryLevel', (level) => {
console.log(`电量变化: ${level}%`);
});
// 监听充电状态变化
batteryInfo.on('chargingStatus', (status) => {
console.log(`充电状态: ${status}`);
});
四、网络状态
4.1 获取网络信息
import connection from '@ohos.net.connection';
// 获取网络类型
let netHandle = await connection.getDefaultNet();
let type = netHandle.type; // wifi, cellular等
// 检查网络是否可用
let isAvailable = netHandle.isAvailable;
4.2 监听网络变化
// 监听网络连接变化
connection.on('netAvailable', () => {
console.log('网络已连接');
});
connection.on('netLost', () => {
console.log('网络已断开');
});
五、振动反馈
5.1 触发振动
import vibrator from '@ohos.vibrator';
// 单次振动
vibrator.vibrate(100); // 振动100ms
// 模式振动
vibrator.vibrate([100, 200, 100, 200]); // 间隔振动
六、设备方向
6.1 监听屏幕方向
import window from '@ohos.window';
// 获取当前方向
let orientation = window.getLastWindow(getContext()).orientation;
// 监听方向变化
window.getLastWindow(getContext()).on('orientationChange', (newOrientation) => {
console.log(`方向变为: ${newOrientation}`);
});
七、存储空间
7.1 获取存储信息
import fileio from '@ohos.fileio';
// 获取可用存储空间
let stats = await fileio.statfs('/data');
let freeSpace = stats.f_bavail * stats.f_bsize;
let totalSpace = stats.f_blocks * stats.f_bsize;
八、实战案例:设备状态监控
@Component
struct DeviceMonitor {
@State batteryLevel: number = 0
@State networkType: string = '未知'
@State storageFree: string = '0'
@State screenWidth: number = 0
aboutToAppear() {
this.loadDeviceInfo()
}
async loadDeviceInfo() {
// 获取电池信息
this.batteryLevel = batteryInfo.batteryLevel
// 获取网络信息
let net = await connection.getDefaultNet()
this.networkType = net.type
// 获取屏幕信息
let display = await display.getDefaultDisplay()
this.screenWidth = display.width
// 获取存储信息
let stats = await fileio.statfs('/data')
let freeMB = (stats.f_bavail * stats.f_bsize) / (1024 * 1024)
this.storageFree = freeMB.toFixed(0)
}
build() {
Column({ space: 15 }) {
Text('设备状态监控')
.fontSize(20)
.fontWeight(FontWeight.Bold)
List({ space: 10 }) {
ListItem() {
Text(`电池电量: ${this.batteryLevel}%`)
}
ListItem() {
Text(`网络类型: ${this.networkType}`)
}
ListItem() {
Text(`屏幕宽度: ${this.screenWidth}px`)
}
ListItem() {
Text(`可用存储: ${this.storageFree}MB`)
}
}
.width('100%')
.layoutWeight(1)
Button('刷新信息')
.onClick(() => this.loadDeviceInfo())
.width(200)
}
.padding(20)
}
}
九、总结
本章学习了HarmonyOS的设备能力调用:
✅ 设备信息 - 获取型号、厂商、屏幕信息
✅ 传感器 - 使用加速度、光线、距离传感器
✅ 电池管理 - 监控电量和充电状态
✅ 网络状态 - 检测网络连接和类型
✅ 振动反馈 - 提供触觉反馈
✅ 设备方向 - 监听屏幕旋转
✅ 存储空间 - 获取可用存储信息
使用注意:
- 部分功能需要权限
- 及时移除监听避免内存泄漏
- 耗电功能要合理使用
- 考虑不同设备的兼容性
这些设备能力让应用更智能、更人性化,是提升用户体验的关键技术。
浙公网安备 33010602011771号