时下各种AI聊天应用争奇斗艳,一个比一个智能,一个比一个贴心。早在2022年出版的《Android Studio开发实战:从零基础到App上线(第3版)》中,笔者就基于Android实现了一个具备初级智能的小小机器人APP,不仅支持简单的问答,还支持问询天气预报,还支持加减乘除四则运算,还支持背诵唐诗宋词名篇佳句,可谓小朋友的贴心玩伴。
《鸿蒙HarmonyOS 6应用开发:从零基础到App上线》一书作为《Android Studio开发实战:从零基础到App上线(第3版)》的鸿蒙姊妹篇,已将安卓一书的大部分实战项目改造为鸿蒙版本。但在写作鸿蒙一书时,限于时间进度与项目难度,安卓一书的小小机器人项目未能同步改造为鸿蒙版本,成为鸿蒙一书的小小缺憾。

好在笔者并未放弃,在《鸿蒙HarmonyOS 6应用开发:从零基础到App上线》出版之后,一直记得小小机器人的鸿蒙改造事宜。磨磨蹭蹭大半年,终于把安卓版本的小小机器人APP一步步改造成了鸿蒙APP,机器人APP的项目源码与鸿蒙一书的第15章源码放在了一起,具体的源码托管地址为 https://gitee.com/aqi00/harmony/tree/main/chapter15 。
小小机器人的鸿蒙APP仍然有着简洁的界面,问题输入与答案输出都靠语音交互,但在具体的代码实现上,鸿蒙版本与安卓版本有着诸多不同之处,比如存储方面存在下列区别:
1、对于关系数据库,鸿蒙APP与安卓APP都基于SQLite实现,主要用于保存和读取用户自定义的问答信息,还要保存初始导入的唐诗宋词记录。
2、对于键值对存储,安卓APP采用共享参数SharedPreferences,而鸿蒙APP采用首选项Preferences,主要用于判断机器人APP是否为首次运行。
3、对于文件处理,安卓APP把资源文件放在APP工程的assets目录下,APP运行时要先把assets文件传到沙箱目录,再读取沙箱目录下的资源文件;而鸿蒙APP把资源文件放在APP工程resfile目录下,鸿蒙系统支持在应用安装后自动解压到沙箱路径下,APP可直接读取自动解压后的资源文件。
又如,在定位服务、网络服务、中文转拼音方面,鸿蒙版本与安卓版本存在下列区别:
1、对于定位服务,安卓APP原生仅支持获取当前位置的经纬度信息,若想获取当前位置的详细地址,则需另外调用第三方接口把经纬度转换为地址信息;而鸿蒙APP不仅原生支持获取当前位置的经纬度信息,还支持根据经纬度直接获取对应的地址信息,从而省去了第三方的地址查询接口调用。
2、对于网络服务,安卓APP原生的HttpURLConnection用起来甚是繁琐,往往要调用第三方的网络通信库比如okhttp;而鸿蒙APP原生的http模块已经把常见的HTTP访问操作封装好了,开发者可直接进行接口调用,无需引入三方通信库。

3、对于中文转拼音:安卓APP需引入第三方的pinyin4j库,而鸿蒙APP也需引入三方库pinyin4js,后者相当于前者的鸿蒙平替三方库。
在朗诵诗歌之前,机器人通过诗人姓名与诗歌标题确定是哪一首唐诗宋词,但语音识别的结果文本可能存在同音字,为了避免同音字造成条件匹配失败,可先将中文转换成拼音,再通过拼音判断是否匹配。
再如,在音频播放、语音合成、语音识别等方面,鸿蒙版本与安卓版本存在下列区别:
1、对于音频播放,安卓APP通过原生的MediaPlayer来播放音频文件,而鸿蒙APP通过原生的AVPlayer来播放音频文件。
2、对于语音合成,安卓APP原生的文本转语音仅支持英文,通常要引入第三方的语音SDK才能把中文文本合成为语音输出;而鸿蒙APP原生提供了基础语音服务,可直接通过TextToSpeech模块来实现中文文本的语音合成功能。
3、对于语音识别,安卓APP原生不支持,必须引入第三方的语音SDK才能把中文语音识别为文本输出;而鸿蒙APP原生提供了基础语音服务,可直接通过SpeechRecognizer模块来实现中文语音的文本识别功能。
根据上述说明可知,鸿蒙系统在实现小小机器人APP时,仅需引入一个三方库pinyin4js,对应的安卓系统实现机器人APP时要引入多个三方库,无疑鸿蒙APP避免了其他三方库的学习和适配工作。
如果您想入门鸿蒙APP开发,或者正在学习鸿蒙开发,小小机器人都是很好的学习项目,不仅用到了多种鸿蒙开发技能,而且兼具实战性和趣味性,对开发者快速掌握鸿蒙开发具有很大的帮助。