更新时间:2024-07-03 06:33:58下载pdf
本文介绍地理围栏的相关功能。
LBS 即基于位置的服务(Location Based Services,LBS),是指围绕地理位置数据而展开的服务。由移动终端使用无线通信网络(或卫星定位系统),基于控件数据库,获取用户的地理位置坐标信息并与其他信息集成,以便向用户提供所需的、与位置相关的增值服务。
地理围栏(Geo-fencing)是 LBS 的一种新应用,是物理位置周围的虚拟围栏或边界。与真正的围栏一样,地理围栏会在该位置与其周围区域之间建立隔离。与真实围栏不同的是,它还可以检测虚拟边界内的移动,当设备进入或离开某个特定地理区域,设备可以接收自动通知和警告。有了地理围栏技术,位置社交网站就可以帮助用户在进入某地区时自动登记。
当开启围栏告警后,地理围栏的中心地址通常以车辆锁车时的地址为准,随着车辆行驶而变化。当车辆锁车时上报位置信息,偏差超过设置半径时,进行对应的提醒功能。当车辆超过地理围栏范围时,进行相应报警方式的报警。
类名(协议名) | 说明 |
---|---|
IODGeofenceService | 地理围栏相关服务 |
GeofenceResultInfoBean | 获取地理围栏增值服务信息返回结果实体类 |
GeofenceInfoBean | 设置地理围栏入参实体类 |
获取当前地理围栏信息,包括开关状态和半径等信息。
接口说明
/**
* 获取地理围栏信息
* @param devId 设备 ID
* @param listener 回调
*/
fun getGeofenceInfoWithDevID(
devId: String,
listener: IThingResultCallback<GeofenceResultInfoBean>
)
示例代码
private void getGeofenceInfoWithDevID(String deviceId) {
OutdoorUtils.getGeofenceInfoWithDevID(deviceId, new IThingResultCallback<GeofenceResultInfoBean>() {
@Override
public void onSuccess(GeofenceResultInfoBean result) {
showToast("getGeofenceInfoWithDevID success");
}
@Override
public void onError(String errorCode, String errorMessage) {
showToast("onError code=" + errorCode + " message=" + errorMessage);
}
});
}
GeofenceResultInfoBean 数据模型
{
"deviceId": "vdevo162814799088537",
"deviceInfo": {
"geofenceInfo": {
"fenceRadius": 200, // 圆形围栏半径
"fenceAppNotice": "app,sms,phone", // 告警信息
"open": true, // 围栏能力开关
"lockDpCode": "blelock_switch", // 锁状态 DP Code
"lockValue": "0" // 锁状态判断规则,等于该值,为锁状态
}
}
}
字段 | 类型 | 描述 |
---|---|---|
fenceRadius | Int | 圆形围栏半径 |
fenceAppNotice | String | 告警信息 |
open | Boolean | 围栏能力开关,true 表示开启 |
lockDpCode | String | 锁状态 DP Code,当前固定为 blelock_switch |
lockValue | String | 关锁状态的 DP 值 |
接口说明
/**
* 设置地理围栏
* @param devId 设备 ID
* @param geofenceInfoBean 地理围栏信息
* @param listener 回调
*/
fun setGeofenceWithRequestModel(
devId: String,
geofenceInfoBean: GeofenceInfoBean,
listener: IThingResultCallback<Boolean>
)
示例代码
private void setGeofenceWithRequestModel(String deviceId) {
GeofenceInfoBean geofenceInfoBean = new GeofenceInfoBean();
geofenceInfoBean.setFenceAppNotice("app");
geofenceInfoBean.setFenceRadius(50);
geofenceInfoBean.setOpen(true);
geofenceInfoBean.setLockDpCode("blelock_switch");
geofenceInfoBean.setLockValue("false");
OutdoorUtils.setGeofenceWithRequestModel(deviceId, geofenceInfoBean, new IThingResultCallback<Boolean>() {
@Override
public void onSuccess(Boolean result) {
showToast("setGeofenceWithRequestModel success="+result);
}
@Override
public void onError(String errorCode, String errorMessage) {
showToast("onError code=" + errorCode + " message=" + errorMessage);
}
});
}
GeofenceInfoBean 数据模型
{
"fenceRadius": 200,
"fenceAppNotice": "app,sms,phone",
"open": true,
"lockDpCode": "blelock_switch",
"lockValue": "0"
}
字段 | 类型 | 描述 |
---|---|---|
fenceRadius | Int | 圆形围栏半径 |
fenceAppNotice | String | 告警信息,支持多个,逗号分隔。
"app,sms" 表示开启 App 推送和短信提醒 |
open | Boolean | 围栏能力开关,true 表示开启 |
lockDpCode | String | 锁状态 DP Code,当前固定为 blelock_switch |
lockValue | String | 关锁状态的 DP 值 |
关于 lockValue
,由于 lockDpCode
可能有不同的定制,例如 blelock_switch
可能存在 bool 类型,也可能存在 int 型。需要读取其具体类型,再获取其关锁的值进行发送。
blelock_switch
为 bool 类型,false
为关锁,则发送字符串 "false"
。blelock_switch
是 int 型,1
表示关闭,则发送字符串 "1"
。该内容对您有帮助吗?
是意见反馈该内容对您有帮助吗?
是意见反馈