【鸿蒙南向开发】OpenHarmony 源码分析之位置服务子系统

1. 简介

​ 位置服务子系统通过GNSS、网络定位技术获取实时准确的设备位置数据, 提供设备定位能力

1.1 OpenHarmony架构图

image.png

1.2 子系统架构图

image.png

2. 源码分析

2.1 IDL接口

  • ILocator: 提供Locator服务对外SDK接口,包含定位开/关、启动/停止、回调注册、位置上报等;

  • ILocatorCallback: 提供位置信息、定位状态(启动/停止)、异常状态回调接口;

  • ISwitchCallBack: 提供位置服务开关状态回调接口

  • IGeoConvert: 提供地理编码服务相关接口

  • IGnssAbility: 提供GNSS服务相关接口

  • INetWorkAbility: 提供网络定位服务接口

  • IPassiveAbility: 提供被动定位服务接口

  • ILocationCallback: 提供驱动框架(GNSS HDI)位置信息回调接口

image.png

定位请求(RequestConfig)定义如下:


class RequestConfig : public Parcelable {

...

void ReadFromParcel(Parcel& parcel);

bool Marshalling(Parcel& parcel) const override;

std::string ToString() const;

static std::unique\_ptr\<RequestConfig\> Unmarshalling(Parcel& parcel);

void Set(RequestConfig& requestConfig);

bool IsSame(RequestConfig& requestConfig);

int scenario\_;

int timeInterval\_;

int distanceInterval\_;

float maxAccuracy\_;

int fixNumber\_;

int priority\_;

};

  • scenario_: 定位场景,取值范围如下,用于设置定位方式。

enum {

SCENE\_UNSET = 0x0300,

SCENE\_NAVIGATION = 0x0301, // 该场景,采用GPS定位

SCENE\_TRAJECTORY\_TRACKING = 0x0302, // 该场景,采用GPS定位

SCENE\_CAR\_HAILING = 0x0303, // 该场景,采用GPS定位

SCENE\_DAILY\_LIFE\_SERVICE = 0x0304, // 该场景,
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值