1. 简介
位置服务子系统通过GNSS、网络定位技术获取实时准确的设备位置数据, 提供设备定位能力
1.1 OpenHarmony架构图
1.2 子系统架构图
2. 源码分析
2.1 IDL接口
-
ILocator: 提供Locator服务对外SDK接口,包含定位开/关、启动/停止、回调注册、位置上报等;
-
ILocatorCallback: 提供位置信息、定位状态(启动/停止)、异常状态回调接口;
-
ISwitchCallBack: 提供位置服务开关状态回调接口
-
IGeoConvert: 提供地理编码服务相关接口
-
IGnssAbility: 提供GNSS服务相关接口
-
INetWorkAbility: 提供网络定位服务接口
-
IPassiveAbility: 提供被动定位服务接口
-
ILocationCallback: 提供驱动框架(GNSS HDI)位置信息回调接口
定位请求(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, // 该场景,