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,一经查实,立即删除!

相关文章

移动端自动化测试实战

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应用程序的开源软件。本文将会…

使用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/ 挂载到 容器内部…

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

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

搭建日志服务器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…

使用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。(运算符比较…

CSS 盒模型是什么?它包含哪些属性?标准盒模型/怪异盒模型

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ 盒模型⭐ 标准盒模型⭐ 怪异盒模型⭐ 写在最后 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专栏哦 几何带你启航前端之旅 欢迎来到前端入门之旅&#xff01;这个专栏是为那些对Web开发感…

深度学习中的优化算法

文章目录 前言一、优化和深度学习1.1 优化的目标1.2 深度学习中的优化挑战1.2.1 局部最小值1.2.2 鞍点1.2.3 梯度消失 二、梯度下降2.1 一维梯度下降2.1.1 学习率 2.2 多元梯度下降2.3 自适应方法2.3.1 牛顿法2.3.2 其他自适应方法 三、随机梯度下降3.1 随机梯度更新3.2 动态学…

Go-Gin框架

一、Gin介绍 Gin是一个用Go编写的HTTPweb框架。它是一个类似于martini但拥有更好性能的API框架, 优于httprouter&#xff0c;速度提高了近 40 倍。 点击此处访问Gin官方中文文档。 二、安装 1、安装Gin go get -u github.com/gin-gonic/gin 2、代码中引入 import "g…

安路FPGA的赋值报错——移位处理,加括号

authordaisy.skye的博客_CSDN博客-嵌入式,Qt,Linux领域博主 在使用移位符号用来当作除以号使用时&#xff0c;发现如下问题 其中 cnt_8K 为偶数和奇数时输出的数据不一样 reg [10:0] cnt_8K; reg [10:0] ram1_addra; always(posedge clk_16M) begin if(ram_out_flag )begin if(…

【flink】Checkpoint expired before completing.

使用flink同步数据出现错误Checkpoint expired before completing. 11:32:34,455 WARN org.apache.flink.runtime.checkpoint.CheckpointFailureManager [Checkpoint Timer] - Failed to trigger or complete checkpoint 4 for job 1b1d41031ea45d15bdb3324004c2d749. (2 con…

换架 3D 飞机,继续飞呀飞

相信大多数图扑 HT 用户都曾见过这个飞机的 Demo&#xff0c;在图扑发展的这十年&#xff0c;这个 Demo 是许多学习 HT 用户一定会参考的经典 Demo 之一。 这个 Demo 用简洁的代码生动地展示了 OBJ 模型加载、数据绑定、动画和漫游等功能的实现。许多用户参考这个简单的 Demo 后…

kubernetes 集群命令行工具 kubectl

1、kubectl 概述 kubectl是一种命令行工具&#xff0c;用于管理Kubernetes集群和与其相关的资源。通过kubectl&#xff0c;您可以查看和管理Pod、Deployment、Service、Volume、ConfigMap等资源&#xff0c;也可以创建、删除和更新它们。 kubectl还提供了许多其他功能&#x…