热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Android和高德地图Api获取自己的经纬度及位置

首先需要创建一个高德开发者账号。(不会的百度下)然后我们需要在控制台创建应用Sha1获取可以参照:这里packagename为你创建程序的名字,在Man

首先需要创建一个高德开发者账号。(不会的百度下)
然后我们需要在控制台创建应用
在这里插入图片描述
Sha1获取可以参照:这里
packagename为你创建程序的名字,在Manifest里可以看见
在这里插入图片描述
然后点击创建就行了。
创建之后就可以获取到Key
在这里插入图片描述
接下来我们需要去下载包文件了
点击这里下载
在这里插入图片描述
为了省事,直接选择一键下载。快而且方便
下载完成之后,进行压缩:
在这里插入图片描述
将jar这个文件拷贝到项目的 app->libs里
在这里插入图片描述
这里一定要注意:
点击app->build.gradle
在 dependencies里加入 implementation fileTree(includes: [’*.jar’],dir:‘libs’)
在这里插入图片描述
还有就是package
就是在这里插入图片描述如果你名字改变了,一定要将高德api的package改掉
接下来配置Manifest.xml

<uses-permission android:name&#61;"android.permission.ACCESS_COARSE_LOCATION">uses-permission><uses-permission android:name&#61;"android.permission.ACCESS_FINE_LOCATION">uses-permission><uses-permission android:name&#61;"android.permission.ACCESS_NETWORK_STATE">uses-permission><uses-permission android:name&#61;"android.permission.ACCESS_WIFI_STATE">uses-permission><uses-permission android:name&#61;"android.permission.CHANGE_WIFI_STATE">uses-permission><uses-permission android:name&#61;"android.permission.INTERNET">uses-permission><uses-permission android:name&#61;"android.permission.READ_PHONE_STATE">uses-permission><uses-permission android:name&#61;"android.permission.WRITE_EXTERNAL_STORAGE">uses-permission><uses-permission android:name&#61;"android.permission.ACCESS_LOCATION_EXTRA_COMMANDS">uses-permission><uses-permission android:name&#61;"android.permission.FOREGROUND_SERVICE"/><uses-permission android:name&#61;"android.permission.ACCESS_BACKGROUND_LOCATION"/>

还需要在application中加入apikey和server

<meta-data android:name&#61;"com.amap.api.v2.apikey" android:value&#61;"92aa621ff8c377821aa7b6e412e7a706">
<service android:name&#61;"com.amap.api.location.APSService">service>

完整代码&#xff1a;


<manifest xmlns:android&#61;"http://schemas.android.com/apk/res/android"package&#61;"com.example.maptest"><uses-permission android:name&#61;"android.permission.ACCESS_COARSE_LOCATION">uses-permission><uses-permission android:name&#61;"android.permission.ACCESS_FINE_LOCATION">uses-permission><uses-permission android:name&#61;"android.permission.ACCESS_NETWORK_STATE">uses-permission><uses-permission android:name&#61;"android.permission.ACCESS_WIFI_STATE">uses-permission><uses-permission android:name&#61;"android.permission.CHANGE_WIFI_STATE">uses-permission><uses-permission android:name&#61;"android.permission.INTERNET">uses-permission><uses-permission android:name&#61;"android.permission.READ_PHONE_STATE">uses-permission><uses-permission android:name&#61;"android.permission.WRITE_EXTERNAL_STORAGE">uses-permission><uses-permission android:name&#61;"android.permission.ACCESS_LOCATION_EXTRA_COMMANDS">uses-permission><uses-permission android:name&#61;"android.permission.FOREGROUND_SERVICE"/><uses-permission android:name&#61;"android.permission.ACCESS_BACKGROUND_LOCATION"/><applicationandroid:allowBackup&#61;"true"android:icon&#61;"&#64;mipmap/ic_launcher"android:label&#61;"&#64;string/app_name"android:roundIcon&#61;"&#64;mipmap/ic_launcher_round"android:supportsRtl&#61;"true"android:theme&#61;"&#64;style/Theme.MapTest"><meta-data android:name&#61;"com.amap.api.v2.apikey" android:value&#61;"92aa621ff8c377821aa7b6e412e7a706">meta-data><activityandroid:name&#61;".MainActivity"android:exported&#61;"true"><intent-filter><action android:name&#61;"android.intent.action.MAIN" /><category android:name&#61;"android.intent.category.LAUNCHER" />intent-filter>activity><service android:name&#61;"com.amap.api.location.APSService">service>application>manifest>

activitymain.xml


<androidx.constraintlayout.widget.ConstraintLayout xmlns:android&#61;"http://schemas.android.com/apk/res/android"xmlns:app&#61;"http://schemas.android.com/apk/res-auto"xmlns:tools&#61;"http://schemas.android.com/tools"android:layout_width&#61;"match_parent"android:layout_height&#61;"match_parent"tools:context&#61;".MainActivity"><LinearLayoutandroid:layout_width&#61;"match_parent"android:layout_height&#61;"match_parent"android:orientation&#61;"vertical"><TextViewandroid:layout_width&#61;"wrap_content"android:layout_height&#61;"wrap_content"android:id&#61;"&#64;&#43;id/position_text" />LinearLayout>androidx.constraintlayout.widget.ConstraintLayout>

MainActivity:

package com.example.maptest;import androidx.appcompat.app.AppCompatActivity;import android.content.Context;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.os.Bundle;
import android.util.Log;
import android.widget.TextView;import com.amap.api.location.AMapLocation;
import com.amap.api.location.AMapLocationClient;
import com.amap.api.location.AMapLocationClientOption;
import com.amap.api.location.AMapLocationListener;import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.Locale;public class MainActivity extends AppCompatActivity {public AMapLocationClient mLocationClient&#61;null;public AMapLocationListener mapLocationListener&#61;new AMapLocationListener() {&#64;Overridepublic void onLocationChanged(AMapLocation aMapLocation) {if(aMapLocation!&#61;null){if(aMapLocation.getErrorCode()&#61;&#61;0){double latitude&#61;aMapLocation.getLatitude();double Longitude&#61;aMapLocation.getLongitude();String province&#61;aMapLocation.getProvince();String city&#61;aMapLocation.getCity();String district&#61;aMapLocation.getDistrict();String streetNumber&#61;aMapLocation.getStreetNum();String text&#61;"经度: "&#43;Longitude&#43;"\n"&#43;"纬度: "&#43;latitude&#43;"\n"&#43;"详细位置: "&#43;province&#43;city&#43;district&#43;streetNumber;position.setText(text);}else{Log.e("AmapError","location Error, ErrCode:"&#43; aMapLocation.getErrorCode() &#43; ", errInfo:"&#43; aMapLocation.getErrorInfo());position.setText("定位失败");}}}};public AMapLocationClientOption mLocationOption&#61;null;private TextView position;&#64;Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);position&#61;findViewById(R.id.position_text);AMapLocationClient.updatePrivacyShow(getApplicationContext(),true,true);AMapLocationClient.updatePrivacyAgree(getApplicationContext(),true);try {mLocationClient&#61;new AMapLocationClient(getApplicationContext());} catch (Exception e) {e.printStackTrace();}mLocationClient.setLocationListener(mapLocationListener);mLocationOption&#61;new AMapLocationClientOption();mLocationOption.setLocationPurpose(AMapLocationClientOption.AMapLocationPurpose.SignIn);mLocationOption.setLocationMode(AMapLocationClientOption.AMapLocationMode.Hight_Accuracy);if(null!&#61;mLocationClient){mLocationClient.setLocationOption(mLocationOption);mLocationClient.stopLocation();mLocationClient.startLocation();}}public void onDestroy(){super.onDestroy();mLocationClient.onDestroy();}public static String sHA1(Context context){try {PackageInfo info &#61; context.getPackageManager().getPackageInfo(context.getPackageName(), PackageManager.GET_SIGNATURES);byte[] cert &#61; info.signatures[0].toByteArray();MessageDigest md &#61; MessageDigest.getInstance("SHA1");byte[] publicKey &#61; md.digest(cert);StringBuffer hexString &#61; new StringBuffer();for (int i &#61; 0; i < publicKey.length; i&#43;&#43;) {String appendString &#61; Integer.toHexString(0xFF & publicKey[i]).toUpperCase(Locale.US);if (appendString.length() &#61;&#61; 1)hexString.append("0");hexString.append(appendString);hexString.append(":");}String result &#61; hexString.toString();return result.substring(0, result.length()-1);} catch (PackageManager.NameNotFoundException e) {e.printStackTrace();} catch (NoSuchAlgorithmException e) {e.printStackTrace();}return null;}
}

这里注意一下。如果你显示不了定位的话&#xff0c;直接调用sHA1这个方法进行获取自己的SHA1值。然后拷贝到控制台的Sha1里。
最后截图&#xff1a;
在这里插入图片描述
如果有什么不知道的。可以评论区留言。看到会回复


推荐阅读
  • mybatis相关面试题 ... [详细]
  • 深入理解Java类加载机制及安全防护
    本文探讨了Java类加载的过程,包括加载、验证、准备、解析和初始化五个阶段,并详细解释了每个阶段的具体操作和意义。此外,文章还讨论了Java如何通过双亲委派模型来保障核心API的安全性,以及在特定情况下如何打破这一机制。 ... [详细]
  • 如何使用Maven将依赖插件一并打包进JAR文件
    本文详细介绍了在使用Maven构建项目时,如何将所需的依赖插件一同打包进最终的JAR文件中,以避免手动部署依赖库的麻烦。 ... [详细]
  • ANSI最全介绍linux终端字体改变颜色等ANSI转义序列维基百科,自由的百科全书由于国内不能访问wiki而且国内关于ANSI的介绍都是简短的不能达到,不够完整所以转wiki到此 ... [详细]
  • 远程访问用户 Kindle通过电子书实现控制
    介绍自2007年以来,亚马逊已售出数千万台Kindle,令人印象深刻。但这也意味着数以千万计的人可能会因为这些Kindle中的软件漏洞而被黑客入侵。他 ... [详细]
  • 本文探讨了Flutter和Angular这两个流行框架的主要区别,包括它们的设计理念、适用场景及技术实现。 ... [详细]
  • PHP 5.4.8 编译安装指南
    本文详细介绍了如何在Linux环境下编译安装PHP 5.4.8,并配置为FastCGI模式运行。包括所需依赖包的安装、源代码下载、编译配置及启动服务等步骤。 ... [详细]
  • 本文详细介绍如何在Spring Boot项目中集成和使用JPA,涵盖JPA的基本概念、Spring Data JPA的功能以及具体的操作步骤,帮助开发者快速掌握这一强大的持久化技术。 ... [详细]
  • 本项目使用Java语言开发了一个基于B/S架构的指纹识别系统,该系统能够实现指纹的高效采集与精准识别,适用于多种安全认证场景。 ... [详细]
  • 本文将详细介绍如何配置并整合MVP架构、Retrofit网络请求库、Dagger2依赖注入框架以及RxAndroid响应式编程库,构建高效、模块化的Android应用。 ... [详细]
  • 在使用 MySQL 6.0.x 及以上版本的 JDBC 驱动时,若未正确配置 `serverTimezone` 参数,可能会导致连接异常。本文探讨了这一问题的原因及解决方法。 ... [详细]
  • Gradle 是 Android Studio 中默认的构建工具,了解其基本配置对于开发效率的提升至关重要。本文将详细介绍如何在 Gradle 中定义和使用共享变量,以确保项目的一致性和可维护性。 ... [详细]
  • Java虚拟机及其发展历程
    Java虚拟机(JVM)是每个Java开发者日常工作中不可或缺的一部分,但其背后的运作机制却往往显得神秘莫测。本文将探讨Java及其虚拟机的发展历程,帮助读者深入了解这一关键技术。 ... [详细]
  • 视觉Transformer综述
    本文综述了视觉Transformer在计算机视觉领域的应用,从原始Transformer出发,详细介绍了其在图像分类、目标检测和图像分割等任务中的最新进展。文章不仅涵盖了基础的Transformer架构,还深入探讨了各类增强版Transformer模型的设计思路和技术细节。 ... [详细]
  • Hibernate全自动全映射ORM框架,旨在消除sql,是一个持久层的ORM框架1)、基础概念DAO(DataAccessorOb ... [详细]
author-avatar
UUUUUUUUUU8
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有