android studio 安卓集成高德地图获取app定位信息

2023-05-16

在网上搜索过大量集成高德地图的方案,和测试代码,要么就是博主抄来没有测试过的代码,要么就是步骤不连续的,甚至包裹官网给出的解决方案都是欠缺相关步骤的(官网截图都不知道多少年前的了,没更新过),不断碰碰磕磕地试错,结合大量的博客的步骤,自己亲测实现了集成高德地址sdk并使用来获取app的定位地址。

一、新建空项目

这个自行百度,so easy,绝对不会出错的。

二、高德地图申请key

1.高德官网:https://lbs.amap.com/

步骤流程:依次进入-》控制台-》应用管理-》创建新应用-》添加新key
图片描述

clipboard.png

2.填写信息

key名称随意写,无关要紧
发布版本安全码SHA1请看下一步
clipboard.png

3.查看包名

如果在新建安卓项目的时候忘记包名,可以通过AndroidManifest.xml文件来查看

clipboard.png

4.安全码的获取

4.1 首先需要在Android Studio上生成jks密钥,可以参考这个博客https://blog.csdn.net/yy13003...,靠谱亲测无误。

但是温馨提醒一下,来到以下截图的步骤时,请记住这些信息(或者跟我一样截图记录):
key store path路径 和 Password密码,以及 Alias 别名和Password密码,
这几个信息在后面需要代码配置时用上的,这个细节甚至在高德官网都没有给出任何提示给步骤,在这我也卡了很久。
clipboard.png

4.2 在确保已经生成了jks密钥后,通过Android Studio打开Treminal终端输入:
keytool -v -list -keystore xxxx.jks(jks的路径)

第三步就是你的安全SHA1码
图片描述

三、集成高德SDK

1. 下载jar包

官网地址:http://lbs.amap.com/api/andro...
下载解压放置lis目录中,在这特别注意需要添加进入环境变量中(很多博客不说明,对于我这小白太坑了)
添加jar包入环境变量:右键jar包-》Add As Library...(详情操作参考:https://blog.csdn.net/s499820...)
图片描述

2.配置build.gradle

这个配置很多博客都没有提到的,很坑爹。之后在后面排查问题才搜索到这个博客说明,可以参考(https://blog.csdn.net/zrf1335...)
这里的四个信息storeFile file/storePassword/keyAlias/keyPassword就对应上面在成功jks时的四个信息了

    signingConfigs {
        //调试版的keystore
        debug {
            storeFile file("/Users/dfp/AndroidStudioProjects/demoProj/demoproj.jks")
            storePassword "123456"
            keyAlias "demoproj"
            keyPassword "123456"
        }
        //发布版的keystore
        release {
            storeFile file("/Users/dfp/AndroidStudioProjects/demoProj/demoproj.jks")
            storePassword "123456"
            keyAlias "demoproj"
            keyPassword "123456"
        }
    }

clipboard.png

四、测试代码获取定位

这里代码可以参考博客https://blog.csdn.net/code_be...

1. 配置

官网示例配置:https://lbs.amap.com/api/andr...

官网示例截图,需要注意的是,<meta-data android:name="com.amap.api.v2.apikey" android:value="您的key"></meta-data>,value值里面需要添加你在上面第二步骤生气的key
clipboard.png

我的完整配置示例

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.dfp.demoproj">

    <uses-permission android:name="android.permission.INTERNET" />
    <!--用于进行网络定位-->
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"></uses-permission>
    <!--用于访问GPS定位-->
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission>
    <!--获取运营商信息,用于支持提供运营商信息相关的接口-->
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
    <!--用于访问wifi网络信息,wifi信息会用于进行网络定位-->
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>
    <!--这个权限用于获取wifi的获取权限,wifi信息会用来进行网络定位-->
    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission>
    <!--用于访问网络,网络定位需要上网-->
    <uses-permission android:name="android.permission.INTERNET"></uses-permission>
    <!--用于读取手机当前的状态-->
    <uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission>
    <!--写入扩展存储,向扩展卡写入数据,用于写入缓存定位数据-->
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
    <!--用于申请调用A-GPS模块-->
    <uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS"></uses-permission>
    <!--用于申请获取蓝牙信息进行室内定位-->
    <uses-permission android:name="android.permission.BLUETOOTH"></uses-permission>
    <uses-permission android:name="android.permission.BLUETOOTH_ADMIN"></uses-permission>

    <application
        android:networkSecurityConfig="@xml/network_security_config"
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <meta-data android:name="com.amap.api.v2.apikey" android:value="XXXXXXXXXX"></meta-data>
        <service android:name="com.amap.api.location.APSService"></service>
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <service android:name=".LongRunningService">
        </service>
        <receiver android:name=".AlarmReceiver">
        </receiver>
    </application>

</manifest>

2.测试代码

在MainActivity.java上照搬别人的测试代码即可,官方案例我是在不会用

我抄的代码示例

package com.example.dfp.demoproj;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;

import com.amap.api.location.AMapLocation;
import com.amap.api.location.AMapLocationClient;
import com.amap.api.location.AMapLocationClientOption;
import com.amap.api.location.AMapLocationListener;

public class MainActivity extends AppCompatActivity {
    //声明AMapLocationClient类对象
    public AMapLocationClient mLocationClient = null;
    //声明定位回调监听器
    public AMapLocationListener mLocationListener = new MyAMapLocationListener();
    //声明AMapLocationClientOption对象
    public AMapLocationClientOption mLocationOption = null;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        init();
    }

    private void init() {
        //初始化定位
        mLocationClient = new AMapLocationClient(getApplicationContext());
        //设置定位回调监听
        mLocationClient.setLocationListener(mLocationListener);
        //初始化AMapLocationClientOption对象
        mLocationOption = new AMapLocationClientOption();
        //设置定位模式为AMapLocationMode.Hight_Accuracy,高精度模式。
        mLocationOption.setLocationMode(AMapLocationClientOption.AMapLocationMode.Hight_Accuracy);
        //获取一次定位结果:
        //该方法默认为false。
        mLocationOption.setOnceLocation(false);

        //获取最近3s内精度最高的一次定位结果:
        //设置setOnceLocationLatest(boolean b)接口为true,启动定位时SDK会返回最近3s内精度最高的一次定位结果。如果设置其为true,setOnceLocation(boolean b)接口也会被设置为true,反之不会,默认为false。
        mLocationOption.setOnceLocationLatest(true);
        //设置是否返回地址信息(默认返回地址信息)
        mLocationOption.setNeedAddress(true);
        //设置是否允许模拟位置,默认为false,不允许模拟位置
        mLocationOption.setMockEnable(false);
        //关闭缓存机制
        mLocationOption.setLocationCacheEnable(false);
        //给定位客户端对象设置定位参数
        mLocationClient.setLocationOption(mLocationOption);
        //启动定位
        mLocationClient.startLocation();

    }

    private class MyAMapLocationListener implements AMapLocationListener {

        @Override
        public void onLocationChanged(AMapLocation aMapLocation) {
            if (aMapLocation != null) {
                if (aMapLocation.getErrorCode() == 0) {
                    Log.e("位置:", aMapLocation.getAddress());
                } else {
                    //定位失败时,可通过ErrCode(错误码)信息来确定失败的原因,errInfo是错误信息,详见错误码表。
                    Log.e("AmapError", "location Error, ErrCode:"
                            + aMapLocation.getErrorCode() + ", errInfo:"
                            + aMapLocation.getErrorInfo());
                }
            }
        }
    }
}

五、运行测试结果

运行你的代码在虚拟机(最好的真实机,我用得就是真实机测试)
Android Studio打印获取到的定位信息:

clipboard.png

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

android studio 安卓集成高德地图获取app定位信息 的相关文章

  • 深度学习哪家强?吴恩达、Udacity和Fast.ai的课程我们替你分析好了

    摘要 xff1a 本文从指导老师 课程概述 课程亮点 课程局限以及所需费用这五个方面进行了分析比较 翻译 AI科技大本营 xff08 rgznai100 xff09 参与 reason W 引言 过去2年 xff0c 我一直积极专注于深度学
  • Ubuntu 16.04上挂载iscsi自动启动

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 1 Ubuntu16 04安装之后默认安装有open iscsi服务 xff0c 如果没有 xff0c 可使用apt get y install open iscsi命令安
  • 使用Xmanager - Passive打开远程最小化方式安装的CentOS 6.10的图形化界面

    在安装 WebLogic 或者 Oracle 时需要用到图形界面 xff0c 比如 WebLogic 11g xff08 10 3 6 xff09 xff0c 默认使用命令行方式安装 xff1a 如果需要使用图形界面方式安装 xff0c 可
  • openstack 功能_2016年OpenStack的新功能:看一下Newton版本

    openstack 功能 OpenStack的发布周期为六个月 xff0c 每个发行版都有一个代号 xff0c 名称以字母的连续字母开头 10月7日 xff0c OpenStack Newton发布了 让我们看一下OpenStack 201
  • 面试官:“谈谈Spring中都用到了那些设计模式?”。

    我自己总结的Java学习的系统知识点以及面试问题 xff0c 已经开源 xff0c 目前已经 41k 43 Star 会一直完善下去 xff0c 欢迎建议和指导 xff0c 同时也欢迎Star xff1a github com Snailc
  • 制作Visual Studio项目模板

    在安装MVC xff0c ASP NET AJAX 后都会在新建工程列表中出现一些新的项目模板 xff0c 通过这些项目模板创建工程后 xff0c 都会为我们做好一些这些工程需要的配置 xff0c 或者干脆就创建一些示例工程 xff0c 为
  • samba常用命令

    1 smbstatus Samba version 3 6 23 PID Username Group Machine Service pid machine Connected at No locked files 2 wbinfo t
  • Kubernetes Service

    Service 的作用 参考链接 虽然每个Pod都有自己的IP地址 xff0c 但即使这些IP地址不能长期保持稳定 这导致了一个问题 xff1a 如果一些Pod xff08 称为它们的后端 xff09 为Kubernetes集群内的其他Po
  • Ubuntu 14.04.2安装内核源码树以及编译

    一 安装内核源码树 方法1 xff1a 使用dpkg dev 43 apt get source安装内核源码树 在下载内核源码之前 xff0c 先安装dpkg dev xff0c 其中包含你在Debian上生成源代码时需要的开发工具套 件
  • iphone 屏蔽系统自动更新,消除设置上的小红点

    苹果ios系统的更新频率大家应该都知道 xff0c 一般来说1个月就会来次更新 这一点让很多人讨厌 主要原因还是iPhone会自动下载更新包 xff0c 然后一直不停地提示你是否安装更新 xff0c 问题是我们还找不到关闭提醒和关闭自动下载
  • Ambari集群里操作时典型权限问题put: `/home/bigdata/1.txt': No such file or directory的解决方案(图文详解)...

    不多说 xff0c 直接上干货 xff01 问题详情 明明put该有的文件在 xff0c 可是怎么提示的是文件找不到的错误呢 xff1f 我就纳闷了put 96 home bigdata 1 txt 39 No such file or d
  • linux服务器账号密码正确无法登录

    登录服务器时 xff0c 发现密码错误 xff0c 输入后还是错误不能登录 最后发现登录日志中有pam tally2 sshd auth user root 0 tally 53 deny 6 less var log secure 查看发
  • &1的用法

    看到不少大神都喜欢用 amp 1来判断一些东西 xff0c 但是作为渣渣的我总是不理解这个 amp 1到底是有什么作用 今天写了程序看了一下 xff0c 其实是判断奇偶用的 如果是奇数 xff0c 其结果为1 xff0c 偶数结果为fals
  • 程序员写了这5000行代码,应聘开口要20K,HR会给吗?

    今天在家乡的一个it专栏上看到一位程序员写他自己面试前端的过程 xff0c 一个水果忍者项目和一个电商平台项目 xff0c 期望工资是20K xff0c 已经有三年工作经验了 xff0c 小编我也把这位小伙的项目COPY过来 xff0c 这
  • 使用Stratis在Linux中配置本地存储

    配置本地存储是台式机Linux用户很少执行的操作 在安装过程中可能只有一次 Linux存储技术发展缓慢 xff0c 如今20年前仍在使用许多存储工具 但是从那以后有些事情有所改善 人们为什么不利用这些新功能 xff1f 本文介绍Strati
  • 如何安装和配置OnlyOffice

    功能介绍 ONLYOFFICE是一款集成了文档 电子邮件 事件 任务和客户关系管理工具的开源在线办公套件 其文档管理功能实现了文档的在线编辑 在线预览和协同管理 xff0c 可用于替代Office365或Google docs 另外 xff
  • 初探Nacos(一)-- 单机模式启动

    花小钱 xff0c 周边游 xff0c 马上抢 xff0c 请关注公众号 xff1a 爱订不订 作者 xff1a 唐璜 前言 Nacos 支持基于 DNS 和基于 RPC 的服务发现 xff08 可以作为springcloud的注册中心 x
  • 筹码集中度90与70区别是什么?

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 筹码集中度是指一只个股的筹码被庄家掌握的程度 我们看到不同的数值 xff0c 比如说90和70 xff0c 很多的股民都不知道筹码集中度90与70区别是什么 下边小编会为大
  • Caused by: org.xml.sax.SAXParseException: 文件提前结束。

    Error starting ApplicationContext To display the auto configuration report re run your application with 39 debug 39 enab
  • AHB总线协议(一)

    1 简介 AHB Advanced High Performance Bus 总线规范是AMBA Advanced Microcontroller Bus Architecture V2 0总线规范的一部分 xff0c AMBA总线规范是A

随机推荐

  • iOS 4.5.5版本 被拒绝!!!! "App Rejected : non-public APIs"

    今天上午收到邮件说是被拒绝了 原文是 这一版本 我就添加一个购买sku的方法 并没有添加什么库 简简单单的一次升级给我出一私有方法拒绝 在xcode8 iOS10 刚出来 苹果新规则进一步丰富 出现这种意外的问题 一定不只我一个 的确 我在
  • 删除文件夹及其子文件

    rm rf 目录 转载于 https www cnblogs com tiandsp archive 2012 07 09 2583207 html
  • 树莓派练习程序(土壤湿度检测)

    土壤湿度检测模块如下 xff1a 树莓派的引脚如下图 xff1a 我们将Vcc引脚连接物理接口2 xff0c GND引脚连接物理接口39 xff0c DO引脚连接物理接口40 实物连接如下图 xff1a 编程使用WiringPi库 xff0
  • 搞定面试问题-进程、线程、协程

    关于进程 xff0c 线程 xff0c 协程是面试中经常可见的问题 xff0c 接下来这篇文章帮你梳理一下 xff0c 让你轻松应对面试官 1 xff0c 什么是进程 一个程序的执行实例就是一个进程 每一个进程提供执行程序所需的所有资源 x
  • OVN 架构分析

    架构分析Base flow L2 L3 forwardingOVN L2 gateway OVN 是 Open vSwitch 社区在 2015 年 1 月份才宣布的一个子项目 xff0c OVN 使用 Open vSwitch功能提供一个
  • fyi 在邮件里是什么意思_FYI的完整形式是什么?

    fyi 在邮件里是什么意思 仅供参考 xff1a 供您参考 FYI For Your Information FYI is an acronym of 34 For Your Information 34 It is a widesprea
  • Maven war包相互依赖

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 假设有两个war包 xff1a A和B A又依赖于B 根据Java规范 xff0c classpath不能指定WAR文件 这就意味着在编译时 xff0c A项目无法访问B项
  • 没事儿乱冒点皮皮

    快一个月没写Blog了 xff0c 这段时间忙着应付考试 xff0c 也就没花太多的时间管这些 前天刚刚考完四级 xff0c 感觉还不错 xff0c 希望能过吧 xff0c 虽然这次我还是没怎么努力学英语 xff0c 如果说真的过了 xff
  • AutoLISP对话框DCL按钮Button设计实例

    AutoLISP对话框DCL按钮设计实例 xff0c 绘制三种形式的图形 xff0c DCL对话框设计代码如下 dia5b dialog label 61 34 按钮测试 34 boxed row label 61 34 图形尺寸 34 e
  • 教你如何修改运行中的docker容器的端口映射

    在docker run创建并运行容器的时候 xff0c 可以通过 p指定端口映射规则 但是 xff0c 我们经常会遇到刚开始忘记设置端口映射或者设置错了需要修改 当docker start运行容器后并没有提供一个 p选项或设置 xff0c
  • svn status 显示 ~xx

    版本控制下的项目与其它类型的项目重名
  • python键盘输入转换为列表_Python键盘输入转换为列表的实例

    Python键盘输入转换为列表的实例 发布时间 xff1a 2020 08 19 12 58 38 来源 xff1a 脚本之家 阅读 xff1a 92 作者 xff1a 清泉影月 Python输入字符串转列表是为了方便后续处理 xff0c
  • 如何调试带有源代码的dll文件

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 工作环境 xff1a dll源代码是c xff0c 在Visual studio 2010中调试 第一步 xff0c 调试的准备 用C 语言编写一个测试dll文件的程序 x
  • (网上搜集)金蝶报错:名称或代码在系统中已被使用

    KIS专业版 修正核算项目关系 select from t itemdetail exec sp cleanitemdetailv GO update a set a fdetailcount 61 b Fcount from t item
  • Xmanager 远程连接linux ubuntu桌面操作系统

    Xmanager 远程连接linux ubuntu桌面操作系统 Xmanager 下载地址 url http dl pconline com cn download 53773 html url 1 ubuntu desk操作系统的配置 系
  • c语言中strtok函数_在C语言中使用strtok()和strtok_r()函数

    c语言中strtok函数 In this article we ll take a look at using the strtok and strtok r functions in C 在本文中 xff0c 我们将介绍如何在C语言中使用
  • Qt QTreeWidget节点的添加+双击响应+删除详解

    QTreeWidget是实现树形结构的类 xff0c 在很多软件中都可以看到类似树形结构的界面 我做的一个示例如下图 xff0c 用来处理图像 xff0c 最顶层节点是图像的路径名 xff0c 子节点是图像的各个波段 xff0c 双击各个波
  • 【转】如何使用分区助手完美迁移系统到SSD固态硬盘?

    自从SSD固态硬盘出世以来 xff0c 一直都被持续关注着 xff0c SSD的性能优势让无数用户起了将操作系统迁移到SSD的心思 xff0c 直接后果就是让无数机械硬盘为止黯然退场 xff0c 很多软件都可以做到系统迁移 xff0c 然而
  • Python中import的使用

    python中的import语句是用来导入模块的 xff0c 在python模块库中有着大量的模块可供使用 xff0c 要想使用这些文件需要用import语句把指定模块导入到当前程序中 import语句的作用 import语句作用就是用来导
  • android studio 安卓集成高德地图获取app定位信息

    在网上搜索过大量集成高德地图的方案 xff0c 和测试代码 xff0c 要么就是博主抄来没有测试过的代码 xff0c 要么就是步骤不连续的 xff0c 甚至包裹官网给出的解决方案都是欠缺相关步骤的 xff08 官网截图都不知道多少年前的了