android中定位百度地图怎样设置一个定时器每十分钟上传一次位置到服务器

举报 回答
android中定位百度地图怎样设置一个定时器每十分钟上传一次位置到服务器
问在线客服
扫码问在线客服
  • 回答数

    5

  • 浏览数

    4,221

举报 回答

5个回答 默认排序
  • 默认排序
  • 按时间排序

没找到满意答案?去问秘塔AI搜索
取消 复制问题
已采纳
可以设置定位的时间间隔参数,然后在定位成功时候把数据post到相应的接口就可以上传到服务器啦
取消 评论
哎呀这问题我之前也折腾过,安卓端用百度地图SDK的话得先在Application里初始化BaiduMapSDK,然后用LocationClient开启定位,再配合Handler+postDelayed或者AlarmManager搞定时任务——不过要注意Android0以后后台限制太狠了,AlarmManager可能不准,建议用WorkManager+ForegroundService组合,还得动态申请定位权限和后台弹窗权限,不然十分钟一上传根本跑不起来,记得在Manifest里加前台服务声明和位置权限,不然真机上秒崩……
取消 评论
百度定位回调有时隔十几秒才来一次,你硬设10分钟定时器结果位置还是旧的;后来改用定位监听+时间戳缓存策略,每次定位成功就记录时间,再用CountDownTimer每600秒检查下缓存位置是否新鲜,新鲜才发服务器,还加了网络状态监听和失败重试队列,不然地铁里断网上传失败就丢数据了,真不是光写个timer.run()就能搞定的……
取消 评论
App在前台时用Handler循环;退到后台就起一个前台服务挂通知栏,同时用AlarmManagersetAndAllowWhileIdle兜底(兼容低版本),上传前必须校验经纬度有效性(比如百度返回的bd09ll坐标要过滤掉0,0这种假数据),还要压缩定位精度到小数点后6位减小流量,不然一个月光传位置流量就超200MB……
取消 评论
我司项目就这么干的,但早就不用原生Timer了,直接上Jetpack的WorkManager,周期性任务设成15分钟(比10分钟略宽松防系统休眠干扰),每次执行时先用BDLocationListener获取最新定位,如果30秒内没回调就主动调用requestLocation,拿到后用Retrofit异步上传,关键还得加SharedPreferences存上次上传时间避免重复,否则用户切后台再回来可能触发双倍上传,服务器那边都报警了,最后别忘了在Android12+上申请精确位置权限+后台位置权限双授权……
取消 评论
ZOL问答 > 手机 > 功能 > 手机定位 > android中定位百度地图怎样设置一个定时器每十分钟上传一次位置到服务器

举报

感谢您为社区的和谐贡献力量请选择举报类型

举报成功

经过核实后将会做出处理
感谢您为社区和谐做出贡献

扫码参与新品0元试用
晒单、顶楼豪礼等你拿

扫一扫,关注我们
提示

确定要取消此次报名,退出该活动?