Android-通过GPS或者网络获取当前位置 kotlin

本文详细介绍了在Android应用中如何正确申请位置权限,并通过Kotlin代码演示了如何使用LocationManager获取设备的GPS和网络位置信息。同时,文章还提供了获取地理位置坐标及地址的完整流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

在AndroidManifest中添加

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

kotlin代码

 1  private fun getLocation(context: Context): Location {
 2         val locMan = context.getSystemService(Context.LOCATION_SERVICE) as LocationManager
 3         val checkCameraPermission = ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION)
 4         val checkCallPhonePermission =
 5             ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION)
 6         if (checkCallPhonePermission != PackageManager.PERMISSION_GRANTED || checkCameraPermission != PackageManager.PERMISSION_GRANTED) {
 7             ActivityCompat.requestPermissions(this, permission, 2)
 8         }
 9         way.text = "通过GPS定位"
10         val location = locMan.getLastKnownLocation(LocationManager.GPS_PROVIDER)
11         if (location == null) {
12             way.text = "通过网络定位"
13             locMan.getLastKnownLocation(LocationManager.NETWORK_PROVIDER)
14         }
15         return location
16     }
17 
18     private fun getGeoByLocation(location:Location){
19         longitude.text ="longitude:${location.longitude}"
20         latitude.text = "latitude:${location.latitude}"
21         val ge =Geocoder(this)
22         var addressList =ArrayList<Address>()
23         try {
24             addressList = ge.getFromLocation(location.latitude,location.longitude,1) as ArrayList<Address>
25             detail.text = addressList.toString()
26         }catch (e:IOException){
27             e.printStackTrace()
28         }
29         if (addressList.size>0){
30             address.text = "${addressList[0].getAddressLine(0)}"
31         }
32     }

最后直接在onCreate中调用就行了。

 

这种获取定位方式不适合需要实时监听位置变化的需求,只适合获取一次。

转载于:https://www.cnblogs.com/lyj348990/p/11537410.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值