// 轨迹服务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) {} };
回调接口的错误码及消息内容,请参阅类参考。
1. 开启鹰眼服务,启动鹰眼 service
// 开启服务 mTraceClient.startTrace(mTrace, mTraceListener);
2. 开启轨迹采集,启动轨迹追踪。至此,正式开启轨迹追踪。
注意:因为startTrace与startGather是异步执行,且startGather依赖startTrace执行开启服务成功,所以建议startGather在public void onStartTraceCallback(int errorNo, String message)回调返回错误码为0后,再进行调用执行,否则会出现服务开启失败12002的错误。
// 开启采集 mTraceClient.startGather(mTraceListener);
1. 停止轨迹服务:此方法将同时停止轨迹服务和轨迹采集,完全结束鹰眼轨迹服务。若需再次启动轨迹追踪,需重新启动服务和轨迹采集,示例代码如下:
// 停止服务 mTraceClient.stopTrace(mTrace, mTraceListener);
2. 停止轨迹采集:此方法将停止轨迹采集,但不停止轨迹服务(即,不再采集轨迹点了,但鹰眼 service 还存活)。若需再次启动轨迹追踪,直接调用mTraceClient.startGather()方法开启轨迹采集即可,无需再次启动轨迹服务。此方式可应用于频繁中断轨迹追踪的场景,可避免频繁启动服务。示例代码如下:
// 停止采集 mTraceClient.stopGather(mTraceListener);
注意:
开启服务、开启采集、停止采集、停止服务四个接口共用OnTraceListener监听器,每次调用时,请务必传入同一个监听器实例;或者在初始化时调用LBSTraceClient.setOnTraceListener()设置监听器,后续调用以上四个接口时无须再次传入,如:
开启服务LBSTraceClient.startTrace(mTrace, null)
开启采集LBSTraceClient.startGather(null)
此时回调消息由setOnTraceListener()时传入的监听器接收// 请求标识 int tag = 1; // 轨迹服务ID long serviceId = 0; // 设备标识 String entityName = "myTrace"; // 创建历史轨迹请求实例 HistoryTrackRequest historyTrackRequest = new HistoryTrackRequest(tag, serviceId, entityName); //设置轨迹查询起止时间 // 开始时间(单位:秒) long startTime = System.currentTimeMillis() / 1000 - 12 * 60 * 60; // 结束时间(单位:秒) long endTime = System.currentTimeMillis() / 1000; // 设置开始时间 historyTrackRequest.setStartTime(startTime); // 设置结束时间 historyTrackRequest.setEndTime(endTime); // 初始化轨迹监听器 OnTrackListener mTrackListener = new OnTrackListener() { // 历史轨迹回调 @Override public void onHistoryTrackCallback(HistoryTrackResponse response) {} }; // 查询历史轨迹 mTraceClient.queryHistoryTrack(historyTrackRequest, mTrackListener);