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、动画、添加标记的使用

手把手教你设计MTBF加速寿命试验:从阿伦尼斯模型到卡方计算(含Excel模板)

本文详细介绍了如何设计MTBF加速寿命试验,从阿伦尼斯模型到卡方计算,帮助工程师在合理时间内获得准确的MTBF数据。通过工业电源模块的实例演示,涵盖活化能确定、温度应力设计、样本量计算及数据记录规范,并提供Excel模板实现自动化计算,显著提升测试效率。

weixin_42563415的博客 543

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

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

小小子的博客 2318

FFmpeg实战:5分钟搞定m3u8视频下载与ts文件合并(附完整命令)

本文详细介绍了如何使用FFmpeg快速下载m3u8视频并合并ts文件为mp4格式。通过简洁的命令行操作,读者可以轻松完成视频处理任务,包括环境准备、链接获取、下载合并及性能优化等实用技巧,特别适合需要高效处理流媒体内容的用户。

weixin_30836759的博客 221

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

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

weixin_41533762的博客 2934

新英格兰10机39节点matlab建模,ieee10机39节点系统数据

【实例简介】ieee10机39节点系统数据,主要是BPA数据!【实例截图】【核心代码】ne_039_bus└── ne_039_bus├── 039readme.doc├── bpa│ ├── 039bpa.dat│ ├── 039bpa.swi│ ├── LFerr.LIS│ ├── OneNote 目录.onetoc2│ └── STERR.LIS├── eurostag│...

weixin_39851809的博客 3273

嵌入式SPI总线抽象设计:跨平台驱动与分层解耦实践

SPI(串行外设接口)是嵌入式系统中应用最广泛的同步串行通信协议,其核心价值在于高吞吐、低开销与硬件简洁性。其工作原理基于主从架构、全双工/半双工时序及片选(CS)控制,依赖CPOL/CPHA组合定义四种标准模式。在工程实践中,SPI常面临硬件资源受限、多外设共用总线、MCU平台迁移等挑战,导致驱动复用率低、维护成本高。通过结构体+函数指针实现的分层抽象——将物理总线、协议适配与设备驱动解耦,可显著提升代码可移植性与扩展性。该方法天然支持硬件SPI与GPIO模拟SPI双模式切换,并已在STM32等主流MCU

weixin_42601134的博客 60

Kotlin+JetpackCompose接入高德地图

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

m0_75235064的博客 1642

从零组装一台会‘看’的无人机:手把手教你配置NUC机载电脑与D435深度相机(环境搭建篇)

本文详细介绍了如何从零开始组装一台具备视觉能力的智能无人机,重点讲解了NUC机载电脑与D435深度相机的配置方法。通过Ubuntu系统安装、ROS环境搭建、深度学习框架配置等步骤,帮助开发者实现无人机的自主避障和目标跟踪功能。文章还提供了性能优化和常见问题解决方案,是无人机视觉系统开发的实用指南。

weixin_30915275的博客 398

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

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

VarFun的博客 1294

软件设计师高频考点—套路题

学习交流的总结

秩沅 2539

TGAT Python:图神经网络中的动态图算法

其中,图神经网络中的动态图算法成为了研究的热点之一。在模型的 forward 方法中,通过循环调用 TGATLayer 实例来进行图神经网络的前向传播。最终,模型返回图中节点的表示向量 output,可以用于图分类等任务。TGAT 算法的核心思想是在节点之间建立注意力连接,以捕捉节点在不同时间步之间的关系。TGAT 算法通过引入注意力机制和时间信息,从而有效地对动态图数据进行建模和分析。通过以上 Python 代码,我们可以方便地构建和训练 TGAT 模型,并在图分类任务中应用它。

2301_79366435的博客 1828

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

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

leveretz的博客 392

四旋翼飞行器建模(一)

四旋翼飞行器的姿态运动学和姿态动力学建模方法。

加斯顿工程师的博客 686

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

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

z19980115的博客 4388

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

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

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

cf8833的博客 909

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

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

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值