# 获取附近的人

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();