第26章_HarmonyOs开发图解之 设备管理
第26章 HarmonyOs开发图解之 设备管理HarmonyOS 学习系统 | 阶段四专业精通期学习目标序号能力1掌握传感器加速度计、陀螺仪等的数据订阅2能够使用 LightAgent 和 VibratorAgent 控制指示灯和振动器3掌握位置服务的使用和系统设置的监听核心图解内容讲解26.1 设备管理概述HarmonyOS 的设备管理模块涵盖四大方向传感器Sensor、控制类小器件LED/振动器、位置服务Location和系统设置Settings。这些能力让应用能够感知物理世界、控制设备硬件和获取用户位置。生活化类比传感器就像手机的五官加速度计是前庭感知倾斜和运动陀螺仪是内耳感知旋转环境光传感器是眼睛对光的感知温度计是皮肤对温度的感知。而位置服务就像GPS 导航仪——通过卫星GNSS、基站信号像通过附近基站的大声喊话来判断距离和 WLAN 信号像闻到附近 Wi-Fi 的气味来判断位置三种方式来确定你在哪。采样率就像眨眼频率——采样率越高越灵敏但也越费电。26.2 传感器使用// 订阅方向传感器数据SensorAgentsensorAgentSensorAgent.getSensorAgent();booleansuccesssensorAgent.setSensorDataCallback(newSensorDataCallback(){OverridepublicvoidonSensorDataCallback(SensorEventevent){float[]valuesevent.values;HiLog.info(TAG,X: values[0], Y: values[1], Z: values[2]);}},SensorAgent.SENSOR_TYPE_ACCELEROMETER,// 加速度计SensorAgent.SENSOR_DELAY_NORMAL// 采样率);// 取消订阅重要sensorAgent.releaseSensorDataCallback(callback,SensorAgent.SENSOR_TYPE_ACCELEROMETER);26.3 控制类小器件// LED 指示灯控制LightAgentlightAgentnewLightAgent(context);int[]lightIdslightAgent.getLightIdList();if(lightIds.length0){lightAgent.turnOn(lightIds[0],newLightEffect.Builder().setLightColor(0xFFFF0000)// 红色.setBlinkMode(LightEffect.BLINK_MODE_TIMED).setBlinkOnTime(500).setBlinkOffTime(500).build());// lightAgent.turnOff(lightIds[0]); // 关闭}// 振动器控制VibratorAgentvibratorAgentnewVibratorAgent(context);vibratorAgent.vibrate(500);// 振动 500 毫秒26.4 位置服务LocatorlocatornewLocator(context);// 单次定位locator.requestOnce(newLocationRequest(),newMyLocationCallback());// 持续定位locator.startLocating(newLocationRequest(),newMyLocationCallback());// 获取缓存位置省电方案LocationcachedLocationlocator.getCachedLocation();classMyLocationCallbackimplementsLocationCallback{OverridepublicvoidonLocationReport(Locationlocation){HiLog.info(TAG,纬度: location.getLatitude(), 经度: location.getLongitude());}OverridepublicvoidonErrorReport(inttype){HiLog.error(TAG,定位错误: type);}}代码速查卡API功能所属模块setSensorDataCallback(cb, sensor, interval)订阅传感器数据方向传感器releaseSensorDataCallback(cb, sensor)取消订阅方向传感器getLightIdList()获取灯列表LightAgentturnOn(lightId, effect)打开灯/自定义闪烁LightAgentturnOff(lightId)关闭灯LightAgentvibrate(duration)振动指定时长VibratorAgentstartLocating(request, callback)持续定位LocatorrequestOnce(request, callback)单次定位LocatorgetCachedLocation()获取缓存位置省电Locator与 Android/iOS 对比特性HarmonyOSAndroidiOS传感器SensorAgent SensorDataCallbackSensorManager SensorEventListenerCoreMotionLED 控制LightAgentNotificationManager (LED 通知)不提供公开 API振动器VibratorAgentVibratorUIImpactFeedbackGenerator定位LocatorFusedLocationProviderClientCLLocationManager系统设置监听Settings 注册回调ContentObserver (Settings)NotificationCenter⚠️ 踩坑回忆录为什么定位一直返回错误我调用startLocating()后回调里一直收到onErrorReport。排查了代码逻辑没问题权限也申请了最后发现——手机的位置信息开关根本没打开定位服务需要用户在系统设置中手动开启位置开关否则系统不会向任何应用提供位置服务。正确做法是先检查位置开关状态未开启时引导用户去设置页面开启。传感器还有一个坑releaseSensorDataCallback必须在 Ability 的onStop中调用否则传感器会一直工作迅速耗尽电池。我曾在后台测试时忘记释放加速度计半小时就耗了 30% 的电。必做实操任务序号任务难度1实现加速度计数据获取并显示 X/Y/Z 值中2实现摇一摇功能通过加速度阈值判断中3实现 LED 闪烁效果自定义颜色和频率低4实现定位功能并显示经纬度中5实现一个计步器App通过加速度传感器高学习检查清单能使用 SensorAgent 订阅和取消订阅传感器数据能区分加速度计、陀螺仪、环境光传感器等传感器类型能使用 LightAgent 控制 LED 指示灯能使用 VibratorAgent 控制振动器能使用 Locator 实现定位功能知道为什么定位需要用户开启系统位置开关知道为什么传感器必须在 onStop 中释放能说出 GNSS、基站定位、WLAN 定位的区别进阶方向实现一个运动追踪 App结合加速度计和陀螺仪探索传感器数据的滤波和降噪处理学习地理围栏Geofencing功能知道为什么定位需要用户开启系统位置开关知道为什么传感器必须在 onStop 中释放能说出 GNSS、基站定位、WLAN 定位的区别进阶方向实现一个运动追踪 App结合加速度计和陀螺仪探索传感器数据的滤波和降噪处理学习地理围栏Geofencing功能

相关新闻

Unity Compute Shader实现GPU并行化鸟群模拟:从Boids算法到万级智能体渲染

Unity Compute Shader实现GPU并行化鸟群模拟:从Boids算法到万级智能体渲染

1. 项目概述:当鸟群在GPU上“思考”如果你玩过《刺客信条》里惊起一片鸽群,或者看过《蝙蝠侠》中成群的蝙蝠掠过哥谭市的夜空,你可能会好奇,这种成千上万的个体如何能如此流畅、自然地协同运动,而电脑还不卡死&#xf…

2026/8/6 16:02:40 阅读更多 →
【迅投 QMT】QMT如何获取沪深300指数成分股权重?get_index_weight()完整教程

【迅投 QMT】QMT如何获取沪深300指数成分股权重?get_index_weight()完整教程

本方案由 EasyQuant AI量化助手 提供。问题背景指数增强、ETF 跟踪和行业暴露分析,都需要知道指数成分股及其权重。QMT 可通过 get_index_weight() 获取指数当前成分股权重,用于计算组合偏离度或构建权重化股票池。实现思路下载指数与板块基础数据。调用…

2026/8/6 16:02:40 阅读更多 →
NomNom:解锁《无人深空》无限可能的终极存档编辑器指南

NomNom:解锁《无人深空》无限可能的终极存档编辑器指南

NomNom:解锁《无人深空》无限可能的终极存档编辑器指南 【免费下载链接】nomnom NomNom is the most complete savegame editor for NMS but also shows additional information around the data youre about to change. You can also easily look up each item ind…

2026/8/6 16:02:40 阅读更多 →

最新新闻

跨境厨房清洁用品营销策略:三层漏斗模型解析

跨境厨房清洁用品营销策略:三层漏斗模型解析

1. 项目背景与市场洞察最近两年跨境厨房清洁用品赛道出现了一个有趣的现象:传统铺货模式ROI持续走低,而通过海外社交媒体内容营销的品牌却逆势增长。我在操盘多个家居类目出海项目时发现,单纯依赖头部KOL的"大爆款"策略已经失效&am…

2026/8/6 16:51:07 阅读更多 →
如何3分钟获取中小学电子课本?这款智能教材下载工具为您解决下载难题

如何3分钟获取中小学电子课本?这款智能教材下载工具为您解决下载难题

如何3分钟获取中小学电子课本?这款智能教材下载工具为您解决下载难题 【免费下载链接】tchMaterial-parser 国家中小学智慧教育平台 电子课本下载工具,帮助您从智慧教育平台中获取电子课本的 PDF 文件网址并进行下载,让您更方便地获取课本内容…

2026/8/6 16:51:07 阅读更多 →
2024阀门网站建设指南:如何通过专业的阀门网站建设打造行业爆款

2024阀门网站建设指南:如何通过专业的阀门网站建设打造行业爆款

说句实在话,在这个互联网流量红海都快变成蓝海的今天,如果你还在问“阀门网站建设到底有没有用”,那我可能得先请你喝杯茶,咱俩坐下来好好聊聊。我是真心想帮那些做阀门生意的老板们一把,因为我知道,这一行太难了。以前咱们靠关系、靠饭局、靠跑客户,现在不行了,客户还…

2026/8/6 16:51:07 阅读更多 →
G-Helper终极指南:释放华硕笔记本潜能的免费轻量控制神器

G-Helper终极指南:释放华硕笔记本潜能的免费轻量控制神器

G-Helper终极指南:释放华硕笔记本潜能的免费轻量控制神器 【免费下载链接】g-helper Lightweight Armoury Crate alternative for Asus laptops with nearly the same functionality. Works with ROG Zephyrus, Flow, TUF, Strix, Scar, ProArt, Vivobook, Zenbook,…

2026/8/6 16:51:07 阅读更多 →
Julia实现MIT 18.06 线代计算器

Julia实现MIT 18.06 线代计算器

最近又遇到一个跟DeepSeek较劲半天的代码,DS写julia实在费劲,我又是新学的jl连变量都看不懂,就先把目前好不容易搞出来的MCP线代计算器复盘写篇文章留档。目前支持的是MIT 18.06 线代 Linear Algebra 1-3章节的消元-解方程-逆矩阵。 大背景是…

2026/8/6 16:51:07 阅读更多 →
Unity项目YooAsset缓存清理全攻略:提升开发效率与构建稳定性

Unity项目YooAsset缓存清理全攻略:提升开发效率与构建稳定性

1. 项目概述:为什么Unity项目需要清理YooAsset缓存?做Unity项目开发,尤其是涉及到热更新和资源管理的项目,YooAsset几乎是绕不开的一个强大工具。它帮我们解决了资源打包、加载、更新等一系列繁琐问题,但用久了&#x…

2026/8/6 16:50:07 阅读更多 →

日新闻

深入解析LimboAI C++内核:架构设计与性能优化实战

深入解析LimboAI C++内核:架构设计与性能优化实战

1. 项目概述:为什么我们需要深入LimboAI的C内核?如果你是一名使用Godot引擎的游戏开发者,尤其是对AI行为逻辑有较高要求的项目,那么LimboAI这个名字你大概率不会陌生。它作为Godot 4生态中一个备受瞩目的行为树与状态机插件&#…

2026/8/6 0:00:06 阅读更多 →
Unity 2D游戏敌人AI系统:基于PlayMaker状态机与2D Toolkit的实战开发

Unity 2D游戏敌人AI系统:基于PlayMaker状态机与2D Toolkit的实战开发

1. 项目概述与核心思路大家好,我是老张,一个在游戏开发一线摸爬滚打了十多年的老码农。今天咱们接着聊《空洞骑士》风格2D动作游戏的Demo制作。上一期我们搭好了基础框架,处理了角色移动和碰撞,这一期,我们要让游戏世界…

2026/8/6 0:00:06 阅读更多 →
被动防火门市场前景发展趋势

被动防火门市场前景发展趋势

被动防火门依靠材质结构、密闭构造阻隔烟火蔓延,无需电控启动,是建筑被动消防系统核心构件,行业依托新规管控、城市更新、工业安全升级迎来稳定扩容,整体朝着合规化、专项化、低碳化、智能化方向发展。现阶段 GB12955‑2024 新版国…

2026/8/6 0:00:06 阅读更多 →

周新闻

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

1. 从水管网络到最大流:一个核心问题的诞生想象一下,你是一个城市供水系统的总工程师。你的城市有多个水源(水库),需要通过一个复杂的地下管道网络,将水输送到各个居民区。每条管道都有其最大通水能力&…

2026/8/5 15:00:43 阅读更多 →
基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台…

2026/8/5 13:13:56 阅读更多 →
MATLAB xcorr函数详解:从互相关原理到四大实战应用

MATLAB xcorr函数详解:从互相关原理到四大实战应用

1. 从一次信号“找茬”说起:为什么我们需要互相关几年前,我在处理一组声学传感器数据时遇到了一个棘手的问题。我有两个麦克风记录了一段相同的音频信号,理论上它们接收到的声音波形应该非常相似,只是由于麦克风位置不同&#xff…

2026/8/5 10:20:36 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/5 23:28:39 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/5 21:00:14 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/5 23:46:51 阅读更多 →