首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Android 高德地图API(详细步骤+源码)一

Android 高德地图API(详细步骤+源码)一

原创
作者头像
晨曦_LLW
修改于 2021-03-05 02:35:17
修改于 2021-03-05 02:35:17
8.5K8
举报

高德地图API使用详解

  • 前言
  • 正文
    • 一、创建应用
      • ① 获取PackageName
      • ② 获取调试版安全码SHA1
      • ③ 获取发布版安全码SHA1
    • 二、配置Android Studio工程
      • ① 导入SDK
      • ② 配置AndroidManifest.xml
    • 三、获取当前定位信息
      • ① 版本判断
      • ② 动态权限请求
      • ③ 初始化定位
      • ④ 获取定位结果
    • 四、显示地图
    • 五、显示当前定位地图
    • 六、地图设置
      • ① 修改自定义定位图标
      • ② 设置缩放等级
      • ③ 开启室内地图
      • ④ 地图控件设置
    • 七、获取POI数据
    • 八、源码
  • 尾声

前言

  为了丰富对地图、定位的了解,在写了百度、腾讯的地图定位之后,终于到了高德地图了。我个人平时日常使用最多的定位软件就是高德地图。所以这篇文章,就带你来初步了解使用。

正文

  在此之前呢,默认都没有账号,因此需要先注册一个账号账号才行,点击高德开放平台进入主页面。

点击右上角的注册按钮,然后选择注册开发者的类型,有个人开发者、企业开发者。

如果你已经工作了可以选择企业开发者,只不过需要填写的资料要多一些,这里我选择成为个人开发者,点击。

勾选上这个选项,然后点击确认注册开发者,进入下一步,填写个人资料。

填写个人资料,实名认证,请注意实名认证,一个身份只能认证一个开发者账号,后面个人主页和开发者简介属于选填的。

点击下一步就注册完成了。然后重新进入高德开放平台登录你刚才注册的账号,之后进入控制台选择应用管理,进入我的应用。

一、创建应用

然后点击创建新应用按钮

填写应用信息,然后点击新建。

建好应用之后需要添加key,点击添加。

添加key需要你的应用的一些信息,你可以和我的这个图一样。

从上面的图来看还需要三个值,发布版安全码SHA1、调试版安全码SHA1、PackageName。

① 发布版安全码SHA1就是你的应用发布正式版本时的安全码,常规是使用jks秘钥来生成release包。

② 调试版安全码SHA1就是你的应用通过usb直接运行在手机或者虚拟机时的安全码,同一个项目在不同的电脑上运行,这个安全码各不相同。

③ PackageName 就是你的应用包名。

① 获取PackageName

下面我将在一一获取这三个值,保留当前的网页,然后打开你的Android Studio,新建一个名为GaodeMapDemo的项目,如下图所示

注意这个包名,现在你就可以复制这个包名到刚才的网页中的输入框中,位置如下图所示,key的包名需要和你的应用包名保持一致。

然后回到AS,点击Finish完成你的项目的创建。

② 获取调试版安全码SHA1

下面来获取调试版安全码SHA1

创建好项目之后,注意你的AS的右侧边栏,点击Gradle → app → android → signingReport,最后双击signingReport。

然后你会看到Run下会出现如下图类似的信息。

debug就是调试版,那么它的SHA1就是调试版安全码SHA1,这正是我所需要的。下面将它复制到刚才的网页中,如下图所示,别放错位置了。

最后来获取发布版安全码SHA1。

③ 获取发布版安全码SHA1

这个稍微有一些麻烦,因此需要先创建一个jks文件才行。

点击Build 选择点击Generate Signed Bundle / APK…

选择APK,然后Next。

然后是配置,这里需要填写jks的路径,但是我没有这个jks,因此点击**Create new,**按钮去创建一个。

首先要指定这个jks的文件存放路径和文件名。

这里我存放在D盘下的APK文件夹中,然后设置jks的名字为GaodeMapDemo,然后点击OK。

输入jks的密码和key的密码,最后点击OK。

会弹出这样一个窗口,不用管它,点击OK。

勾选记住密码,然后点击Next。

选择release,然后两个都勾选上,最后点击Finish。

当你看到AS的右下角出现这一提示时,就说明你的release包已经生成好了。

在你的AS中查看这个apk,你可以复制它通过电脑QQ发给你的手机,然后在手机上直接打开安装。

然后你就能看到熟悉的Hello World!

接下来进入Android Studio的Terminal工具输入如下图所示的命令和jks存放路径。

代码语言:txt
AI代码解释
复制
//如果你前面的步骤和我一模一样的话,这里你就可以复制粘贴,不一样的话就修改jks的路径就可以了
keytool -list -v -keystore D:\APK\GaodeMapDemo.jks

输入密码,输入时不可见。输入完直接回车,然后你会看到如下图类似的信息。

复制到网页中,位置如下图所示,点击提交。

这个key就生成好了。

二、配置Android Studio工程

首先要下载SDK,点击SDK下载

如上图配置,然后点击下载,下载到本地后解压,解压之后如下所示:

① 导入SDK

复制这些文件到你的libs下。然后点击这个小象图标进行工程的资源配置同步。

最终如下图所示,你可以看到你的这个jar现在是可以打开的。

然后打开你的app下的build.gradle文件,在android闭包下添加

代码语言:txt
AI代码解释
复制
	sourceSets {
        main{
            jniLibs.srcDirs = ['libs']
        }
    }

然后点击Sync进行再一次同步。下面进行AndroidManifest.xml的配置

② 配置AndroidManifest.xml

打开AndroidManifest.xml,首先在application标签下添加定位服务

代码语言:txt
AI代码解释
复制
	<!--定位service-->
	<service android:name="com.amap.api.location.APSService"/>

然后添加在manifest标签下添加如下权限。

代码语言:txt
AI代码解释
复制
	<!--用于访问网络,网络定位需要上网-->
    <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

代码语言:txt
AI代码解释
复制
	<!--设置高德Key-->
    <meta-data android:name="com.amap.api.v2.apikey" android:value="d3347ee0f2928f9a0c199cae009ae7f7"/>

这个值和你创建的key的值一致,如下图所示则是我的key。

三、获取当前定位信息

  下面设想一个情景,我想要一打开应用就获取到当前定位信息。

那么基于这个目的下面来写代码。刚才在AndroidManifest.xml配置了比较多的权限,而在实际的使用过程中,Android6.0之后有一些权限是需要用户动态申请的,比如定位、获取手机状态、文件读写之类的。

因此首先得先判断当前是否需要动态请求权限,所以要根据Android的版本来判断。

① 版本判断

于是就可以在MainActivity中写入这样一个checkingAndroidVersion()方法。

代码语言:txt
AI代码解释
复制
	/**
     * 检查Android版本
     */
    private void checkingAndroidVersion() {
        if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M){
            //Android6.0及以上先获取权限再定位
            
        }else {
            //Android6.0以下直接定位
            
        }
    }

用于检查Android版本。6.0以下则直接定位,6.0及以上则动态申请权限,然后在权限通过的返回中进行定位,思路很清晰了,下面你要在onCreate中调用这个 checkingAndroidVersion() 方法。

下面来写这个动态权限的请求,这个其实也没有必要用原生的权限请求,网络上有很多优秀的框架可以帮助你快速实现,比如这个EasyPermission,在之前我是没有讲述过这个权限请求框架的。下面来看看。

② 动态权限请求

打开app下的build.gradle,在dependencies闭包下添加如下依赖:

代码语言:txt
AI代码解释
复制
	//Google推荐的EasyPermission库
    implementation 'pub.devrel:easypermissions:3.0.0'

如下图所示

然后点击AS右上角的Sync进行同步,同步完成之后,你就可以使用了。回到MainActivity中,

先增加一个成员变量

代码语言:txt
AI代码解释
复制
	//请求权限码
    private static final int REQUEST_PERMISSIONS = 9527;

新增requestPermission()方法。

代码语言:txt
AI代码解释
复制
	/**
     * 动态请求权限
     */
    @AfterPermissionGranted(REQUEST_PERMISSIONS)
    private void requestPermission() {
        String[] permissions = {
                Manifest.permission.ACCESS_COARSE_LOCATION,
                Manifest.permission.ACCESS_FINE_LOCATION,
                Manifest.permission.READ_PHONE_STATE,
                Manifest.permission.WRITE_EXTERNAL_STORAGE
        };

        if (EasyPermissions.hasPermissions(this, permissions)) {
            //true 有权限 开始定位
            showMsg("已获得权限,可以定位啦!");
        } else {
            //false 无权限
            EasyPermissions.requestPermissions(this, "需要权限", REQUEST_PERMISSIONS, permissions);
        }
    }

这个方法中对权限进行了判断,有权限则可以定位,没有权限则请求权限

代码语言:txt
AI代码解释
复制
	/**
     * 请求权限结果
     * @param requestCode
     * @param permissions
     * @param grantResults
     */
    @Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults);
        //设置权限请求结果
        EasyPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults, this);
    }

通过重写onRequestPermissionsResult方法来获取权限授予的返回结果,然后再通过EasyPermissions.onRequestPermissionsResult设置,设置之后会重新调用requestPermission()方法,为什么呢?就因为这个注解**@AfterPermissionGranted(REQUEST_PERMISSIONS)**,然后又会判断是否有权限,有则进行之后的定位,下面可以来写定位的方法了。

简单写一个消息提示的方法,用于当前Activity的使用。

代码语言:txt
AI代码解释
复制
	/**
     * Toast提示
     * @param msg 提示内容
     */
    private void showMsg(String msg){
        Toast.makeText(this,msg,Toast.LENGTH_SHORT).show();
    }

下面进行定位的初始化

③ 初始化定位

首先在MainActivity中新增两个成员变量

代码语言:txt
AI代码解释
复制
	//声明AMapLocationClient类对象
    public AMapLocationClient mLocationClient = null;
    //声明AMapLocationClientOption对象
    public AMapLocationClientOption mLocationOption = null;

然后新增一个initLocation()方法。

代码语言:txt
AI代码解释
复制
	/**
     * 初始化定位
     */
    private void initLocation() {
        //初始化定位
        mLocationClient = new AMapLocationClient(getApplicationContext());
        //设置定位回调监听
        mLocationClient.setLocationListener(this);
        //初始化AMapLocationClientOption对象
        mLocationOption = new AMapLocationClientOption();
        //设置定位模式为AMapLocationMode.Hight_Accuracy,高精度模式。
        mLocationOption.setLocationMode(AMapLocationClientOption.AMapLocationMode.Hight_Accuracy);
        //获取最近3s内精度最高的一次定位结果:
        //设置setOnceLocationLatest(boolean b)接口为true,启动定位时SDK会返回最近3s内精度最高的一次定位结果。如果设置其为true,setOnceLocation(boolean b)接口也会被设置为true,反之不会,默认为false。
        mLocationOption.setOnceLocationLatest(true);
        //设置是否返回地址信息(默认返回地址信息)
        mLocationOption.setNeedAddress(true);
        //设置定位请求超时时间,单位是毫秒,默认30000毫秒,建议超时时间不要低于8000毫秒。
        mLocationOption.setHttpTimeOut(20000);
        //关闭缓存机制,高精度定位会产生缓存。
        mLocationOption.setLocationCacheEnable(false);
        //给定位客户端对象设置定位参数
        mLocationClient.setLocationOption(mLocationOption);
    }

同样也要在onCreate方法中进行调用。

  注意initLocation()的调用在checkingAndroidVersion()之前,你可能会问为什么,那是因为你想定位,那么首先要先配置一些参数,配置好之后才能启动定位,否则会报错,常见的就是空指针异常。而检查版本之后当有权限时,就直接定位了,而把这个方法放到checkingAndroidVersion()里面去并不是很明智,因为你可能要调用两次,这样明显浪费资源,因此这就是为什么它要在checkingAndroidVersion()方法之前调用的原因。你想不到有这么多门道吧。

至于initLocation()方法本身我也没有什么好解释的,因为注释已经写的非常明白了,下面还有比较的最后一步,那就是定位的发起和定位结果的获取了。

④ 获取定位结果

首先要发起定位才能获取定位结果。

那么可以这样写。首先要在Android6.0以下直接启动定位。这次定位配置已经完毕,所以你完全不用担心会报错。

其次在权限允许之后进行定位。

现在定位已经发起了,那么定位结果怎么获取呢?不知道你有没有注意到我在initLocation()方法中的这行代码。

代码语言:txt
AI代码解释
复制
mLocationClient.setLocationListener(this);

注意到这里传入的是this,则表明通过当前Activity来实现定位结果的监听,那么可以通过实现AMapLocationListener,重写里面的onLocationChanged方法来获取定位结果。

onLocationChanged方法如下:

代码语言:txt
AI代码解释
复制
	/**
     * 接收异步返回的定位结果
     *
     * @param aMapLocation
     */
    @Override
    public void onLocationChanged(AMapLocation aMapLocation) {
        if (aMapLocation != null) {
            if (aMapLocation.getErrorCode() == 0) {
                //地址
                String address = aMapLocation.getAddress();
            } else {
                //定位失败时,可通过ErrCode(错误码)信息来确定失败的原因,errInfo是错误信息,详见错误码表。
                Log.e("AmapError", "location Error, ErrCode:"
                        + aMapLocation.getErrorCode() + ", errInfo:"
                        + aMapLocation.getErrorInfo());
            }
        }
    }

现在已经拿到了定位的结果了,为了更直观,所以需要显示在当前的Activity中,那么下面修改布局activity_main.xml。

代码语言:txt
AI代码解释
复制
<?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"
    android:gravity="center"
    tools:context=".MainActivity">

    <TextView
        android:id="@+id/tv_content"
        android:padding="20dp"
        android:textSize="18sp"
        android:textColor="#000"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Hello World!" />

</LinearLayout>

然后回到MainActivity,新增加一个成员变量。

代码语言:txt
AI代码解释
复制
	//内容
    private TextView tvContent;

然后在onCreate中,绑定控件id。它在initLocation()方法之前

代码语言:txt
AI代码解释
复制
	tvContent = findViewById(R.id.tv_content);

然后在onLocationChanged中显示

这个我解释一下这个用法

代码语言:txt
AI代码解释
复制
address == null ? "无地址" : address

这个是三目运算,address == null 表示这个条件是否成立,如果成立则返回 “无地址”,不成立则返回 address 。

它的意思和下面这个if else一样。

代码语言:txt
AI代码解释
复制
	if(address == null){
         tvContent.setText("无地址");
    }else {
         tvContent.setText(address);
    }

熟练了你就知道怎么使用了。它会比你使用if else 来更简洁,不是吗?

OK,写了这么多代码也该要运行一下了吧。

可以看到第一次打开时提醒你需要权限,然后进行授权,授权后获得定位显示定位数据,之前我关闭当前应用,再一次进入,此时已经有了权限,则直接进行定位,然后显示定位数据。如果要显示经纬度的话还可以再修改一下

代码语言:txt
AI代码解释
复制
				StringBuffer stringBuffer = new StringBuffer();
                stringBuffer.append("纬度:" + latitude + "\n");
                stringBuffer.append("经度:" + longitude + "\n");
                stringBuffer.append("地址:" + address + "\n");

                tvContent.setText(stringBuffer.toString());

再运行一下:

当然,获取定位数据的信息还不止这些,还有如下这些,感兴趣可以自行去尝试。

代码语言:txt
AI代码解释
复制
aMapLocation.getLocationType();//获取当前定位结果来源,如网络定位结果,详见定位类型表
aMapLocation.getAccuracy();//获取精度信息
aMapLocation.getCountry();//国家信息
aMapLocation.getProvince();//省信息
aMapLocation.getCity();//城市信息
aMapLocation.getDistrict();//城区信息
aMapLocation.getStreet();//街道信息
aMapLocation.getStreetNum();//街道门牌号信息
aMapLocation.getCityCode();//城市编码
aMapLocation.getAdCode();//地区编码
aMapLocation.getAoiName();//获取当前定位点的AOI信息
aMapLocation.getBuildingId();//获取当前室内定位的建筑物Id
aMapLocation.getFloor();//获取当前室内定位的楼层
aMapLocation.getGpsAccuracyStatus();//获取GPS的当前状态

还可以在获取信息之后,将定位给停止

代码语言:txt
AI代码解释
复制
	//停止定位后,本地定位服务并不会被销毁
    mLocationClient.stopLocation();

在页面销毁时同时销毁本地定位服务。

代码语言:txt
AI代码解释
复制
	@Override
    protected void onDestroy() {
        super.onDestroy();
        //销毁定位客户端,同时销毁本地定位服务。
        mLocationClient.onDestroy();
    }

下一篇

  Android 高德地图API(详细步骤+源码)二

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
8 条评论
热度
最新
大佬请问,按照上面步骤完成后makeproject出现Error:(109, 27) 错误: 未报告的异常错误Exception; 必须对其进行捕获或声明以便抛出和
大佬请问,按照上面步骤完成后makeproject出现Error:(109, 27) 错误: 未报告的异常错误Exception; 必须对其进行捕获或声明以便抛出和
11点赞举报
参考官方文档的最新使用说明
参考官方文档的最新使用说明
回复回复点赞举报
大佬请问一下,我跟你的步骤走到了第五步,地图也出来了,但为什么我的定位是美国的California Mountain View
大佬请问一下,我跟你的步骤走到了第五步,地图也出来了,但为什么我的定位是美国的California Mountain View
33点赞举报
用自己的手机去运行 真机怎么运行就百度一下吧
用自己的手机去运行 真机怎么运行就百度一下吧
回复回复点赞举报
用真机运行的话定位没有问题,但是虚拟机那边有什么解决方法吗?因为作者是直接就可以定位到所在位置
用真机运行的话定位没有问题,但是虚拟机那边有什么解决方法吗?因为作者是直接就可以定位到所在位置
回复回复点赞举报
查看全部3条回复
写得很好,感谢分享。最近正入门Android Studio,想着直接从简单项目入手没想到坑这么多,辛苦了。
写得很好,感谢分享。最近正入门Android Studio,想着直接从简单项目入手没想到坑这么多,辛苦了。
11点赞举报
感谢支持,加油!
感谢支持,加油!
回复回复点赞举报
推荐阅读
编辑精选文章
换一批
Android开发之高德地图实现定位
在应用开发中,地图开发是经常需要使用的“组件”,Google Map虽然有官方教程,无奈用不起来,原因你懂的~~那么国内比较出名的是就是百度地图和高德地图,由于个人喜好,所以选择了高德地图LBS,废话
YungFan
2018/04/24
2.7K0
Android开发之高德地图实现定位
Android Osmdroid + 天地图 (一)
  Osmdroid是一款完全开源的地图基本操作SDK,我们可以通过这个SDK去加一些地图API,比如腾讯、百度、高德、Google等等。天地图API也是一个地图服务提供商,不过之前还是提供Android的地图SDK的,现在就只提供了API服务了,那么为什么我们会想到这个天地图API呢?因为贫穷,贫穷使我们相遇,如果你是个人项目不上架的那种我推荐你使用高德、百度、腾讯3家,但如果你要上架的话就涉及到一个可能会被宰的问题了,这3家商业授权都是5万一年,那不是开玩笑的,如果你的应用不是主导地图的话,完全犯不上去使用,下面我们进入正文去使用天地图API,效果图如下所示:
晨曦_LLW
2024/11/28
1.3K0
Android Osmdroid + 天地图 (一)
Android 高德地图API(详细步骤+源码)四
首先要搞清楚什么是路线规划,比如有两个地点,A和B。从A到B有多种方路线和交通工具可以选择,这就是路线规划。
晨曦_LLW
2021/03/04
3.7K0
Android 高德地图API(详细步骤+源码)四
Android 高德地图API(详细步骤+源码)二
我删除了TextView,改变了外部的父布局,进入到MainActivity中。按照下图进行改变,你可以将无用的代码删除掉。
晨曦_LLW
2021/02/20
3.8K0
Android 高德地图API(详细步骤+源码)二
Android基于EasyPermission封装实现快速权限申请
本篇是 Android 快速开发框架 ardf的第三篇,将主要介绍在 Android 开发中对权限申请的封装使用,随着 Android 系统的不断升级,Google 对权限的使用越来越严格,用户也越来越重视权限的授权,开发中很多权限都需要动态申请并取得用户授权后才能正常使用,这就导致开发中对权限申请的操作越来越频繁,那么一个对权限申请的好的封装就能大大的节省开发者的工作量、提升开发效率。 在 ardf 中则是基于 Google 提供的 EasyPermission 库进行二次封装,将权限申请的复杂处理进行简化,使用时只需关注要申请的权限以及申请成功、申请失败后的业务处理即可。
loongwind
2023/01/01
2.1K0
Android基于EasyPermission封装实现快速权限申请
【Android 应用开发】Google 官方 EasyPermissions 权限申请库 ( 完整代码示例 | 申请权限 | 申请权限原理对话框 | 引导用户手动设置权限对话框 )
权限判定 : 首先要判定是否已经授权指定的权限数组 ; 调用 EasyPermissions.hasPermissions 方法 , 进行判定 ;
韩曙亮
2023/03/28
2.8K0
【Android 应用开发】Google 官方 EasyPermissions 权限申请库 ( 完整代码示例 | 申请权限 | 申请权限原理对话框 | 引导用户手动设置权限对话框 )
Android 百度地图SDK 自动定位、标记定位
如果是你满意的那样,我们就可以开始写了,首先创建一个名为MapDemo的项目。 打开AndroidManifest.xml,复制你的包名
晨曦_LLW
2022/05/10
3K1
Android 百度地图SDK 自动定位、标记定位
HarmonyOS实战:高德地图定位功能完整流程详解
地图定位功能相信很多人都用过,在鸿蒙的应用程序开发中,使用高德地图的定位功能变得十分常见,那么在鸿蒙中一次完整的地位功能怎么实现?如果定位失败了,能否获取前几次的定位呢?本篇文章带你实现一个完整的定位功能流程,建议点赞收藏!
IT小码哥
2025/05/24
2850
Android高德之旅(1)基础地图
这个系列之前在CSDN上就发了,不过刚开始就因为公司项目忙搁置了,现在转移阵地到简书,希望这次能坚持把这个系列做完。
大公爵
2018/09/05
9970
Android高德之旅(1)基础地图
百度地图SDK使用[通俗易懂]
在main 目录下新建jniLibs文件夹,并将百度地图给的sdk里剩下的so文件导入
全栈程序员站长
2022/09/07
6610
百度地图SDK使用[通俗易懂]
Android 低功耗蓝牙开发(扫描、连接)
  之间我写过蓝牙开发的文章,只不过是针对于经典蓝牙,可以理解为普通蓝牙,连接的对象是经典蓝牙,列如手机蓝牙、蓝牙耳机等设备。而也有读者说在学习低功耗蓝牙,因此就有了这篇文章,一方面是为了丰富蓝牙的使用,一方面也是为了帮助看我文章的读者,我会讲的很细,很多人也说我在记流水账,不过这不重要,重要的是你从流水账里学到了什么。
晨曦_LLW
2021/07/23
3.1K0
跟我学在高德地图——标注我的位置
这里使用的SDK为AMap_Location_V2.5.0_20160526.jar 没有接触过高德地图的同学,请参考 加载一张高德地图
全栈程序员站长
2022/08/25
1.3K0
跟我学在高德地图——标注我的位置
百度地图KEY的申请
点击"创建应用",进入创建AK页面,输入应用名称,将应用类型改为:“Android SDK”:
wust小吴
2019/07/05
1.6K0
百度地图KEY的申请
Android必知必会-带列表的地图POI周边搜索
版权声明:本文为[他叫自己Mr.张]的原创文章,转载请注明出处,否则禁止转载。 https://micro.blog.csdn.net/article/details/51519223
他叫自己MR.张
2019/07/01
1.7K0
Android Google Maps
  在国内你选择的SDK可以是高德、百度、腾讯等,但在国外,你首选肯定是谷歌,因此要进行Google地图的开发你首先要解决下面三个问题
晨曦_LLW
2024/11/28
1.2K0
Android Google Maps
Android 天气APP(一)开发准备
好天气APP(天气预报、空气质量、生活建议、灾害预警、出行建议、城市切换、城市搜索、世界国家/地区的城市、常用城市、背景更换、应用自动更新) (运用百度定位、百度地图与和风天气API制作)
晨曦_LLW
2020/09/25
1.3K0
Android  天气APP(一)开发准备
高德地图API INVALID_USER_SCODE问题以及keystore问题
首先进行第一个大问题,接入高德地图API时出现invalid_user_scode问题
fanfan
2022/05/07
11.4K0
高德地图API INVALID_USER_SCODE问题以及keystore问题
Android 百度地图定位
1.打开百度地图开放平台,找到功能与服务,选择定位,点击Android 定位SDK(v7.5),然后这就是官方文档了。 2.然后注册登陆,创建应用,填写之后得到一个AK,以前是AppKey,一个意思。
yechaoa
2022/06/10
1.1K0
Android 百度地图定位
【Android从零单排系列四十四】《聊一下Android数据权限permission》
小伙伴们,在前面的几篇文章中,我们谈到了Android开发中的几种数据存储方式及数据持久化,本文我们介绍下Android开发中的另一部分内容,权限管理。
再见孙悟空_
2023/07/17
1.5K0
推荐阅读
相关推荐
Android开发之高德地图实现定位
更多 >
领券
一站式MCP教程库,解锁AI应用新玩法
涵盖代码开发、场景应用、自动测试全流程,助你从零构建专属AI助手
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档