Android 项目导入高德SDK初次上手
文章目录
- 一、前置知识:
- 二、学习目标
- 三、学习资料
- 四、操作过程
- 1、创建空项目
- 2、高德 SDK 环境接入
- 2.1 获取高德 key
- 2.2下载 SDK 并导入
- 2.2.1、下载SDK 文件
- 2.2.2、SDK 导入项目
- 2.2.3、清单文件配置
- 2.2.4、隐私权限
- 3、显示地图
一、前置知识:
1、Java 基础语法
2、Android 一周(3-5天)入门即可,学完基础控件、Activity 跳转等即可,不用深入学习
二、学习目标
1、高德地图 SDK 接入App 项目,环境部署成功,没有报错
2、调用第一个基础功能——显示地图,地图在真机上运行成功
三、学习资料
操作过程全部参考这个博客——https://blog.csdn.net/qq_38436214/article/details/111628025
高德 SDK Key的获取页面—— https://console.amap.com/dev/index
高德 SDK下载页——https://lbs.amap.com/api/android-sdk/download
创建工程及地图 SDK 功能——https://lbs.amap.com/api/android-sdk/guide/create-project/android-studio-create-project
旧版 SDK 功能文档—— https://developer.amap.com/demo/sdk/place-choose#ios
SDK接口文档——https://a.amap.com/lbs/static/unzip/Android_Map_Doc/index.html
四、操作过程
1、创建空项目
(1)创建项目 选择 Empty Views Activity
![[图片]](https://img-blog.csdnimg.cn/1de487ec79b44b03ae52f9a4c7b11fb3.png)
(2)给项目起个名字、改一下包名,android 版本合适就行(都行),点击 finish
![[图片]](https://img-blog.csdnimg.cn/8458827c61914009a0db524becbf42ef.png)
(3)此时生成一个初始的 MainActivity 页面,已经构建好了一个初始的空项目,接下来我们要开始接入地图SDK环境了,记住我们现在的包名。
![[图片]](https://img-blog.csdnimg.cn/d72cce4fe4554f23877302feef6892b4.png)
2、高德 SDK 环境接入
入门指南-Android 定位SDK | 高德地图API
这是一个官方的参考文档,可以看一看了解一下整体的过程,中间还有一些具体的操作过程需要说明
2.1 获取高德 key
获取Key-创建工程-开发指南-Android 定位SDK | 高德地图API
可以按照这个过程操作一下。中间有一个获取 安全码 SHA1 的过程,如果初学Android的话,可能不懂这个概念,可以看一个 Android 程序打包 APK 的视频,了解一下 SHA1 的概念以及创建生成的过程。
androidstudio打包apk_哔哩哔哩_bilibili
接下来按照我的步骤,可以拿到具体的 key
1、进入到高德控制台,点击应用管理-> 我的应用 -> 创建新应用
输入随便起的名称,输入对应的类型即可
![[图片]](https://img-blog.csdnimg.cn/845729508812466ca6e27f36a777b68b.png)
2、点击 添加key,弹出输入框
![[图片]](https://img-blog.csdnimg.cn/bb66468665b1420287f54ed84eaf8918.png)
- key 名称随便输入一个
- 服务平台选 Android 平台
- 安全码填入SHA1 密钥
发布版安全码怎么获取?
Android Studio 中点击 settings
![[图片]](https://img-blog.csdnimg.cn/4c2e31f2d7ae498bb9376f3a546fbef8.png)
点击 Experimental,取消勾选,此时右侧的gradle就会出现完整的功能
![[图片]](https://img-blog.csdnimg.cn/e2ecb9ae52a84d63bfef4b36cc30ff1d.png)
打开右侧的gradle ,点击 Tasks -> android -> signingReport,可以生成默认的签名算法文件,显示SHA1 安全密钥
![[图片]](https://img-blog.csdnimg.cn/0266b06fbb7d4073b7c254740b086e92.png)
输入正确的包名、SHA1安全码,点击确认即可。
![[图片]](https://img-blog.csdnimg.cn/88434b1b796843fdb60b46f08fe50b6b.png)
此时就能在 key的列表界面看到我们 生成的key了,等会要用到
![[图片]](https://img-blog.csdnimg.cn/0fe9c68824d349fbb11aff5291bfa17e.png)
2.2下载 SDK 并导入
相关下载-Android 定位SDK | 高德地图API
2.2.1、下载SDK 文件
我们可以去高德地图的SDK下载页进行选择,可以选一个 3D 地图合包,里面包含了3D地图SDK、搜索SDK、定位SDK,相对来说比较的全面
![[图片]](https://img-blog.csdnimg.cn/9eaa59f9c53143e7b3defdfedf777544.png)
下载好之后解压就是一个 jar包和 几个so文件
![[图片]](https://img-blog.csdnimg.cn/5e8c3cdff9e84b14b798b5cdb3deeed4.png)
2.2.2、SDK 导入项目
复制这些文件到你的工程的libs下,如果没有找到libs目录,就将项目结构从Android切换到Project就能找到了,
![[图片]](https://img-blog.csdnimg.cn/c1633c79581747b18223df63e87e2380.png)
放进去之后在你的 app 的 build.gradle 中的 dependencies{} 闭包中添加这样一句代码,表示导入文件夹
implementation fileTree(dir: 'libs', include: ['*.jar'])
![[图片]](https://img-blog.csdnimg.cn/fbc6b992134c4e90b5cebe83c9f270b0.png)
点击 sysn 同步一下,我们会发现,lib文件夹底下的jar包 能够打开了。如果没有发生变化,可以右键点击这个 jar 包,点击add as library,导入到这个项目中
![[图片]](https://img-blog.csdnimg.cn/3dc37a359bca452e8a5877716c6bcead.png)
然后在 app下的 build.gradle 文件中添加配置代码 , 在 android 闭包中再放入下列代码,告诉gradle jar包在libs目录下
sourceSets {main{jniLibs.srcDirs = ['libs']}}
![[图片]](https://img-blog.csdnimg.cn/e0d5d555712c4af8b63704895b1c4298.png)
2.2.3、清单文件配置
打开 AndroidManiFest.xml,在 application 标签中添加定位service组件信息
<!--定位service--><service android:name="com.amap.api.location.APSService"/>
在 manifest 标签下 放入对应功能提供的接口使用权限 permission
<!--用于访问网络,网络定位需要上网-->
<uses-permission android:name="android.permission.INTERNET" />
<!--用于读取手机当前的状态-->
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<!--用于写入缓存数据到扩展存储卡-->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<!--用于申请调用A-GPS模块-->
<uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />
<!--用于进行网络定位-->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<!--用于访问GPS定位-->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<!--用于获取运营商信息,用于支持提供运营商信息相关的接口-->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<!--用于访问wifi网络信息,wifi信息会用于进行网络定位-->
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<!--用于获取wifi的获取权限,wifi信息会用来进行网络定位-->
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
在 application 标签下放入对应的 key
<!--设置高德Key-->
<meta-data android:name="com.amap.api.v2.apikey" android:value="你自己申请的key值,自己去复制"/>
2.2.4、隐私权限
在调用 SDK 接口之前都要更新 隐私合规借口,updatePrivacyShow()\ updatePrivacyAgree()
![[图片]](https://img-blog.csdnimg.cn/8f66dae2f57548cdac5d76ec0023fe81.png)
我们在使用高德的定位、地图、搜索功能时,需要先同意隐私政策,不通过则无法使用,一般是通过 App 启动之后出现一个弹窗,弹窗中你告知用户那些信息被采集,用到了那些 SDK ,作用是什么。并且要有隐私政策的链接地址,很麻烦。
这里我们就简单一些,在 com.ttit.map 包下新建一个 MapApplication 类,里面的代码如下:
public class MapApplication extends Application {@Overridepublic void onCreate() {super.onCreate();Context context = this;//定位隐私政策同意AMapLocationClient.updatePrivacyShow(context,true,true);AMapLocationClient.updatePrivacyAgree(context,true);//地图隐私政策同意MapsInitializer.updatePrivacyShow(context,true,true);MapsInitializer.updatePrivacyAgree(context,true);//搜索隐私政策同意ServiceSettings.updatePrivacyShow(context,true,true);ServiceSettings.updatePrivacyAgree(context,true);}
}
我们在项目初始化的时候就通过这些隐私政策,(这不是最终的做法,如果你上架应用的时候这么做就会被驳回)。为了使这个MapApplication生效,我们需要在AndroidManifest.xml中配置它。比较简单,如下图所示。
![[图片]](https://img-blog.csdnimg.cn/87e81d5c203a4b3aa823372dfa808b8f.png)
接下来我们就可以在自己的 MainActivity 中进行开发代码。
3、显示地图
显示地图-创建地图-开发指南-Android 地图SDK | 高德地图API
参照 SDK 入手文档,我们先来调用 显示地图的接口进行使用
在 MainActivity.xml 中配置一个 标签的对象,加上id
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".MainActivity"><com.amap.api.maps.MapViewandroid:id="@+id/map"android:layout_width="match_parent"android:layout_height="match_parent"></com.amap.api.maps.MapView></LinearLayout>
在 MainActivity.java 文件中 获取mapView,重写 onCreate 进行展示地图
public class MainActivity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);MapView mapView = findViewById(R.id.map);mapView.onCreate(savedInstanceState);}
}
点击运行项目,在真机上进行运行app,查看效果
![[图片]](https://img-blog.csdnimg.cn/ae738d438ce34e14acca67ca3d7f60ce.png)
相关文章:
Android 项目导入高德SDK初次上手
文章目录 一、前置知识:二、学习目标三、学习资料四、操作过程1、创建空项目2、高德 SDK 环境接入2.1 获取高德 key2.2下载 SDK 并导入2.2.1、下载SDK 文件2.2.2、SDK 导入项目2.2.3、清单文件配置2.2.4、隐私权限 3、显示地图 一、前置知识: 1、Java 基…...
生成树协议用来解决网络风暴的问题?(第三十二课)
生成树协议用来解决网络风暴的问题?(第三十二课) 一 STP RSTP MSTP 介绍 STP(Spanning Tree Protocol)、RSTP(Rapid Spanning Tree Protocol)和MSTP(Multiple Spanning Tree Protocol)都是用于网络中避免环路的协议。 STP是最初的协议,它通过将某些端口阻塞来防止…...
git分支操作
Git分支的操作 1.1 Git分支简介 Git分支是由指针管理起来的,所以创建、切换、合并、删除分支都非常快,非常适合大型项目的开发。 在分支上做开发,调试好了后再合并到主分支。那么每个人开发模块式都不会影响到别人。 分支使用策略…...
【基础学习笔记 enum】TypeScript 中的 enum 枚举类型介绍
因为之前网上查好多博客都是只说最基础的,所以这里记录一下,最基础的放在最后面。 这里重点要记录的是枚举成员的值可以是字符串(字符串枚举,因为网上大部分只介绍常数枚举),需要注意的一点是,…...
SpringBoot中间件使用之EventBus、Metric、CommandLineRunner
1、EventBus 使用EventBus 事件总线的方式可以实现消息的发布/订阅功能,EventBus是一个轻量级的消息服务组件,适用于Android和Java。 // 1.注册事件通过 EventBus.getDefault().register(); // 2.发布事件 EventBus.getDefault().post(“事件内容”); …...
ffmpeg命令行是如何打开vf_scale滤镜的
前言 在ffmpeg命令行中,ffmpeg -i test -pix_fmt rgb24 test.rgb,会自动打开ff_vf_scale滤镜,本章主要追踪这个流程。 通过gdb可以发现其基本调用栈如下: 可以看到,query_formats()中创建的v…...
【Vue3】自动引入插件-`unplugin-auto-import`
Vue3自动引入插件-unplugin-auto-import,不必再手动 import 。 自动导入 api 按需为 Vite, Webpack, Rspack, Rollup 和 esbuild 。支持TypeScript。由unplugin驱动。 插件安装:unplugin-auto-import 配置vite.config.ts(配置完后需要重启…...
每日温度(力扣)单调栈 JAVA
给定一个整数数组 temperatures ,表示每天的温度,返回一个数组 answer ,其中 answer[i] 是指对于第 i 天,下一个更高温度出现在几天后。如果气温在这之后都不会升高,请在该位置用 0 来代替。 示例 1: 输入: temperatur…...
博客项目(Spring Boot)
1.需求分析 注册功能(添加用户操纵)登录功能(查询操作)我的文章列表页(查询我的文章|文章修改|文章详情|文章删除)博客编辑页(添加文章操作)所有人博客列表(带分页功能)…...
修改Jenkins存储目录
注意:在Jenkins运行时是不能更改的. 请先将Jenkins停止运行。 1、windows环境下更改JENKINS的主目录 Windows环境中,Jenkins主目录默认在C:Documents and SettingsAAA.jenkins 。可以通过设置环境变量来修改,例如: JENKINS_HOME…...
数据结构【第4章】——栈与队列
队列是只允许在一端进行插入操作、而在另-端进行删除操作的线性表。 栈 栈与队列:栈是限定仅在表尾进行插入和删除操作的线性表。 我们把允许插入和删除的一端称为栈顶(top),另一端称为栈底(bottom)&…...
android webview 显示灰度网页
要在WebView中显示网页灰度显示,您可以通过以下步骤操作: 在您的布局文件中添加WebView组件: <WebViewandroid:id"id/webview"android:layout_width"match_parent"android:layout_height"match_parent" /…...
Linux操作系统的基础使用技能的训练大纲(超级详细版本适合于初学者)
RHCE红帽认证工程师课程对应考试课 程 纲 要 第一部分 网络基础 RH033RH302 Linux基础: 1) 在bashshell命令行模式下运行基本的Linux命令 2) 从命令行及GNOME界面启动应用程序 3) 使用及配置Xwindow系统及GNOME桌面环境 4) 使用GNOME GUI应用程序完成一般的工作 5) 了解Linu…...
【变形金刚02】注意机制以及BERT 和 GPT
一、说明 我已经解释了什么是注意力机制,以及与转换器相关的一些重要关键字和块,例如自我注意、查询、键和值以及多头注意力。在这一部分中,我将解释这些注意力块如何帮助创建转换器网络,注意、自我注意、多头注意、蒙面多头注意力…...
一个脚本 专治杂乱
背景 之前不是自己手动搞了一个COS嘛,直接复制粘贴图片,上传到后端的服务器,返回一个可访问的地址。我在哔哩哔哩上也分享过这样的一期视频。 今天偶尔上服务器一看,我靠,我的文件真的乱! 这还得了了&…...
springboot 基础
巩固基础,砥砺前行 。 只有不断重复,才能做到超越自己。 能坚持把简单的事情做到极致,也是不容易的。 SpringBoot JavaEE 简介 JavaEE的局限性: 1、过于复杂,JavaEE正对的是复杂的分布式企业应用,然而现实…...
web集群学习:基于nginx的反向代理和负载均衡
目录 一,反向代理 1,环境准备 2,配置代理服务器 3,在物理机上一管理员身份打开文本编辑器,编辑C:\Windows\System32\drivers\etc目录下的hosts文件 4,访问测试 5,查看日志,并记…...
编程小窍门: 一个简单的go mutex的小例子
本期小窍门用到了两个组件 mutex 这个类似其他语言的互斥锁waitGroup 这个类似其他语言的信号量或者java的栅栏锁 示例如下 func TestDoSomething04(t *testing.T) {total : 0var wg sync.WaitGroup{}var mut sync.Mutex{} for i : 0; i < 5000; i {go func() {wg.Ad…...
【工作记录】mysql中实现分组统计的三种方式
前言 实际工作中对范围分组统计的需求还是相对普遍的,本文记录下在mysql中通过函数和sql完成分组统计的实现过程。 数据及期望 比如我们获取到了豆瓣电影top250,现在想知道各个分数段的电影总数. 表数据如下: 期望结果: 实现方案 主要思路是根据s…...
马来西亚的区块链和NFT市场调研
马来西亚的区块链和NFT市场调研 基本介绍 参考: https://zh.wikipedia.org/wiki/%E9%A9%AC%E6%9D%A5%E8%A5%BF%E4%BA%9A zz制度:联邦议会制 语言文字: 马来语 民族: 69.4%原住民(土著),23.2%…...
wordpress后台更新后 前端没变化的解决方法
使用siteground主机的wordpress网站,会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后,网站没有变化的情况。 不熟悉siteground主机的新手,遇到这个问题,就很抓狂,明明是哪都没操作错误&#x…...
网络编程(Modbus进阶)
思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…...
在软件开发中正确使用MySQL日期时间类型的深度解析
在日常软件开发场景中,时间信息的存储是底层且核心的需求。从金融交易的精确记账时间、用户操作的行为日志,到供应链系统的物流节点时间戳,时间数据的准确性直接决定业务逻辑的可靠性。MySQL作为主流关系型数据库,其日期时间类型的…...
在鸿蒙HarmonyOS 5中实现抖音风格的点赞功能
下面我将详细介绍如何使用HarmonyOS SDK在HarmonyOS 5中实现类似抖音的点赞功能,包括动画效果、数据同步和交互优化。 1. 基础点赞功能实现 1.1 创建数据模型 // VideoModel.ets export class VideoModel {id: string "";title: string ""…...
【磁盘】每天掌握一个Linux命令 - iostat
目录 【磁盘】每天掌握一个Linux命令 - iostat工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景 注意事项 【磁盘】每天掌握一个Linux命令 - iostat 工具概述 iostat(I/O Statistics)是Linux系统下用于监视系统输入输出设备和CPU使…...
【android bluetooth 框架分析 04】【bt-framework 层详解 1】【BluetoothProperties介绍】
1. BluetoothProperties介绍 libsysprop/srcs/android/sysprop/BluetoothProperties.sysprop BluetoothProperties.sysprop 是 Android AOSP 中的一种 系统属性定义文件(System Property Definition File),用于声明和管理 Bluetooth 模块相…...
GitHub 趋势日报 (2025年06月08日)
📊 由 TrendForge 系统生成 | 🌐 https://trendforge.devlive.org/ 🌐 本日报中的项目描述已自动翻译为中文 📈 今日获星趋势图 今日获星趋势图 884 cognee 566 dify 414 HumanSystemOptimization 414 omni-tools 321 note-gen …...
dify打造数据可视化图表
一、概述 在日常工作和学习中,我们经常需要和数据打交道。无论是分析报告、项目展示,还是简单的数据洞察,一个清晰直观的图表,往往能胜过千言万语。 一款能让数据可视化变得超级简单的 MCP Server,由蚂蚁集团 AntV 团队…...
蓝桥杯 冶炼金属
原题目链接 🔧 冶炼金属转换率推测题解 📜 原题描述 小蓝有一个神奇的炉子用于将普通金属 O O O 冶炼成为一种特殊金属 X X X。这个炉子有一个属性叫转换率 V V V,是一个正整数,表示每 V V V 个普通金属 O O O 可以冶炼出 …...
【生成模型】视频生成论文调研
工作清单 上游应用方向:控制、速度、时长、高动态、多主体驱动 类型工作基础模型WAN / WAN-VACE / HunyuanVideo控制条件轨迹控制ATI~镜头控制ReCamMaster~多主体驱动Phantom~音频驱动Let Them Talk: Audio-Driven Multi-Person Conversational Video Generation速…...
