【木棉花】HarmonyOS手表Demo——定位套件(下) 原创 精华
前言
上期内容详见https://ost.51cto.com/posts/10995
正文
在上期的内容中,我们完成了开发定位服务Demo的基本准备。而在这期内容中,笔者会将剩下的开发工作做完。
为项目集成SDK
在正式开发应用前,我们需要在Gradle文件中设置AppGallery Connect的Gradle插件以及AppGallery Connect SDK基础包,以及将Location SDK集成到开发环境中,这些都是上期内容中未完成的步骤。
首先,我们需要下载agconnect-services.json文件;
下载完成后,将此agconnect-services.json文件复制到剪切板中,然后打开DevEco Studio中的项目,再打开entry>src,将agconnect-services.json文件粘贴到src的目录中;
接着,打开项目级的build.gradle:
并在dependencies中添加相关代码:
之后,打开模块级的build.gradle;
首先,在dependencies中添加相关代码:
之后,在模块级build.gradle文件的顶部添加相关代码;
完成上述操作后,点击右上角的sync now,即可完成脚本文件的同步。
添加应用权限
打开entry>src>main>config.json,在module模块中添加获取网络状态的权限,定位权限以及后台定位权限:
完成上述操作后,点击右上角的sync now,即可完成脚本文件的同步。
配置混淆脚本
编译APP前,我们需要配置混淆配置文件,这样可以避免混淆SDK导致功能异常。
打开entry>src>proguard-rules.pro,加入排除HMS Core SDK的混淆配置;
设置交互逻辑
完成前文的基础操作后,我们便可以开始写入定位服务Demo的交互逻辑了;
第一个要做的是完成页面跳转,即从MainAbilitySlice跳转至GetLastLocationAbilitySlice。前者用于提供Demo的初始界面,类似于一个屏幕保护壁纸,而后者则提供带有定位业务的界面,它是这个Demo的核心页面。
打开entry>src>main>Java>com.example.location_hms>slice>MainAbilitySlice,在onStart回调中加入如下代码,实现不同Page Ability间页面导航的功能;
第二个需要实践的是——在代码中动态申请相关定位权限。
在前面的步骤中,我们已经将定位权限和后台定位权限(即“ohos.permission.LOCATION ”和“ohos.permission.LOCATION_IN_BACKGROUND”)添加到config.json中了,但这两个权限属于敏感权限,需要用户手动进行动态申请。
所以,我们新建一个AbilitySlice,并将其命名为RequestAbilitySlice;
创建完成后,在RequestAbilitySlice中添加如下代码,以创建一个动态申请相关定位权限的线程。
并且,我们希望打开应用时,系统就能推送关于申请权限的消息,故我们需要在MainAbility中进行相关设置;
打开entry>src>main>Java>com.example.location_hms>MainAbility,添加如下代码:
第三个需要做的则是在GetLocationAbilitySlice中写入的就是定位服务的功能逻辑了。
我们在之前创建了一个用于动态申请相关权限的RequestAbilitySlice,不过它只是作为一个基类Slice,相当于一个模板,在Demo中并不被当作具体页面向用户展示。而这个RequestAbilitySlice的用处则是被GetLastLocationAbilitySlice所继承,这样做不仅能将两种不同作用的代码分隔开来,以免混淆,而且想在这个Demo中扩展其他定位功能时,也可以让新建的AbilitySlice直接继承这个基类slice,避免重复写同一种代码。
打开GetLastLocationAbilitySlice,将它extend的对象改为RequestAbilitySlice,并加入相应代码:
完成上述操作后,定位套件的制作就大功告成了。
效果图如下:
结尾
本期的分享到这里就结束了。
鉴于笔者能力有限,文章如有错误和不足之处,希望读者批评指正。
更多资料请关注我们的项目 : Awesome-Harmony_木棉花
如果能在地图上标出来就更有意思了(心疼楼主头发)