引入
- 市场上的跑步软件已经是非常多了,如咕咚和悦跑圈还有其他,很多大厂也在涉足这个方面。而最简单的运动跑步,最近几年也因简单,不限场地,运动效果出众备受大众喜欢。
- 我的这篇文章的内容很多也是从网上学习其他的博客内容,外加利用android自身的提供的api实现的,希望能对有这方面需求的朋友有所帮助。
- 项目地址:https://github.com/Lilee902/RunGps
介绍
- 先上两张图,界面比较丑,不过一些数据基本都有了,这个图片是临时要用截取的,所以轨迹线很短,之前有实际测过,轨迹线OK的。
- 因为demo是很久之前写的,我的测试手机是5.1的系统,当时并没有做运行时权限判定,如果您的测试环境是在6.0+的话,请注意加上权限判断。
- 经纬度点的获取是利用android的api LocationManager以及相关的类实现的。
- 获取到经纬度点展示时使用的百度地图的com.baidu.mapapi.map.MapView这个类做的页面显示(百度地图只做页面显示使用)。
- 另外,android api 获取到的点是谷歌坐标,需要用百度sdk中的api转化为百度的坐标,然后再做显示,不然位置会整体发生偏移。(火星坐标百度百科 介绍:https://baike.baidu.com/item/%E7%81%AB%E6%98%9F%E5%9D%90%E6%A0%87%E7%B3%BB%E7%BB%9F ,具体介绍,网上也有很多文章)。
主要代码介绍
- API 获取经纬度点,不过这样直接获取location,经常获取到的为null,因为这个时候,gps还没有定位成功。
if (locationManager == null) {
locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
}
Location location = mActPersenter.getLatLng(locationManager);
if (location != null) {
firstGetLocation(location);
}
大家自然会想到,不能直接获取,那就加listener,三板斧嘛,当然是有加监听的,如下代码,其中 LocationManager.GPS_PROVIDER,LocationManager.NETWORK_PROVIDER 分别为利用手机gps和利用蜂窝网络获取。这里要使用gps,因为蜂窝网络会发生漂移。(如果有朋友只是定位大体位置的话,可以用network,这个效率和速度都会更快)
private LocationManager locationMan

本文介绍了如何使用Android的GPS API实现一个简单的轨迹记录功能。通过LocationManager获取经纬度,结合百度地图API进行坐标转换和显示。示例代码包括添加GPS监听器以及处理坐标漂移问题。该项目已在GitHub上开源。
最低0.47元/天 解锁文章
5040





