Android鹰眼SDK
产品简介
注意:鹰眼Android SDK V3.1.3 及以上版本已适配Android Q。 您使用本服务,即您承诺并保证向使用您产品(网页或应用程序)的用户披露有关数据使用情形,并确保是在用户知情、并授权允许的情况下使用百度地图开放平台的相关服务获取用户位置数据等必要数据以提供相关服务。 具体隐私政策详见《百度地图开放平台产品和服务隐私政策》。
重要:为了进一步加强对最终用户个人信息的安全保护措施,从鹰眼Android SDK v3.1.11版本起,请开发者务必确保调用SDK任何接口前先调用隐私合规接口setAgreePrivacy,否则可能会无法正常使用相关功能。具体可参考隐私合规接口说明。
重点功能简介
- 轨迹追踪
简介鹰眼为每一个应用提供1000万终端以上轨迹管理能力,并且支持全球轨迹追踪。鹰眼提供多种API和SDK供开发者从各种终端追踪轨迹,如:手机、卫星定位器、智能后视镜等硬件设备。此外,鹰眼也支持开发者从服务端上传轨迹。
鹰眼为开发者免费存储最近1年的轨迹数据。鹰眼采用多机房多实例分布式存储,并定期自动备份,保障数据存储安全。功能展示// 轨迹服务ID long serviceId = 0; // 设备标识 String entityName = "myTrace"; // 是否需要对象存储服务,默认为:false,关闭对象存储服务。注:鹰眼 Android SDK v3.0以上版本支持随轨迹上传图像等对象数据,若需使用此功能,该参数需设为 true,且需导入bos-android-sdk-1.0.2.jar。 boolean isNeedObjectStorage = false; // 初始化轨迹服务 Trace mTrace = new Trace(serviceId, entityName, isNeedObjectStorage); // 初始化轨迹服务客户端 LBSTraceClient mTraceClient = new LBSTraceClient(getApplicationContext()); // 定位周期(单位:秒) int gatherInterval = 5; // 打包回传周期(单位:秒) int packInterval = 10; // 设置定位和打包周期 mTraceClient.setInterval(gatherInterval, packInterval); // 初始化轨迹服务监听器 OnTraceListener mTraceListener = new OnTraceListener() { // 开启服务回调 @Override public void onStartTraceCallback(int status, String message) {} // 停止服务回调 @Override public void onStopTraceCallback(int status, String message) {} // 开启采集回调 @Override public void onStartGatherCallback(int status, String message) {} // 停止采集回调 @Override public void onStopGatherCallback(int status, String message) {} // 推送回调 @Override public void onPushCallback(byte messageNo, PushMessage message) {} }; // 开启服务 mTraceClient.startTrace(mTrace, mTraceListener); // 开启采集 mTraceClient.startGather(mTraceListener);
http://mapopen-pub-androidsdk.cdn.bcebos.com/tracesdk/video/gather1.mp4
- 空间检索
简介鹰眼提供丰富的空间搜索能力,支持搜索圆形、多边形、行政区范围内的终端实时位置,并统计终端数量。利用该服务,开发者可实现例如:搜索当前地图视野内的终端、北京市内的终端等功能。功能展示
// 请求标识 int tag = 5; // 轨迹服务ID long serviceId = 0; //设置活跃时间 long activeTime = System.currentTimeMillis() / 1000 - 5*60; // 过滤条件 FilterCondition filterCondition = new FilterCondition(); // 查找当前时间5分钟之内有定位信息上传的entity filterCondition.setActiveTime(activeTime); // 返回结果坐标类型 CoordType coordTypeOutput = CoordType.bd09ll; //中心点 LatLng center = new LatLng(40.0569, 116.307553); //检索半径 double radius=1000; // 分页索引 int pageIndex = 1; // 分页大小 int pageSize = 100; //根据圆心半径和筛选条件进行搜索 AroundSearchRequest aroundSearchRequest = new AroundSearchRequest( tag, serviceId, center, radius,filterCondition, coordTypeOutput, pageIndex, pageSize); OnEntityListener onEntityListener = new OnEntityListener() { @Override public void onAroundSearchCallback(AroundSearchResponse aroundSearchResponse) { super.onAroundSearchCallback(aroundSearchResponse); //周边搜索回调接口 } ..... }; mTraceClient.aroundSearchEntity(aroundSearchRequest, onEntityListener);
http://mapopen-pub-androidsdk.cdn.bcebos.com/tracesdk/video/space2.mp4
- 轨迹查询、纠偏与展示
简介轨迹查询:利用鹰眼高性能轨迹查询服务,开发者实时查询任意时段的轨迹。实时查询是指:轨迹点一旦成功上传到鹰眼云端,在小于100毫秒的时间内,即可通过接口查询到该轨迹点。鹰眼还提供轨迹批量导出功能,供开发者下载历史轨迹数据。
轨迹纠偏:为纠正轨迹漂移,鹰眼提供专业的轨迹纠偏绑路。利用该服务,开发者可纠正轨迹漂移,展示平滑连贯的轨迹。鹰眼分别针对驾车、骑行、步行提供了不同的轨迹纠偏绑路算法,适用于多种交通工具的轨迹校正。功能展示// 请求标识 int tag = 1; // 轨迹服务ID long serviceId = 0; // 设备标识 String entityName = "myTrace"; // 创建历史轨迹请求实例 HistoryTrackRequest historyTrackRequest = new HistoryTrackRequest(tag, serviceId, entityName); // 开始时间2017-4-17 0:0:0的UNIX 时间戳 long startTime = 1492358400; // 结束时间2017-4-17 23:59:59的UNIX 时间戳 long endTime = 1492444799; // 设置开始时间 historyTrackRequest.setStartTime(startTime); // 设置结束时间 historyTrackRequest.setEndTime(endTime); // 设置需要纠偏 historyTrackRequest.setProcessed(true); // 创建纠偏选项实例 ProcessOption processOption = new ProcessOption(); // 设置需要去噪 processOption.setNeedDenoise(true); // 设置需要抽稀 processOption.setNeedVacuate(true); // 设置需要绑路 processOption.setNeedMapMatch(true); // 设置精度过滤值(定位精度大于100米的过滤掉) processOption.setRadiusThreshold(100); // 设置交通方式为驾车 processOption.setTransportMode(TransportMode.driving); // 设置纠偏选项 historyTrackRequest.setProcessOption(processOption); // 设置里程填充方式为驾车 historyTrackRequest.setSupplementMode(SupplementMode.driving); // 初始化轨迹监听器 OnTrackListener mTrackListener = new OnTrackListener() { @Override public void onHistoryTrackCallback(HistoryTrackResponse response) { // 历史轨迹回调 } }; // 查询轨迹 mTraceClient.queryHistoryTrack(historyTrackRequest, mTrackListener);
http://mapopen-pub-androidsdk.cdn.bcebos.com/tracesdk/video/TraceQuery.mp4
- 里程计算与补偿
简介
鹰眼Android SDK提供了queryDistance()方法,用于计算指定时间段内的轨迹里程,支持:计算纠偏后的里程,用路线规划补偿中断轨迹的里程。
功能展示// 请求标识 int tag = 2; // 轨迹服务ID long serviceId = 0; // 设备标识 String entityName = "myTrace"; // 创建里程查询请求实例 DistanceRequest distanceRequest = new DistanceRequest(tag, serviceId, entityName); // 开始时间(单位:秒) long startTime = System.currentTimeMillis() / 1000 - 12 * 60 * 60; // 结束时间(单位:秒) long endTime = System.currentTimeMillis() / 1000; // 设置开始时间 distanceRequest.setStartTime(startTime); // 设置结束时间 distanceRequest.setEndTime(endTime); // 设置需要纠偏 distanceRequest.setProcessed(true); // 创建纠偏选项实例 ProcessOption processOption = new ProcessOption(); // 设置需要去噪 processOption.setNeedDenoise(true); // 设置需要绑路 processOption.setNeedMapMatch(true); // 设置交通方式为驾车 processOption.setTransportMode(TransportMode.driving); // 设置纠偏选项 distanceRequest.setProcessOption(processOption); // 设置里程填充方式为驾车 distanceRequest.setSupplementMode(SupplementMode.driving); // 初始化轨迹监听器 OnTrackListener mTrackListener = new OnTrackListener() { @Override public void onDistanceCallback(DistanceResponse response) { // 里程回调 } }; // 查询里程 mTraceClient.queryDistance(distanceRequest, mTrackListener);
http://mapopen-pub-androidsdk.cdn.bcebos.com/tracesdk/video/distance1.mp4
- 地理围栏(监控对象状态)
简介鹰眼提供地理围栏监控服务,开发者可利用鹰眼创建多边形、路线、行政区等类型的地理围栏,鹰眼自动监控终端进出围栏行为,并推送报警至鹰眼SDK或开发者服务端。利用该服务,开发者可实现例如:利用行政区围栏监控车辆是否驶出海淀区、利用多边形围栏监控物流车辆是否准时到达站点等功能。功能展示
// 请求标识 int tag = 10; // 轨迹服务ID long serviceId = 0; // 监控对象 String monitoredPerson = "myTrace"; // 围栏编号列表 List<Long> fenceIds = null; // 位置坐标 com.baidu.trace.model.LatLng location = new com.baidu.trace.model.LatLng(40.0552720000, 116.307655000); // 坐标类型 CoordType coordType = CoordType.bd09ll; // 创建查询服务端围栏指定位置上监控状态请求实例 MonitoredStatusByLocationRequest request = MonitoredStatusByLocationRequest.buildServerRequest(tag,serviceId, monitoredPerson, fenceIds, location, coordType); // 初始化围栏监听器 OnFenceListener mFenceListener = new OnFenceListener() { @Override public void onMonitoredStatusByLocationCallback(MonitoredStatusByLocationResponse response) { //查询指定位置监控对象状态回调接口 } ...... } // 查询围栏监控者状态 mTraceClient.queryMonitoredStatusByLocation(request, mFenceListener);
http://mapopen-pub-androidsdk.cdn.bcebos.com/tracesdk/video/Fence.mp4
- 轨迹分析(停留点)
简介鹰眼为开发者提供停留点、超速(基于道路限速)、急变速等运动行为分析。利用该服务,开发者可分析一段轨迹中有哪些停留点、在何处出现了超速等危险驾驶行为。功能展示
// 请求标识 int tag = 1; // 轨迹服务ID long serviceId = 0; // 设备标识 String entityName = "myTrace"; //创建停留点查询请求实例 StayPointRequest stayPointRequest = new StayPointRequest(); // 开始时间2017-4-17 0:0:0的UNIX 时间戳 long startTime = 1492358400; // 结束时间2017-4-17 23:59:59的UNIX 时间戳 long endTime = 1492444799; // 设置开始时间 stayPointRequest.setStartTime(startTime); // 设置结束时间 stayPointRequest.setEndTime(endTime); // 创建纠偏选项实例 ProcessOption processOption = new ProcessOption(); // 设置需要绑路 processOption.setNeedMapMatch(true); // 设置交通方式为驾车 processOption.setTransportMode(TransportMode.driving); // 设置纠偏选项 stayPointRequest.setProcessOption(processOption); //停留时长 long stayTime=600*10; //设置停留时间阈值 即停留多长时间被认为是一次停留,单位:秒,默认值:600,即10分钟 stayPointRequest.setStayTime(stayTime); //停留半径 int radius=20; //设置停留半径: 即系统判断在半径为stayRadius的圆形范围内停留时间超过stayTime,则被认为是一次停留 stayPointRequest.setStayRadius(radius); //初始化停留点监听 OnAnalysisListener mAnalysisListener = new OnAnalysisListener() { @Override public void onStayPointCallback(StayPointResponse response) { //停留点分析回调 } ...... }; //停留点查询 mTraceClient.queryStayPoint(stayPointRequest, mAnalysisListener);
http://mapopen-pub-androidsdk.cdn.bcebos.com/tracesdk/video/fenxi.mp4
鹰眼服务流程

用户须知
使用百度鹰眼Android SDK,您需申请密钥(key)后才可使用百度鹰眼Android SDK。任何非营利性产品请直接使用,商业目的产品使用前请参考使用须知。在您使用百度鹰眼Android SDK之前,请先阅读百度地图API使用条款。
开始使用