# 获取附近的人
Google在Android 6.0中引入了动态权限获取机制,本SDK运行需要位置权限,开发者在使用SDK之前,请详细了解关于Android 6.0系统动态权限申请。
# 1.启动泛舟服务
# (1)初始化UbiboatManager类
在主线程中声明UbiboatManager类对象,通过该对象来使用泛舟服务。
public UbiboatManager ubiboatManager = null;
public void onCreate() {
ubiboatManager = UbiboatManager.getInstance(getApplicationConext(), "appUserId");
}
参数:
- ctx - 需要全局有效的context,建议通过getApplicationContext传入。
- appUserId - 每个应用中用户的唯一id。
# (2)注册监听器
泛舟服务的接口调用后,响应数据通过监听器返回。开发者通过判断返回类型来获取不同接口的结果。监听器回调函数不在UI线程,请不要直接在回调中进行UI操作。
ubiboatManager.registerUbiboatListener(new UbiboatListener() {
@Override
public void onUbiboatResp(BaseUbiboatResp baseUbiboatResp) {
switch (baseUbiboatResp.type){
case BaseUbiboatResp.RespType.NEAR:
(NearResp) baseUbiboatResp;
break;
case BaseUbiboatResp.RespType.DIS:
(DisResp) baseUbiboatResp;
break;
case BaseUbiboatResp.RespType.STATUS:
(StatusResp) baseUbiboatResp;
break;
}
}
});
监听器返回说明
泛舟监听器UbiboatListener回调方法中返回baseUbiboatResp是基类,所有响应数据继承该类,通过该参数的type字段来区分具体的响应服务类型。
- BaseUbiboatResp类说明
字段 | 类型 | 描述 |
---|---|---|
status | int | 响应状态 |
msg | String | 响应消息 |
type | int | 响应类型 |
附近的人接口调用返回NearResp示例:
{
"type": 1,
"status": 1,
"msg": "success",
"nearPerson": [{
"appUserId": "aa",
"distance": 0.8060606060606061,
"time": "2021-07-02 19:32:36"
}]
}
- nearPerson - 返回的附近的人数组
- appUserId -附近的人的Id
- distance -相对距离,单位米
查询指定用户id距离接口调用返回DisResp示例:
{
"type": 0,
"status": 1,
"msg": "success",
"appUserId": "bb",
"distance": 1.80,
"time": "2021-07-02 19:32:36"
}
- appUserId -指定的用户Id
- distance -相对距离,单位米
异常返回StatusResp示例:
开发者在回调中收到此消息即可自定义提醒用户开启wifi。
{"msg":"WIFI未打开!","status":12,"type":3}
# (3)启动泛舟服务
如该接口未调用,在调用服务接口时,会自动启动泛舟服务。但第一次的服务请求结果会延时返回。
ubiboatManager.start();
# 2.服务接口
在初始化泛舟服务后,如立即使用服务接口,此时服务可能还未绑定,SDK会等待绑定成功后再执行,结果会延时返回。。服务接口的结果在已注册的UbiboatListener监听器中返回。
# (1)获取附近信息
获取周围指定范围内的指定类型的信息,在监听器回调返回附近的人或锚点的id、与自身的相对距离。
ubiboatManager.getNearInfo( dis, groupIds)
参数:
- dis - 范围,单位米
- groupIds - 字符串数组,指定类型,null代表只获取周边的人, 空数组代表所有anchor的分组,指定类型则返回附近指定类型的anchor。
# (2)获取与指定ID用户或秒点的相对距离
开发者调用此接口并传入指定其他用户的唯一ID,即可在监听器获取与该ID的相对距离(米)。
ubiboatManager.getNearDis(appUserId,false);
参数: appUserId - 指定用户或锚点的唯一id isAnchor - true 为锚点
# 3.停止与销毁服务
# (1)停止泛舟服务
ubiboatManager.stop();
# (2)销毁泛舟服务
使用该方法后,ubiboatManager对象也会为null;
ubiboatManager.destory();