查看: 121|回复: 3

鸿蒙版小小机器人APP开发实践:存储、定位、语音等九项差异解析

[复制链接]
发表于 3 小时前 | 显示全部楼层 |阅读模式
鸿蒙版的小小机器人APP已经开放源码,源码随《鸿蒙HarmonyOS 6应用开发:从零基础到App上线》一书的第15章代码一起托管在Gitee上,具体地址为 https://gitee.com/aqi00/harmony/tree/main/chapter15 。这个项目最初来自安卓实战书籍中的案例,作者在编写鸿蒙书籍时未能同步移植,直到书出版后才逐步完成改造。

从功能上看,小小机器人APP并不复杂但很完整:支持语音问答、天气查询、四则运算、唐诗宋词朗诵,输入和输出都通过语音交互完成。正因为功能覆盖了界面展示、数据存储、网络请求、定位服务、音频播放和语音识别等多类能力,把它从安卓迁移到鸿蒙的过程,实际上就是对两套系统API差异的一次集中梳理。

数据存储方面,双方有相似也有不同。关系数据库两边都采用SQLite,用于保存和读取用户自定义问答信息,以及初始导入的唐诗宋词记录。但在轻量级键值对存储上,安卓用的是SharedPreferences,鸿蒙用的是Preferences,本项目里主要用来判断机器人APP是否为首次运行。文件资源的处理也有明显变化:安卓版把资源文件放在assets目录,运行时要先拷贝到沙箱目录再读取;鸿蒙版则放在resfile目录,应用安装后系统会自动解压到沙箱路径,APP可以直接读取,省去了手动搬运文件的步骤。

服务层能力的差异更能体现鸿蒙的系统集成度。定位方面,安卓原生只能拿到经纬度,要获取详细地址还需要调用第三方接口做逆地理编码;鸿蒙原生定位能力支持根据经纬度直接获取地址信息,省掉了一次三方接口调用。网络方面,安卓原生HttpURLConnection用起来比较繁琐,很多项目会引入okhttp等三方通信库;鸿蒙原生http模块已经把常见HTTP访问操作封装好了,开发者可以直接调用接口,不需要再引入网络通信库。

中文转拼音则是另一个典型的迁移点。安卓版需要引入pinyin4j,鸿蒙版对应引入pinyin4js。这个三方库的作用是解决语音识别中的同音字问题:机器人朗诵诗歌前,需要根据诗人姓名和诗歌标题定位具体作品,而语音识别结果经常出现同音字,容易导致条件匹配失败,所以先把中文转换成拼音,再通过拼音判断是否匹配,就能绕开同音字干扰。

音频和语音部分的差异更明显。音频播放方面,安卓用MediaPlayer,鸿蒙用AVPlayer,名称不同但职责一致。关键是语音能力:安卓原生文本转语音只支持英文,要实现中文语音合成需要额外接第三方语音SDK;语音识别在安卓原生也不支持,同样必须依赖第三方SDK。而鸿蒙原生提供基础语音服务,TextToSpeech可以直接合成中文语音,SpeechRecognizer可以直接把中文语音识别为文本输出。这意味着在语音交互场景下,鸿蒙版本的三方依赖远比安卓版本少。

综合来看,鸿蒙版小小机器人APP整个项目只需要额外引入pinyin4js一个三方库,而安卓版要达到同等功能需要引入多个三方库。对开发者来说,这不仅省去了学习和适配多个SDK的成本,也反映出鸿蒙在高频系统能力上做了更深的整合。

从学习角度看,这个项目很适合正在入门鸿蒙APP开发的人。项目麻雀虽小五脏俱全,同时涉及数据存储、资源文件、定位、网络、拼音转换、音频播放、语音合成、语音识别等常用技术点,既有实战价值又有趣味性。想快速了解鸿蒙与安卓开发差异的开发者,可以直接阅读第15章源码,再对照安卓版本逐项替换,会比零散看文档更容易建立起整体认知。
回复

使用道具 举报

发表于 3 小时前 | 显示全部楼层

Re: 鸿蒙版小小机器人APP开发实践:存储、定位、语音等九项差异解析

感谢楼主分享!这篇文章把鸿蒙和安卓的差异讲得很清楚,尤其是数据存储、定位和语音这几块,对比直观。鸿蒙原生支持中文语音合成和识别这点确实省事,安卓那边折腾第三方SDK真的挺烦的。pinyin4js解决同音字问题的思路也很实用。正好最近在学鸿蒙开发,准备按楼主说的去Gitee看看第15章源码,对照着移植一遍应该能学到不少东西。
回复 支持 反对

使用道具 举报

发表于 3 小时前 | 显示全部楼层

Re: 鸿蒙版小小机器人APP开发实践:存储、定位、语音等九项差异解析

这篇文章写得很有启发,特别是把安卓和鸿蒙的底层差异梳理得这么清晰。作为一个经常在安卓上折腾第三方库的开发者,看到鸿蒙原生居然把中文语音识别、语音合成和逆地理编码都内置了,确实有点心动,这能省掉好多适配的麻烦。那个把中文转成拼音来避开同音字匹配问题的思路也很巧妙,学到了。按这个趋势看,鸿蒙在系统级整合度上确实走得更深,很适合新手通过这种小项目来建立整体认知。
回复 支持 反对

使用道具 举报

发表于 3 小时前 | 显示全部楼层

Re: 鸿蒙版小小机器人APP开发实践:存储、定位、语音等九项差异解析

楼主的实践总结很实在,尤其是资源文件处理从安卓的 assets 手动拷贝到鸿蒙 resfile 自动解压这块,确实省了不少事。语音合成和识别原生支持中文这点也很关键,能少接两个第三方 SDK 对新手友好很多。 有个小问题想请教:鸿蒙定位直接返回地址信息,这个逆地理编码的精度和覆盖范围跟第三方服务比怎么样?还有就是 pinyin4js 和安卓的 pinyin4j 在用法上差别大吗?正好最近也在看跨平台迁移的案例,感谢分享。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

指导单位

江苏省公安厅

江苏省通信管理局

浙江省台州刑侦支队

DEFCON GROUP 86025

Hacking Group 021A

旗下站点

态势感知中心

应急响应中心

红盟安全

联系我们

官方QQ群:112851260

官方邮箱:security#ihonker.org(#改成@)

官方核心成员

关注微信公众号

Archiver|手机版|小黑屋| ( 沪ICP备2021026908号 )

GMT+8, 2026-8-2 15:34 , Processed in 0.023787 second(s), 18 queries , Gzip On, Redis On.

Powered by ihonker.com

Copyright © 2015-现在.

  • 返回顶部