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


[图片]

(2)给项目起个名字、改一下包名,android 版本合适就行(都行),点击 finish


[图片]

(3)此时生成一个初始的 MainActivity 页面,已经构建好了一个初始的空项目,接下来我们要开始接入地图SDK环境了,记住我们现在的包名。


[图片]


2、高德 SDK 环境接入


入门指南-Android 定位SDK | 高德地图API

这是一个官方的参考文档,可以看一看了解一下整体的过程,中间还有一些具体的操作过程需要说明


2.1 获取高德 key


获取Key-创建工程-开发指南-Android 定位SDK | 高德地图API

可以按照这个过程操作一下。中间有一个获取 安全码 SHA1 的过程,如果初学Android的话,可能不懂这个概念,可以看一个 Android 程序打包 APK 的视频,了解一下 SHA1 的概念以及创建生成的过程。

androidstudio打包apk_哔哩哔哩_bilibili

接下来按照我的步骤,可以拿到具体的 key


1、进入到高德控制台,点击应用管理-> 我的应用 -> 创建新应用

输入随便起的名称,输入对应的类型即可

[图片]

2、点击 添加key,弹出输入框

[图片]

  • key 名称随便输入一个
  • 服务平台选 Android 平台
  • 安全码填入SHA1 密钥

发布版安全码怎么获取?

Android Studio 中点击 settings
[图片]

点击 Experimental,取消勾选,此时右侧的gradle就会出现完整的功能

[图片]

打开右侧的gradle ,点击 Tasks -> android -> signingReport,可以生成默认的签名算法文件,显示SHA1 安全密钥

[图片]

输入正确的包名、SHA1安全码,点击确认即可。

[图片]

此时就能在 key的列表界面看到我们 生成的key了,等会要用到

[图片]

2.2下载 SDK 并导入


相关下载-Android 定位SDK | 高德地图API


2.2.1、下载SDK 文件


我们可以去高德地图的SDK下载页进行选择,可以选一个 3D 地图合包,里面包含了3D地图SDK、搜索SDK、定位SDK,相对来说比较的全面

[图片]

下载好之后解压就是一个 jar包和 几个so文件

[图片]

2.2.2、SDK 导入项目


复制这些文件到你的工程的libs下,如果没有找到libs目录,就将项目结构从Android切换到Project就能找到了,

[图片]

放进去之后在你的 app 的 build.gradle 中的 dependencies{} 闭包中添加这样一句代码,表示导入文件夹

implementation fileTree(dir: 'libs', include: ['*.jar'])

[图片]

点击 sysn 同步一下,我们会发现,lib文件夹底下的jar包 能够打开了。如果没有发生变化,可以右键点击这个 jar 包,点击add as library,导入到这个项目中


[图片]

然后在 app下的 build.gradle 文件中添加配置代码 , 在 android 闭包中再放入下列代码,告诉gradle jar包在libs目录下

 sourceSets {main{jniLibs.srcDirs = ['libs']}}

[图片]

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()


[图片]

我们在使用高德的定位、地图、搜索功能时,需要先同意隐私政策,不通过则无法使用,一般是通过 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中配置它。比较简单,如下图所示。


[图片]

接下来我们就可以在自己的 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,查看效果


[图片]

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/28479.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据结构----算法--分治,快速幂

数据结构----算法–分治,快速幂 一.分治 1.分治的概念 分治法&#xff1a;分而治之 将一个问题拆解成若干个解决方式完全相同的问题 满足分治的四个条件 1.问题难度随着数据规模缩小而降低 2.问题可拆分 3.子问题间相互独立 4.子问题的解可合并 2.二分查找(折半搜索)…

移动端自动化测试实战

UI自动化测试的价值 1、提升回归测试的效率 2、可以进行兼容性测试 UI 自动化测试应用场景 • 冒烟测试自动化&#xff1a;提测之前自动断言提测质量&#xff0c;提供准入参考。 • 功能测试自动化&#xff1a;辅助 QA 与测试工程师的快速验证。 • 验收测试自动化&#xf…

stable-diffusion-webui 界面汉化

本教程通过安装 sd-webui-bilingual-localization 插件来达到汉化目的, 项目地址为:https://github.com/journey-ad/sd-webui-bilingual-localization 一、安装插件 先进入插件安装界面 在搜索栏搜索 zh_CN Localization 中文语言包, 项目地址: https://github.com/dtlnor/st…

CrossOver是什么软件 CrossOver软件好用吗

CrossOver是一款由CodeWeavers公司开发的软件&#xff0c;它可以在Mac和Linux等操作系统上运行Windows软件&#xff0c;而无需在计算机上安装Windows操作系统。这款软件的核心技术是Wine&#xff0c;它是一种在Linux和macOS等操作系统上运行Windows应用程序的开源软件。本文将会…

mysql按季度查询数据

select * from 表名 where YEAR(add_time) 2023 and QUARTER(add_time) 1

使用docker 搭建nginx + tomcat 集群

创建3个Tomcat容器&#xff0c;端口分别映射到 8080,8081,8082&#xff0c;使用数据卷挂载&#xff0c;分别将宿主机目录下的 /opt/module/docker/tomcat3/ROOT1/&#xff0c;/opt/module/docker/tomcat3/ROOT2/&#xff0c;/opt/module/docker/tomcat3/ROOT2/ 挂载到 容器内部…

STM32外部中断

配置是stm32外部中断步骤&#xff1a; 1.使能IO时钟和AFIO时钟 2.配置EXIT中断线 3.配置中断控制器NVIC (EXTI15_10_IRQn,EXTI4_IRQn&#xff09; 4.写中断服务子程序 &#xff08;EXTI15_10_IRQHandler&#xff09; 首先要明白中断IO对应的中断线EXTIx 其中 PA0-PE0对应的是E…

CAD练习——绘制冲压件三视图

首先还是先设置咱们的绘图模板&#xff1a; 这是图层划分&#xff1a; 文字样式设置&#xff1a; 标注样式&#xff1a; 从主视图开始&#xff0c;首先绘制如下图形 用到的快捷指令&#xff1a; L&#xff1a;直线 O&#xff1a;偏移 TR&#xff1a;修剪 效果&#xff1a;…

uniapp中token操作:存储、获取、失效处理。

实现代码 存储token:uni.setStorageSync(token, res.data.result);获取token:uni.getStorageSync(token);清除token&#xff1a;uni.setStorageSync(token, ); 应用场景 在登录操作中&#xff0c;保存token pwdLogin() {....this.$axios.request({url: .....,method: post,p…

嵌入式面试5 -makefile shell

2、 如果有一个简单的helloworld项目目录如下&#xff1a; tree helloworld helloworld |– file2.h |– file1.cpp |– file2.cpp 请编写一个Makefile文件。 答&#xff1a; TARGET helloworld CXX g COMPILE : $(COMPILE) file1.cpp COMPILE : $(COMPILE) file2.cpp OBJE…

搭建日志服务器Rsyslog

Rsyslog介绍 Rsyslog的全称是 rocket-fast system for log&#xff0c;它提供了高性能&#xff0c;高安全功能和模块化设计。rsyslog能够接受从各种各样的来源&#xff0c;将其输入&#xff0c;输出的结果到不同的目的地。rsyslog可以提供超过每秒一百万条消息给目标文件。 特…

SQL Server数据库如何添加Oracle链接服务器(Windows系统)

SQL Server数据库如何添加Oracle链接服务器 一、在添加访问Oracle的组件1.1 下载Oracle的组件 Oracle Provider for OLE DB1.2 注册该组件1.2.1 下载的压缩包解压位置1.2.2 接着用管理员运行Cmd 此处一定要用管理员运行&#xff0c;否则会报错 二、配置环境变量三、 重启SQL Se…

java 图片处理 Graphics2D GraphicsMagick 避免oom

GraphicsMagick 号称图像处理领域的瑞士军刀。GraphicsMagick 是个图片处理库&#xff0c;是从ImageMagick 5.5.2分支出来。 Graphics2D是JDK 自带的一套图片处理库。但性能一般。 Java 方面也提供了类似 JNI 方式支持 GraphicsMagickim4java 处理图像。 但OpenCV&#xff0…

嵌入式面试7---进程or线程or同步

3.int main(){fork()||fork();}共创建几个进程&#xff08;B&#xff09; A.2 B.3 C.4 D.5 解析&#xff1a;首先&#xff0c;父进程fork后&#xff0c;给父进程返回子进程pid&#xff0c;此时为真&#xff0c;逻辑或语句不再执行&#xff0c;但是fork出的子进程是复制的父进程…

使用Spring五大注解来更加简单的存储Bean对象

在使用Spring框架的时候我们如果使用这种方式来存储bean对象的话未免有点太麻烦了 <bean id"xxx" class"xxx"> </bean> 为了简化存储Bean对象的操作&#xff0c;我们可以使用五大类注解来进行存储Bean对象 我们首先要在配置文件配置扫描路径…

【快应用】list组件属性的运用指导

【关键词】 list、瀑布流、刷新、页面布局 【问题背景】 1、 页面部分内容需要瀑布流格式展示&#xff0c;在使用lsit列表组件设置columns进行多列渲染时&#xff0c;此时在里面加入刷新动画时&#xff0c;动画只占了list组件的一列&#xff0c;并没有完全占据一行宽度&…

把大模型装进手机,分几步?

点击关注 文 | 姚 悦 编 | 王一粟 大模型“跑”进手机&#xff0c;AI的战火已经从“云端”烧至“移动终端”。 “进入AI时代&#xff0c;华为盘古大模型将会来助力鸿蒙生态。”8月4日&#xff0c;华为常务董事、终端BG CEO、智能汽车解决方案BU CEO 余承东介绍&#xff0c…

Gson 添加数据默认值问题记录

问题&#xff1a;在用Gson add(key&#xff08;string类型&#xff09;&#xff0c;value&#xff08;必须是JsonElement子类&#xff09;&#xff09;时发现&#xff0c;value 传了 "" 空字符串&#xff08;非null&#xff09;&#xff0c;默认解析后返回null&#…

jmeter测试rpc接口-使用dubbo框架调用【杭州多测师_王sir】

1.基于SOAP架构。基于XML规范。基于WebService协议。特点:接口地址?wsdl结尾2.基于RPC架构&#xff0c;基于dubbo协议&#xff0c;thrift协议。SpringCloud微服务。3.基于RestFul架构&#xff0c;基于json规范。基于http协议(我们常用的都是这种&#xff0c;cms平台也是) Rest…

windows环境下安装elasticsearch、kibana

通过本文可以快速在windows系统上安装elasticsearch、kibana环境。 当你用Integer类型的时候&#xff0c;要非常小心&#xff0c;因为100等于100、但是200不等于200&#xff0c;当然&#xff0c;如果你会一点小花招&#xff0c;也可以让100不等于100、让200等于200。(运算符比较…