Skip to content

wukuiqing49/LocationKit

Repository files navigation

效果图效果图2

定位

项目中已使用暂未发现问题

介绍

由于某度某德定位开始收费,开始研究Android自带的定位,用于替换项目中简单的定位和获取位置信息的功能.实现了定位和获取位置信息的功能

功能

  • 定位
  • 位置信息

1.定位

  • GPS定位
  • 网络定位
  • Android缓存位置获取

2:位置信息

由于Google 服务被禁止,除华为(HMS)能通过自身服务能获取位置信息,其他手机只能通过经纬度获度不能获取位置信息.所以位置信息需要自己想办法获取服务.

研究了一下网上的方案,采取GeoNames生成数据库来模糊定位(精准度到10Km左右).

有需要可以联系作者根据需求生成数据库的方式

4. 使用方式

网络库引用

//位置信息辅助类(GeoNames,补充,非必选) implementation 'com.github.wukuiqing49:LocationAddress:v1.1.3' // 获取经纬度信息 implementation 'com.github.wukuiqing49:Location:v1.1.4' 

4.1 动态申请权限

 <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" /> 

4.2 开启定位

 val locationSingleHelper = AndroidLocationManager( context = this, // Activity 或 Context timeout = 5000L, // 超时 5 秒 singleUpdate = true ,// 单次定位 useBroadcast = true, // 广播方式得到结果 callback = callback ) locationSingleHelper?.startLocation() 

4.3 得到定位结果

 private val callback: (location: Location?) -> Unit ={location -> val geoHelper = GeoDbHelper(this) // 附近的位置 val nearest = geoHelper.getNearestPlace(location!!.latitude, location!!.longitude) // 北京经纬度 // 附近的位置列表 val list = geoHelper.getNearbyPlaces(location!!.latitude, location!!.longitude) // 北京经纬度 list.forEach{Log.d("定位状态", "附近位置: $it") } binding.tvAddress.text ="位置信息:${nearest.toString()}" binding.tvLocation.text = "类型: ${location?.provider} \n" + "纬度: ${location?.latitude}, 经度: ${location?.longitude}" } 

5:生效机型

序号品牌机型系统版本备注结果
1华为ELE-AL00Android 10生效
2OPPOPCAM00Android 11生效
3HONOROXF-AN00Android 12(EMU 14.2.0)生效

...

欢迎大家提交结果,和提出问题

持续更新,长期维护

About

定位工具类

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages