baiduTrace

来自于:开发者立即使用

概述

百度鹰眼轨迹SDK是一套移动设备的轨迹服务应用程序接口。配合 鹰眼轨迹产品,您可以开发适用于移动设备的轨迹追踪应用,轻松实现实时轨迹追踪、历史轨迹查询、地理围栏报警等功能。 该套SDK提供的服务是免费的,任何非营利性程序均可使用,您需要先 申请密钥(key) ,才可使用该套SDK接口。任何非营利性产品请直接使用,商业目的产品使用前请参考 使用须知 。 在您使用百度鹰眼轨迹SDK之前,请先阅读 百度地图API使用条款

使用此模块之前需先配置 config.xml 文件,配置完毕,需通过云端编译生效,配置方法如下:

  • 名称:baiduTrace
  • 参数:api_key
  • 配置示例:
  <!-- Android 配置方法 -->
  <meta-data name="com.baidu.lbsapi.API_KEY" value="0Du6ujuego7WfAdHFOZ8rEr8Of0AHa9i"/>

  <!-- iOS 配置方法 -->
  <feature name="baiduTrace">
     <param name="api_key" value="ATu9pjnegF7HfAgHuOZbrErnOf0A8ak0"/>
     <param name="MCODE" value="com.apicloud.app"/>
  </feature>
  <preference name="backgroundMode" value="location"/>
  • 注意事项:

此模块在云编译的时候,iOS版本配置最低为iOS8.0,并添加始终允许定位的权限。

在Android系统中通常使用轨迹追踪的应用都需要长时间后台运行,若手机开启了省电模式、各手机厂商定制的优化模式(如小米手机的神隐模式)、第三方安全应用的省电模式(如360手机卫士),则进程可能会被杀死。 处理策略为,用户在手机端关闭省电模式,或将APP加入这些模式的白名单

模块接口

startTrace

开始追踪

startTrace({params}, callback(ret))

params

serviceId:

  • 类型:数字
  • 描述:开发者创建的鹰眼服务ID

entityName:

  • 类型:字符串
  • 描述:终端实体的名称,采集的轨迹将算在该 entity 名下

gatherInterval:

  • 类型:数字
  • 描述:(可选项)位置采集周期 (单位:秒),值域为[2,300],且上传周期必须是采集周期的整数倍
  • 默认值:5

packInterval:

  • 类型:数字
  • 描述:(可选项)打包上传周期 (单位:秒),值域为[2,300],且上传周期必须是采集周期的整数倍
  • 默认值:30

traceType:

  • 类型:数字
  • 描述:(可选项)轨迹服务类型,仅支持 Android 平台
  • 默认值:2
  • 取值范围:

    • 0 : 不上传位置数据,也不接收报警信息;
    • 1 : 不上传位置数据,但接收报警信息;
    • 2 : 上传位置数据,且接收报警信息

keepAlive:

  • 类型:布尔
  • 描述:(可选项)是否保活
  • 默认:false

callback(ret)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
 messageCode: 10008  // 数字类型; 消息编码,取值范围如下:
                     // 针对 Android 平台:
                     // 0:开启服务成功
                     // 10000:开启服务请求发送失败
                     // 10001:开启服务失败    
                     // 10002:参数错误
                     // 10003:网络连接失败
                     // 10004:网络未开启
                     // 10005:服务正在开启
                     // 10006:服务已开启
                     // 10007:服务正在停止
                     // 10008:开启缓存
                     // 10009:已开启缓存
                     // 10010: 代表轨迹服务类型错误
                     // 10011: 代表连接服务器失败,已开始采集轨迹,并进入缓存模式
                     // 10012: 代表连接服务器失败,当网络恢复后会自动重新登录
                     // 10013: 代表重新和服务端连接成功
                     // 针对 iOS 平台:
                     //0:服务开启成功,并与服务端连接成功
                     //1:服务开启成功,但与服务端连接失败,SDK会尝试重连
                     //2:参数错误
                     //3:内部错误
                     //4:网络异常
                     //5:鉴权不通过导致失败(ak mcode等信息错误)
                     //6:正在开启服务
                     //7:已经开启服务,请勿重复开启
                     //8:停止服务成功
                     //9:服务还未开启,无法停止
                     //10:正在停止服务
                     //11:已经在采集,请勿重复开始
                     //12:开始采集必须在开始服务之后调用
                     //13:开始采集由于系统定位服务未开启而失败
                     //14:开始采集由于没有后台定位权限而失败
                     //15:开始采集由于内部错误而失败
                     //16:停止采集成功
                     //17:停止采集必须在开始采集之后调用
}

示例代码

var baiduTrace = api.require('baiduTrace');
baiduTrace.startTrace({
    serviceId: 1000,
    entityName: 'daughter',
    traceType: 2
}, function(ret) {
    if (ret) {
        alert(JSON.stringify(ret));
    }
})

可用性

iOS系统、Android系统

可提供的1.0.0及更高版本

stopTrace

停止追踪

stopTrace({params}, callback(ret))

params

entityName:

  • 类型:字符串
  • 描述:要停止的终端实体的名称,在 iOS 平台上忽略本参数

callback(ret, err)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    status: true,  // 布尔类型; 操作是否成功
}

err:

  • 类型:JSON 对象
  • 内部字段:
{
    code: 100     // 数字类型;错误码
                  //在 Android 平台错误码
                  //11000:停止服务请求发送失败
                  //11001:停止服务失败
                  //11002:服务未开启
                  //11003:服务正在停止
                  //11004:代表轨迹服务还未开启
                  //11005:代表缓存数据上传完毕
                  //在 iOS 平台错误码
                  //-1:服务错误
                  //1:参数错误
                  //2:内部错误
                  //3:网络异常
                  //4:鉴权不通过导致失败(ak mcode等信息错误)
                  //5:服务还未开启,无法停止
                  //6:正在停止服务
                  //7:采集错误
                  //8:停止采集必须在开始采集之后调用
}

示例代码

var baiduTrace = api.require('baiduTrace');
baiduTrace.stopTrace({
    entityName: 'daughter'
}, function(ret, err) {
    if (ret) {
        alert(JSON.stringify(ret));
    }
})

可用性

iOS系统、Android系统

可提供的1.0.0及更高版本

queryRTTrack

检索符合过滤条件的Entity终端实体

queryRTTrack({params}, callback(ret))

params

serviceId:

  • 类型:数字类型
  • 描述:开发者创建的鹰眼服务的ID

entityNames:

  • 类型:字符串
  • 描述:entity标识,可以是多个,不同标识之间用逗号隔开

columnKey:

  • 类型:字符串
  • 描述:检索条件(格式为 : "key1=value1,key2=value2,.....")

activeTime:

  • 类型:数字类型
  • 描述:UNIX时间戳,查询在此时间之后有定位信息上传的entity(loc_time>=activeTime)如查询2016-8-21 00:00:00之后仍活跃的entity,此字段设置为1471708800

pageSize:

  • 类型:数字类型
  • 描述:分页大小

pageIndex:

  • 类型:数字类型
  • 描述:分页索引

returnType:

  • 类型:数字类型
  • 描述:(可选项)返回结果的类型,仅支持 Android 平台
  • 默认值:0
  • 取值范围:
    • 0 : 返回全部结果
    • 1 : 只返回entityName的列表

callback(ret, err)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    status: true,  // 布尔类型; 操作是否成功
    result: ''     // 字符串类型; 查询成功后的结果
}

err:

  • 类型:JSON 对象
  • 内部字段:
{
    msg : ''      // 字符串类型;错误消息
}

示例代码

var baiduTrace = api.require('baiduTrace');
baiduTrace.queryRTTrack({
    entityNames: 'daughter',
    serviceId: 1234,
    columnKey: '',
    activeTime: 0,
    pageSize: 1000,
    pageIndex: 10
}, function(ret, err) {
    if (ret) {
        api.alert({msg:JSON.stringify(ret)});
    }
})

可用性

iOS系统、Android系统

可提供的1.0.0及更高版本

queryHistoryTrack

查询历史轨迹, 仅支持 Android 平台

queryHistoryTrack({params}, callback(ret))

params

serviceId:

  • 类型:数字类型
  • 描述:开发者创建的鹰眼服务的ID

entityName:

  • 类型:字符串
  • 描述:entity标识

simpleReturn:

  • 类型:数字类型
  • 描述:(可选项)是否返回精简的结果
  • 默认值:0
  • 取值范围:
    • 0 : 将只返回经纬度
    • 1 : 将返回经纬度及其他属性信息

isProcessed:

  • 类型:数字类型
  • 描述:(可选项)是否返回纠偏数据
  • 取值范围:
    • 0 : 返回原数据
    • 1 : 返回纠偏后的数据
  • 默认值:0

startTime:

  • 类型:数字类型
  • 描述:开始时间 (Unix时间戳)

endTime:

  • 类型:数字类型
  • 描述:结束时间 (Unix时间戳)

pageSize:

  • 类型:数字类型
  • 描述:分页大小

pageIndex:

  • 类型:数字类型
  • 描述:分页索引

callback(ret, err)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    status: true,  // 布尔类型; 操作是否成功
    result: ''     // 字符串类型; 查询成功后的结果
}

err:

  • 类型:JSON 对象
  • 内部字段:
{
    msg : ''      // 字符串类型;错误消息;
}

示例代码

var baiduTrace = api.require('baiduTrace');
baiduTrace.queryHistoryTrack({
    entityName: 'daughter',
    serviceId: 12345,
    simpleReturn: '',
    startTime: 100000,
    endTime: 200000,
    pageSize: 1000,
    pageIndex: 10
}, function(ret, err) {
    if (ret) {
        JSON.stringify(ret);
    }
})

可用性

iOS系统

可提供的1.0.0及更高版本

createCircularFence

创建圆形围栏

createCircularFence({params}, callback(ret))

params

serviceId:

  • 类型:数字类型
  • 描述:开发者创建的鹰眼服务的ID

center:

  • 类型:字符串类型
  • 描述:围栏圆心(圆心位置, 格式 : "经度,纬度")

radius:

  • 类型:数字类型
  • 描述:围栏半径(单位 : 米)

fenceName:

  • 类型:字符串
  • 描述:围栏名称

monitorEntity:

  • 类型:字符串类型
  • 描述:监控对象列表(多个entityName,以英文逗号"," 分割),ios仅支持单个

coordType:

  • 类型:数字类型
  • 描述:(可选项)坐标类型
  • 默认值:1
  • 取值范围:
    • 1:WGS84:为一种大地坐标系,也是目前广泛使用的GPS全球卫星定位系统使用的坐标系
      • 2:GCJ02:表示经过国测局加密的坐标
    • 3:百度经纬度坐标系

denoiseAccuracy:

  • 类型:数字
  • 描述:去燥精度

observers:

  • 类型:字符串类型
  • 描述:观察者列表(多个entityName,以英文逗号"," 分割),仅支持 Android 平台

fenceDesc:

  • 类型:字符串
  • 描述:围栏描述,仅支持 Android 平台

creator:

  • 类型:字符串
  • 描述:创建者(entity标识),仅支持 Android 平台

validCycle:

  • 类型:数字类型
  • 描述:生效周期,仅支持 Android 平台

alarmCondition:

  • 类型:数字类型
  • 描述:(可选项)报警条件,仅支持 Android 平台
  • 默认值:1
  • 取值范围:
    • 1:进入时触发提醒
    • 2:离开时触发提醒
    • 3:进入离开均触发提醒

callback(ret, err)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    status: true,  // 布尔类型; 操作是否成功
    fenceId : 100  // 数字类型; 新创建的围栏ID
}

示例代码

var baiduTrace = api.require('baiduTrace');
baiduTrace.createCircularFence({
    serviceId: ,
    creator: '',
    fenceName: '学校',
    fenceDesc: '这是学校',
    monitorEntity: 'daughter',
    observers: 'daughter',
    validCycle: 5,
    coordType: 1,
    center: "116.838463,40.263548",
    radius: 500,
    alarmCondition: 3
}, function(ret, err) {
    if (ret) {
        api.alert({msg:JSON.stringify(ret)});
    }
})

可用性

iOS系统、Android系统

可提供的1.0.0及更高版本

deleteFence

删除围栏

deleteFence({params}, callback(ret))

params

serviceId:

  • 类型:数字类型
  • 描述:开发者创建的鹰眼服务的ID,iOS 平台上忽略此参数

fenceId:

  • 类型:数字类型
  • 描述:要删除的地理围栏的 ID 数组

monitor:

  • 类型:数字类型
  • 描述:被监控对象entity,仅支持 iOS 平台

callback(ret, err)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    status: true  // 布尔类型; 操作是否成功
}

示例代码

var baiduTrace = api.require('baiduTrace');
baiduTrace.deleteFence({
    fenceId: 1001,
    serviceId: 90909,
    monitor: 'daughter'
}, function(ret) {
    if (ret) {
        api.alert({msg:JSON.stringify(ret)});
    }
})

可用性

iOS系统、Android系统

可提供的1.0.0及更高版本

queryMonitoredStatus

查询实时状态,查询被监控对象和客户端地理围栏的位置关系

queryMonitoredStatus({params}, callback(ret))

params

serviceId:

  • 类型:数字类型
  • 描述:开发者创建的鹰眼服务ID,在 ios 平台忽略本参数

fenceId:

  • 类型:数字类型
  • 描述:要查询的围栏ID

monitoredPersons:

  • 类型:字符串类型
  • 描述:监控对象列表(多个entityName,以英文逗号"," 分割),ios平台仅读取第一个

callback(ret)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    status: true,  // 布尔类型; 操作是否成功
    result: ''     // 字符串类型; 查询结果
}

示例代码

var baiduTrace = api.require('baiduTrace');
baiduTrace.queryMonitoredStatus({
    fenceId:1001,
    monitoredPersons: 'daughter,son'
}, function(ret) {
    if (ret) {
        api.alert({msg:JSON.stringify(ret)});
    }
})

可用性

iOS系统、Android系统

可提供的1.0.0及更高版本

queryFenceHistoryAlarmInfo

查询历史报警信息

注意:由于客户端地理围栏历史报警信息,最多保留7天。 要求startTime和endTime必须在[now-7天, now]这个时间段之内。

queryFenceHistoryAlarmInfo({params}, callback(ret))

params

serviceId:

  • 类型:数字类型
  • 描述:开发者创建的鹰眼服务ID,在 iOS 平台上会忽略本参数

fenceId:

  • 类型:数字类型
  • 描述:要查询的围栏ID

monitoredPersons:

  • 类型:字符串类型
  • 描述:监控对象列表(多个entityName,以英文逗号"," 分割),ios平台上获取第一个

startTime:

  • 类型:数字类型
  • 描述:开始时间(unix时间戳)

endTime:

  • 类型:数字类型
  • 描述:结束时间(unix时间戳)

callback(ret, err)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    status: true,  // 布尔类型; 操作是否成功
    result: ''     // 字符串类型; 查询结果
}

示例代码

var baiduTrace = api.require('baiduTrace');
baiduTrace.queryFenceHistoryAlarmInfo({
    fenceId:1001,
    monitoredPersons: 'daughter,son',
    startTime: 0,
    endTime: 100000
}, function(ret, err) {
    if (ret) {
        api.alert({msg:JSON.stringify(ret)});
    }
})

可用性

iOS系统、Android系统

可提供的1.0.0及更高版本

addEntity

添加Entity

addEntity({params}, callback(ret))

params

serviceId:

  • 类型:数字类型
  • 描述:开发者创建的鹰眼服务ID

entityName:

  • 类型:字符串
  • 描述:entity名称,作为其唯一标识

entityName:

  • 类型:字符串
  • 描述:entity的可读性描述

columnKey:

  • 类型:字符串
  • 描述:属性名称(格式 : "key1=value1,key2=value2.......")

callback(ret)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    status: true,  // 布尔类型; 操作是否成功
}

示例代码

var baiduTrace = api.require('baiduTrace');
baiduTrace.addEntity({
    serviceId:1001,
    entityName:'dad',
    columnKey: ''
}, function(ret) {
    if (ret) {
        api.alert({msg:JSON.stringify(ret)});
    }
})

可用性

iOS系统、Android系统

可提供的1.0.0及更高版本