Android 实现定位

Android 实现定位

(kotlin描述)


手机定位功能在人们的日常生活中,给人们(尤其是笔者这样的路痴)带来了极大的便利,而如今大部分安卓设备,已非复吴下阿蒙,不仅仅支持过去的GPS定位,还兼容了北斗、伽利略、GLONASS等全球卫星定位系统,以及网络定位技术。本文将介绍实时经纬度,以及海拔高度(波动较大,参考价值小)的获取。

确认手机是否开启“位置信息”

​ 当手机电量低,系统开启“省电模

标题

式”的时候,首当其冲的(多数情况下)就是“位置信息”功能,并且用户有的时候也会关闭系统的定位功能,届时所有app都无法获取定位信息,检查手机是否开启定位操作如下:

//这个是在Activity内的,context.getSystemService(LOCATION_SERVICE),不在Activity里面记得先拿到context
val mlocationManager=getSystemService(LOCATION_SERVICE) as LocationManager  
//以下是检查系统是否开启GPS权限,即“位置信息”。这个检查的是系统的,不是当前app是否获得权限,即使系统开启了定位,
//当前app仍然有可能没开,别搞混了
if (!mlocationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)){
   
    //将前往“位置信息”开启的设置界面
    startActivityForResult(Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS),0)
}
确认当前app是否具有定位权限:
val LOCATION_PERMISSION=1   //这个仅仅是跟后面返回时候的onRequestPermissionsResult配合,确认是不是自己的
                            //返回结果,取值的时候一定一定要取大等于0的,不然会翻车
//检查是否具有高精度的定位权限
val hasLocationPermission =checkSelfPermission(Manifest.permission.ACCESS_FINE_LOCATION)
//如果权限获得,返回就会等于PackageManager.PERMISSION_GRANTED
if (hasLocationPermission != PackageManager.PERMISSION_GRANTED) {
   
    //requestPermissions是异步执行的,返回的结果会交到一个onRequestPermissionsResult方法里面处理
    //如果权限没获得就会弹窗请求获得权限
    requestPermissions(
        arrayOf(
            Manifest.permission.ACCESS_COARSE_LOCATION, //这里放要请求的权限列表
            Manifest.permission.ACCESS_FINE_LOCATION
        ),
        LOCATION_PERMISSION   //可能会多次调用权限获取弹窗,为了返回时候知道当前返回的是哪次请求,来做出不同的
    )                         //应对,这里传的requestCode就是用来区分不同的请求的
}
获取权限后的处理逻辑:
//这个跟上面那个方法↑↑↑是一一对应的。
//申请位置权限后,请求弹窗,用户请求的结果会在此返回,返回后刷新位置信息
override fun onRequestPermissionsResult(
    requestCode: Int,
    permissions: Array<out
  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值