前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >HarmonyOS NEXT 设置持续定位和后台持续定位

HarmonyOS NEXT 设置持续定位和后台持续定位

原创
作者头像
水滴石轩
发布2025-03-17 19:07:30
发布2025-03-17 19:07:30
19100
代码可运行
举报
运行总次数:0
代码可运行

最近有个需求需要应用息屏或者在后台时,能够一直获取用户的位置信息,查看了很多资料最后确认需要持续定位逻辑 + 后台长时任务一起设置,才能实现该功能。

但在测试时发现,应用置为后台或者息屏后,长时间不一定位置,系统会将应用给托管掉,不会获取定位信息,一旦手机移动位置,系统会将该应用激活,继续获取定位信息,这种场景节约了手机能耗,下面继续展示代码上的处理

既然是获取用户位置信息,这种隐私性的信息,需求向用户申请权限,ohos.permission.LOCATION和ohos.permission.APPROXIMATELY_LOCATION这两个权限是用户授权的权限,需要我们弹框让用户同意,具体如何申请权限可以参考:https://developer.huawei.com/consumer/cn/blog/topic/03177278991234017

获取权限后,调用function on(type: 'locationChange', request: LocationRequest | ContinuousLocationRequest, callback: Callback<Location>): void;方法设置持续定位代理,不获取权限时也要调用function off(type: 'locationChange', callback?: Callback<Location>): void;注销监听

下面是具体代码实现

代码语言:javascript
代码运行次数:0
运行
复制
import { geoLocationManager } from '@kit.LocationKit';

/**
 * 持续定位。多用于导航、运动轨迹、出行等场景。
 *
 * 首先要实例化ContinuousLocationRequest对象,用于告知系统该向应用提供何种类型的位置服务,以及位置结果上报的频率。
 * 设置locationScenario:
 *   建议locationScenario参数优先根据应用的使用场景进行设置,该参数枚举值定义参见UserActivityScenario,
 *   例如地图在导航时使用NAVIGATION参数,可以持续在室内和室外场景获取位置用于导航。
 *
 * 设置interval:
 *   表示上报位置信息的时间间隔,单位是秒,默认值为1秒。如果对位置上报时间间隔无特殊要求,可以不填写该字段。
 */
export function OnContinuousLocationRequest() {
  let request: geoLocationManager.ContinuousLocationRequest = {
    'interval': 10,
    'locationScenario': geoLocationManager.UserActivityScenario.NAVIGATION
  }

  try {
    geoLocationManager.on('locationChange', request, locationCallback);
  } catch (err) {
    console.info(TAG, "errCode:" + JSON.stringify(err));
  }
}

let locationCallback = (location: geoLocationManager.Location): void => {
  console.info(TAG, 'locationCallback: data: ' + JSON.stringify(location));
};

/**
 *  关闭位置变化订阅,并删除对应的定位请求
 */
export function OffContinuousLocationRequest() {
  try {
    geoLocationManager.off('locationChange', locationCallback);
  } catch (err) {
    console.info(TAG, "errCode:" + JSON.stringify(err));
  }
}

长时任务请参考:https://developer.huawei.com/consumer/cn/blog/topic/03176671500550091

----------------- end ---------------

后面会继续补充不足之处。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档