kotlin写的高德定位

Android---PermissionX实现动态权限申请 PermissionX是一个扩展Android库,使Android运行时权限请求变得极其容易。你可以将它用于基本的许可请求场合或处理更复杂的情况,如显示理由对话框或手动进入应用程序设置以获得许可。 阅读详情

前期步骤与java一样不再赘述。这里只贴kotlin代码.

build.gradle 添加

//权限相关
implementation 'com.guolindev.permissionx:permissionx:1.6.1'

需要定位的界面的逻辑代码

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    initPermission()
    }
}
override fun onResume() {
    super.onResume()
    //获取定位服务
    getLocationService()
}
//权限
private fun initPermission() {

    PermissionX.init(this)
            .permissions(
                    Manifest.permission.ACCESS_FINE_LOCATION,
                    Manifest.permission.ACCESS_COARSE_LOCATION,
            )
            .onExplainRequestReason { scope, deniedList ->
                val message = "APP需要您同意以下权限才能正常使用"
                scope.showRequestReasonDialog(deniedList, message, "允许", "取消")
            }
            .onForwardToSettings { scope, deniedList ->
                scope.showForwardToSettingsDialog(deniedList, "您需要去应用程序设置当中手动开启权限", "去设置", "退出")
            }
            .request { allGranted, _, deniedList ->
                if (allGranted) {
                    haveLocationPermission = true
                } else {
                    haveLocationPermission = false
                    Toast.makeText(this, "您拒绝了如下权限:$deniedList", Toast.LENGTH_SHORT).show()
                    System.exit(0)
                }
            }
}

private var haveLocationPermission = false
private fun getLocationService() {
    if (haveLocationPermission) {
        //判断是否开启服务getSaveResponse
        var locationManager = this@HomeActivity.getSystemService(Context.LOCATION_SERVICE) as LocationManager
        if (locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)) {
            BLogUtils.e(TAG, "用户打开定位服务")
            getLocation()
        } else {
            BLogUtils.e(TAG, "用户关闭定位服务")
            MaterialAlertDialogBuilder(this@HomeActivity)
                    .setMessage("请打开位置服务开关,否则可能无法正常使用")
                    .setCancelable(false)
                    .setPositiveButton("去打开") { _, _ ->
                        val intent = Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS)
                        //startActivityForResult(intent, 1)
                        startActivity(intent)
                    }
                    .setNegativeButton("退出") { _, _ -> System.exit(0) }
                    .show()
        }
    }
}
private fun getLocation() {
    AMapLocationClient.updatePrivacyShow(this, true, true);
    AMapLocationClient.updatePrivacyAgree(this, true);
    //声明AMapLocationClient类对象
    var mLocationClient = AMapLocationClient(applicationContext)
    //声明定位回调监听器
    //val mLocationListener = AMapLocationListener() {}

    var mLocationOption = AMapLocationClientOption();
    mLocationOption.setLocationPurpose(AMapLocationClientOption.AMapLocationPurpose.SignIn)

    mLocationClient.setLocationOption(mLocationOption);
    //设置场景模式后最好调用一次stop,再调用start以保证场景模式生效
    mLocationClient.stopLocation();
    mLocationClient.startLocation();
    //设置定位模式为AMapLocationMode.Hight_Accuracy,高精度模式。
    mLocationOption.setLocationMode(AMapLocationClientOption.AMapLocationMode.Hight_Accuracy);
    //设置是否返回地址信息(默认返回地址信息)
    mLocationOption.setNeedAddress(true);
    //设置是否允许模拟位置,默认为true,允许模拟位置
    mLocationOption.setMockEnable(true);
    //单位是毫秒,默认30000毫秒,建议超时时间不要低于8000毫秒。
    mLocationOption.setHttpTimeOut(20000);
    //关闭缓存机制
    mLocationOption.setLocationCacheEnable(false);
    //给定位客户端对象设置定位参数
    mLocationClient.setLocationOption(mLocationOption);
    //启动定位
    mLocationClient.startLocation()
    //设置定位回调监听
    mLocationClient.setLocationListener(MyLocationListener())
}

inner class MyLocationListener : AMapLocationListener {
    override fun onLocationChanged(p0: AMapLocation) {
        when (p0.getErrorCode()) {
            0 -> {
                Log.e("AmapError", "location Error, ErrCode:"
                        + p0.getErrorCode() + ", errInfo:"
                        + p0.getErrorInfo());
            }
        }

        var locationStr = p0.getCity() + p0.getDistrict() + p0.getStreet()
        BLogUtils.e("locationStr", locationStr)
}
安卓Kotlin接入高德定位和地图SDK 高德的定位sdk可以获取设备当前的详细信息,如经纬度,具体地址(省->街道)等,本文主要使用的是定位sdk和地图sdk中的poi搜索功能(以当前位置半径多少米内的关键词搜索) 阅读详情

相关推荐

高德定位电子围栏Kotlin实现

要在 Kotlin 中使用高德地图实现定位与电子围栏(地理围栏),你需要集成高德定位 SDK,并通过其提供的 `Geofence` 和 `GeofenceClient` API 来创建和管理围栏。以下是一个完整的实现指南,包含必要的代码示例。

xxy42330的专栏 237

PermissionX 1.5发布,支持申请Android特殊权限啦

Hello大家早上好,说起PermissionX,其实我已经有段时间没有更新这个框架了。一是因为现在工作确实比较忙,没有过去那么多的闲暇时间来写开源项目,二是因为,PermissionX的主体功能已经相当稳定,并不需要频繁对其进行变更。 不过之前一直有朋友在反映,对于Android中的一些特殊权限申请,PermissionX并不支持。是的,PermissionX本质上只是对Android运行时权限API进行了一层封装,用于简化运行时权限申请的。而这些特殊权限并不属于Android运行时权限的一部分,所以

郭霖的专栏 1万+

Kotlin实战:高德地图SDK在安卓应用中的精准定位与POI搜索集成

本文详细介绍了在Kotlin安卓应用中集成高德地图SDK,实现精准定位与POI搜索功能的完整实战指南。内容涵盖SDK配置、权限申请、隐私合规、定位管理类封装、POI搜索与结果展示等核心步骤,帮助开发者快速构建基于地理位置服务的应用。

weixin_29015127的博客 369

PermissionX的使用

动态申请sd卡权限,PermissionX的使用前言一、PermissionX简介二、具体使用步骤1.首先导入库2.在代码中使用总结 前言 安卓6.0以上需要动态添加sd卡操作权限。 一、PermissionX简介 PermissionX是安卓大佬郭霖的一个开源库,很好用。 二、具体使用步骤 1.首先导入库 在app的build.gradle中添加: implementation 'com.permissionx.guolindev:permissionx:1.4.0' 2.在代码中使用 在Activ

qq_37199934的博客 2171

Kotlin实现高德地图SDK的POI搜索与周边地点推荐功能

本文详细介绍了在安卓应用中使用Kotlin语言集成高德地图SDK,实现POI搜索与周边地点推荐功能的完整实战指南。内容涵盖从项目初始化、SDK配置、权限申请,到核心的定位功能封装、POI搜索实现,以及UI交互与进阶优化。重点讲解了如何通过高德地图SDK获取精准定位,并基于用户位置进行高效的周边兴趣点搜索与推荐,帮助开发者快速构建稳定的LBS功能模块。

weixin_29012677的博客 180

高德地图SDK进阶:用Kotlin实现周边POI搜索与第三方地图跳转

本文详细介绍了如何使用Kotlin语言在高德地图SDK中实现周边POI搜索功能,并实现与第三方地图应用的无缝跳转。内容涵盖SDK集成、定位服务、POI搜索管理以及地图跳转工具类的构建,为安卓开发者提供了一套完整的高德地图SDK进阶解决方案。

weixin_29003437的博客 249

PermissionX 1.6发布,支持Android 12,可能是今年最大的版本升级

各位小伙伴们大家早上好。 没错,PermissionX又升级了,并且这次版本变化非常大,很有可能是今年最大幅度的一次升级。 在这之后,我就准备将精力放到其他开源库上,PermissionX应该短时间内不会再发布新版本了(修bug除外)。 经过这次升级之后,PermissionX也将会是一个非常稳定的版本,它兼容到最新的Android 12系统,所以在未来的一年内都可以放心稳定地使用。 那么接下来我们就一起探索一些,最新的PermissionX 1.6版本到底有哪些变化吧。

郭霖的专栏 3万+

Kotlink_高德地图_gladnsr_定位_android_

Kotlin开发高德地图,仿微信 发送位置功能源码,高德定位、地图、搜索SDK、动画、添加标记的使用

一、常用权限申请库——PermissionX

PermissionX的介绍和两种基本使用方法,神器!

真不想写注释。 2498

Android Kotlin开发高德地图

Android Kotlin开发高德地图,仿微信 发送位置功能源码,高德定位、地图、搜索SDK、动画、添加标记的使用

FastGPT 引申:借鉴 FastGPT 基于MySQL + ES 实现知识库(含表结构以及核心代码)

FastGPT 引申:借鉴 FastGPT 基于MySQL + ES 实现知识库(含表结构以及核心代码)

蜗牛的专栏 3435

Kotlin 实现高德地图点聚合、平滑移动、轨迹等功能

本文demohttps://github.com/hfyqsy/Kotlin_Gd_Map 整个APP使用kotlin语言的方式实现高德地图,地图点选、点聚合、地图截图、地图文字标注、地图基本操作、地图Marker自定义,Marker自定义弹窗、地图轨迹管理、轨迹平滑处理、Marker平滑移动、多类型路径规划、定位、导航功能 效果图如下: 小车轨迹移动另一种实现点聚合方式利用了 googl...

小小子的博客 2318

向NCBI上传16S rDNA数据的操作详解

专门介绍向NCBI上传16S rDNA数据的方法不太多。因为自己有上传数据的需要,所以决定边摸索边写下操作流程。如果这篇博文交代了上传步骤以及一些描述文件属性的书写,帮到你的话,还请点赞收藏。

yue81560的博客 2万+

安卓高德地图开发 去掉定位蓝点产生的淡蓝色区域

本人刚接手一个高德地图开发的项目,项目原来用java,现在用kotlin。因为刚学kotlin,对其中一些语法不是很熟悉,写的有些慢。前几天经理让我改bug,去掉高德地图蓝点定位时产生的淡蓝色区域,因为默认区域会遮挡一些地标,当点击地标的时候,无反应,这样的话用户体验比较差。我在网上搜索相关资料时,发现绝大部分都是用java写的,很少用kotlin写的。现在写下来进行记录。 其实只需要几行代...

weixin_41533762的博客 2934

2022-2028年中国美容仪行业发展战略规划及投资机会预测报告

报告类型:产业研究 报告格式:电子版、纸介版 出品单位:智研咨询-产业信息网 美容仪是一种根据人体生理机能进行调节改善身体和面部的机器,它按照功能来说有美白、嫩肤、祛斑、祛皱、脱毛、减肥等多种,按照名称来说有超声波导入、光子嫩肤、高周波电疗、RF 电波拉皮、电子祛斑点痣、E 光永久脱毛嫩肤、贾法尼营养导入导出等。 智研咨询发布的《2022-2028年中国美容仪行业发展战略规划及投资机会预测报告》共十七章。首先介绍了中国美容仪行业市场发展环境、美容仪整体运行态势等,接着分析了中...

kt346的博客 468

YOLO模型轻量化实战:剪枝、量化与知识蒸馏三大技术落地详解

这篇文章结合我自己的实战经验,从原理、操作、效果、避坑四个方面,给大家讲清楚了YOLO模型轻量化的三大核心技术:剪枝、量化、知识蒸馏。先明确应用场景,再选择合适的技术组合,不要盲目追求极致压缩,要在“大小、速度、精度”之间找平衡。实战才是最好的学习方式——大家可以先拿自己的数据集试试剪枝和量化,感受一下效果,有问题可以在评论区留言。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 592

Kotlin+JetpackCompose接入高德地图

Android原生开发快速接入高德地图,本文简单就显示地图和获取POI搜索数据进行简单的讲解。

m0_75235064的博客 1642

《拉依达的嵌入式\驱动面试宝典》—计算机硬件篇(一)

《拉依达的嵌入式\驱动面试宝典》 整合了所有我认为可能遇到的技术面试问题。所有问题及其答案均是我个人学习后查阅资料总结,每个回答都做了仔细的分析,在嵌入式及其驱动面试相关问题解析做到全网独一无二。学习或者转行到嵌入式、驱动开发领域学习的不二之选

拉依达不拉跨的博客 768

手把手教你用Kotlin集成高德/百度/Google地图(完整流程+避坑指南)

掌握Kotlin地图集成核心技巧,轻松实现高德、百度、Google地图在Android应用中的快速接入。涵盖权限配置、SDK调用、定位显示及常见问题解决方案,提升开发效率。适用出行、社交、打卡等场景,避坑指南助你少走弯路,值得收藏。

VarFun的博客 1294

uniapp - 实现免费OCR文字识别方案,用户上传图片后进行扫描识别获取图片上的文字,uniApp纯前端做图片OCR识别——无需服务器进行OCR识别插件(不需要依赖任何SDK或第三方API服务)

uniapp实现orc识别免费的插件识别不花钱,无需第三方OCR文字识别API,uniApp拍照或者选择图片免费识别,纯前端不需要服务器,Uniapp提取图片上的文字,本地ocr识别技术,uni-app图片OCR识别文本,uniapp有没有免费的ocr识别组件,uniapp前端实现文字识别,身份证识别,营业执照识别 (兼容APP、H5、小程序 不需要任何SDK)跨端无SDK方案:Uniapp实现OCR文字,离线OCR识别,uniapp tesseract.js实现文字识别,uniapp文字识别无需依赖sdk

🏆 前端领域优质创作者 4251

利用R语言通过holtwinters模型进行预测

使用Holt-Winters模型进行预测的第一步是对模型进行拟合。该函数需要两个参数:您的时间序列数据和一个“seasonal”参数,该参数指示您的数据的周期性(例如,如果您的数据按月记录,则应将“seasonal”参数设置为12,因为一年有12个月)。拟合模型后,您可以使用“forecast()”函数进行预测。该函数需要两个参数:您的拟合模型以及您要进行预测的时间段的长度。要使用Holt-Winters模型,您需要安装并加载“forecast”包。以下是进行Holt-Winters模型预测的示例代码。

Mrrunsen的博客 1696

高德地图开发 去掉定位蓝点产生的淡蓝色区域

高德地图开发 去掉定位蓝点产生的淡蓝色区域

leveretz的博客 392

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

Android 高德地图 获取定位蓝点旋转角度 获取Marker对象

高德版本v6.3.0(其它版本可自行测试) 高德没有提供获取定位蓝点对象的api,如果需要用到该对象,可以用反射获取。 取得定位小蓝点对象的方法如下:(Kotlin版) val a = getSpecifiedFieldObject(mMap, "a") val ac = getSpecifiedFieldObject(a, "ac") val f =

z19980115的博客 4388

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Kotlin实现高德地图轨迹回放功能

1.说明 官方demo是一个java版本的,把那个版本代码做了简化处理,然后转成kotlin代码,然后把这个功能实现了 功能描述:设置一组经纬度地址,用平滑曲线连线,然后设置一个小车按一定速度,实现轨迹回放功能的动画效果 缺点:没有做实时轨迹处理,按照我这个demo,需要修改一下代码,把每5秒的定位经纬度信息拿到,存成集合,清除原有的数据,把新的数据源设置进去,然后就可以实时更新轨迹了 2...

cf8833的博客 909

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

下一篇: Android双卡切换监测移动数据状态
Rxbug
博客等级 码龄5年 1粉丝 3原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值