老规矩,上效果图,先给你们看下效果:

虽然打上了马赛克,但是装到别人手机上还是看着很爽啊;

友善提醒:禁止用作非法用途

首先进入高德地图开放平台

先要下载高德的定位SDK包,这里就不演示了

1.----->进入控制台

2.----->最左侧应管理

3.----->创建新应用

4.----->输入名字和用途

5.下载高德定位SDK,集成到AndroidStudio中

做完这些之后我们需要获得到 key,我们选取添加新key,然后输入我们的包名和SHA1值,官网推荐我们使用命令行去获取SHA1值,具体看官方文档 高德SHA1值获取,我使用的是在代码里获取当前程序使用的签名文件来获取SHA1值,然后拿到之后,再复制到高德开放平台

6.具体代码如下

public static String sHA1(Context context) {try {PackageInfo info = context.getPackageManager().getPackageInfo(context.getPackageName(), PackageManager.GET_SIGNATURES);byte[] cert = info.signatures[0].toByteArray();MessageDigest md = MessageDigest.getInstance("SHA1");byte[] publicKey = md.digest(cert);StringBuffer hexString = new StringBuffer();for (int i = 0; i < publicKey.length; i++) {String appendString = Integer.toHexString(0xFF & publicKey[i]).toUpperCase(Locale.US);if (appendString.length() == 1)hexString.append("0");hexString.append(appendString);hexString.append(":");}String result = hexString.toString();//result即为获取的SHA1值,如果最后面有冒号的话就去掉Log.i(TAG,result.toString());return result.substring(0, result.length()-1);} catch (PackageManager.NameNotFoundException e) {e.printStackTrace();} catch (NoSuchAlgorithmException e) {e.printStackTrace();}return null;}

.然后需要在权限清单文件AndroidManifest的Application标签下面写上我们的key以及注册服务

<!--写在Application标签下,写我们自己的key--><meta-dataandroid:name="com.amap.api.v2.apikey"android:value="029c736c9e52ac293b933dd9ac0e69a7"></meta-data><service android:name="com.amap.api.location.APSService"></service>

8.当然还有一些权限

    <!-- 地图包、搜索包需要的基础权限 --><!--用于进行网络定位--><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>

9.然后就是我们MainActivity里面的代码了

我把他封装了两个方法,直接复制在MainActivity里面,然后需要用到的地方直接调用startLocaion()这个方法就可以

public void startLocaion(){mLocationClient = new AMapLocationClient(getApplicationContext());mLocationClient.setLocationListener(mLocationListener);mLocationOption = new AMapLocationClientOption();//设置定位模式为AMapLocationMode.Hight_Accuracy,高精度模式。mLocationOption.setLocationMode(AMapLocationClientOption.AMapLocationMode.Hight_Accuracy);//设置是否返回地址信息(默认返回地址信息)mLocationOption.setNeedAddress(true);//获取一次定位结果://该方法默认为false。mLocationOption.setOnceLocation(true);//设置是否允许模拟位置,默认为false,不允许模拟位置mLocationOption.setMockEnable(false);//给定位客户端对象设置定位参数mLocationClient.setLocationOption(mLocationOption);//启动定位mLocationClient.startLocation();}//声明定位回调监听器public AMapLocationListener mLocationListener = new AMapLocationListener() {@Overridepublic void onLocationChanged(AMapLocation amapLocation) {if (amapLocation !=null ) {if (amapLocation.getErrorCode() == 0) {//定位成功回调信息,设置相关消息Log.i(TAG,"当前定位结果来源-----"+amapLocation.getLocationType());//获取当前定位结果来源,如网络定位结果,详见定位类型表Log.i(TAG,"纬度 ----------------"+amapLocation.getLatitude());//获取纬度Log.i(TAG,"经度-----------------"+amapLocation.getLongitude());//获取经度Log.i(TAG,"精度信息-------------"+amapLocation.getAccuracy());//获取精度信息Log.i(TAG,"地址-----------------"+amapLocation.getAddress());//地址,如果option中设置isNeedAddress为false,则没有此结果,网络定位结果中会有地址信息,GPS定位不返回地址信息。Log.i(TAG,"国家信息-------------"+amapLocation.getCountry());//国家信息Log.i(TAG,"省信息---------------"+amapLocation.getProvince());//省信息Log.i(TAG,"城市信息-------------"+amapLocation.getCity());//城市信息Log.i(TAG,"城区信息-------------"+amapLocation.getDistrict());//城区信息Log.i(TAG,"街道信息-------------"+amapLocation.getStreet());//街道信息Log.i(TAG,"街道门牌号信息-------"+amapLocation.getStreetNum());//街道门牌号信息Log.i(TAG,"城市编码-------------"+amapLocation.getCityCode());//城市编码Log.i(TAG,"地区编码-------------"+amapLocation.getAdCode());//地区编码Log.i(TAG,"当前定位点的信息-----"+amapLocation.getAoiName());//获取当前定位点的AOI信息} else {//显示错误信息ErrCode是错误码,errInfo是错误信息,详见错误码表。Log.e("AmapError", "location Error, ErrCode:"+ amapLocation.getErrorCode() + ", errInfo:"+ amapLocation.getErrorInfo());}}}};

10.现在我们就已经完成了.如果是6.0以上的手机还要动态去申请定位权限,8.0以上可能也会有问题,具体看下高德官方文档吧,6.0动态申请定位权限我写在了下一篇博客Android 6.0权限管理以及动态申请,以定位权限为例

Android 集成高德定位功能,获取经纬度,城市至门牌号码相关推荐

  1. vue怎么获取用户的位置经纬度_vue 实现Web端的定位功能 获取经纬度

    首先我这里的需求呢, 是获取当前用户的经纬度 经过无数次的测试, 先后用了 腾讯/百度地图的api,最后绝对还是高德的js APi 废话不多说, 直接上代码. 首先在 index.html 里面 引入 ...

  2. android 高德地图定位圈,android ------ 实现高德定位并获取相应信息 ( 最新版高德SDK 和 Android SDK版本)...

    Android开发项目时常常会遇到定位这个功能, 很久以前写过一篇了,官方也更新了一些东西,我也更新下 以前使用的是jar包 导入来实现高德定位 现在通过Gradle集成SDK(也可以使用jar包) ...

  3. android高德定位sdk,android ------ 实现高德定位并获取相应信息 ( 最新版高德SDK 和 Android SDK版本)...

    /*** * 定位*/ private voidshowLocation() {try{ mlocationClient= new AMapLocationClient(this); mLocatio ...

  4. html5经纬度定位 源码_利用HTML5定位功能获取经纬度,在根据经纬度利用百度地图获取位置信息...

    一.引入相关js 二.js代码 // 单次位置请求执行的函数 function getLocation(){ navigator.geolocation.getCurrentPosition(mapI ...

  5. 利用百度地图Android定位SDK获取经纬度

    环境的搭建(参考上一次的文章) 百度地图Android定位SDK的使用 2.在Android studio里设计程序来获取经纬度 界面布局activity_main.xml文件的源代码: <?x ...

  6. Android集成百度定位以及导航详解

    Android集成百度定位以及导航详解                    百度地图Android SDK 官方下载地址:                            包括类参考.示例代码 ...

  7. android获得图片的坐标,Android百度地图定位后获取周边位置的实现代码

    本文实例讲解Android百度地图定位后获取周边位置的实现代码,分享给大家供大家参考,具体内容如下 效果图: 具体代码: 1.布局文件 android:orientation="vertic ...

  8. Android集成百度定位,超详细,拒绝坑,附demo!!!

    众所周知,百度地图作为定位,地图,导航界的大佬之一,我们的项目中有这方面的需求,百度地图集成也是个不错的选择. 百度地图集成成本极低,首先,它免费,官网文档清晰,demo明确,但还是有很多人要才坑,正 ...

  9. Android开发集成高德定位SDK实现定位功能。

    第一步:添加高德定位SDK依赖,导入框架有两种方式,第一种是可以到高德开放平台高德开放平台 | 高德地图API下载相关的jar包,然后将jar包放在项目的libs文件下,然后点击以依赖库的形式添加到项 ...

最新文章

  1. java 进程通信框架,MediatR-进程内的消息通信框架
  2. pmp考试必知的十个图和表
  3. windowsphone开发_APP软件开发用哪些软件比较好
  4. python画饼状图的包_Python数据可视化:画饼状图、折线图、圈图
  5. 柳青:2017,滴滴实现规模增长和修炼内功的一年
  6. Qt 解决MySQL 中文乱码问题
  7. VTK:3DArray用法实战
  8. JWTToken超时刷新策略
  9. 计算机硬件技术基础 统计字符串strl中字符'a'的个数,汕头大学工学院830计算机基础综合历年考研真题202p.doc...
  10. XSS绕过与防御总结
  11. 【qt】QWS和 QPA
  12. 宋宝华: 纪念金庸先生——程序员的武侠世界
  13. 8-1 职场价值塑造-摆脱低价值瓶颈,展示高价值收获新机会
  14. 洛谷P1205JAVA题解
  15. html+css实现三角形的三种方法
  16. 简洁,简单,再简化...
  17. 计算机速成课 第二十四集 冷战和消费主义
  18. pandas笔记1 --pandas处理mat表格文件
  19. 公有云托管K8s服务百花齐放,企业如何统一纳管、便捷管理?
  20. 李开复创新工厂超级详细面经(附答案)

热门文章

  1. idea 导入git项目
  2. Matlab:奇异值
  3. DB2 Catalog浅析学习笔记
  4. 交换机基础与交换机命令入门
  5. 鸿蒙能否解决安卓长时间卡顿,华为:鸿蒙比安卓更能解决手机卡顿 3年都不会卡...
  6. python函数练习题讲解
  7. 【翻译】从头开始编写一个Orchard网上商店模块(1) - 介绍
  8. 2023年【熔化焊接与热切割】考试及熔化焊接与热切割考试技巧
  9. 走迷宫最短距离——广搜
  10. 怕自己忘了复习mybtais(1)