之前项目中加了定位功能 后来要求做轨迹记录 用自己的服务器记录坐标点太麻烦了 还有压力 就用了百度的鹰眼服务 遇到几个小问题
先说鹰眼的服务端
LBSTraceClient
因为之前有百度定位导航的sdk包 所以这个sdk要选择一下 我下的是鹰眼的最新sdk
BaiduTraceSDK_v3_0_3.jar
bos-android-sdk-1.0.2.jar
libBaiduTraceSDK_v3_0_3.so
多了这三个文件 添加进去
<!-- 鹰眼服务 --> <service android:name="com.baidu.trace.LBSTraceService" android:enabled="true" android:process=":remote"> </service>
LBSTraceClient 这个客户端也可以实现定位功能 并设置定位时间间隔和获取上传坐标回调的周期 但是因为我之前已经有了定位功能 所以不能重复使用 在更新后的BaiduTraceSDK_v3_0_2。jar里
新增了2个添加坐标的方法
addPoint(AddPointRequest request, OnTrackListener listener)上传单个轨迹点addPoints ( AddPointsRequest request, OnTrackListener listener)批量添加轨迹点刚好可以解决我需要的问题 单独上传坐标里面的参数AddEntityRequest 这个是参数的对象 后面是回调结果的监听先添加参数 根据api文档可以看到
AddPointRequest()
AddPointRequest(int tag, long serviceId)
创建上传单个轨迹点请求实例AddPointRequest(int tag, long serviceId, java.lang.String entityName, Point point, java.lang.String objectName, java.util.Map<java.lang.String,java.lang.String> columns)
创建上传单个轨迹点请求实例参数:tag
- 请求标识serviceId
- 轨迹服务IDentityName
- Entity标识point
- 轨迹点信息objectName
- 对象名称columns - 自定义属性
直接使用
private LBSTraceClient client = null;client = new LBSTraceClient(getApplicationContext());
在定位的回调中获取d定位结果
LatLng lal = new LatLng(); lal.setLatitude(latitude); lal.setLongitude(longitude); Point poi = new Point(); poi.setLocation(lal); poi.setLocTime(MapUtil.getCurrentTime()); Request = new AddPointRequest(10000, serviceId); Request.setPoint(poi);Request.setEntityName("未知用户");这里的对象名称可以作为唯一标识 用于在服务台查找该用户的轨迹
serviceId是在鹰眼控制台申请的服务id在参数集里 第一个tag 随便定义 在坐标Point里必须要设置LocTime时间戳 如果使用columns - 自定义属性
这个也需要先配置columns - key
然后就是执行添加的方法 并在监听中 打印上传的结果 监听中有很多方法 这里只是用了上传结果的回掉client.addPoint(Request, new OnTrackListener() { @Override public void onAddPointCallback(AddPointResponse addPointResponse) { super.onAddPointCallback(addPointResponse); Log.d("回调结果", "打印中" + addPointResponse.toString()); } });回调结果: 打印中AddPointResponse{tag=10000, status=0, message=成功'}现在就可以在服务台查看 你设置名字的用户轨迹信息了 轨迹的查询就不做了 demo比较多