Android高德SDK 地图篇一:集成高德SDK

Android高德SDK 地图篇一:集成高德SDK

大家好,这是系列博文的第一篇: 系列博文会完成以下功能

  • 一. 地图篇:利用高德SDK实现滴滴出行的效

  • 二. 导航篇:利用高德SDK实现滴滴司机端的效果(自定义导航界面)

集成高德SDK

首先我们访问高德开发平台下载 SDK

下载地址 http://lbs.amap.com/api/android-sdk/download

下载地址.png

因为我们以后要使用

地图,导航,定位,逆地理编码(搜索功能SDK) 请选择这些下载 上图已经选好了。

建立工程集成SDK 配置build.gradle文件

我们新建一个Android工程。如下:

建立工程.png

建好以后 我们在这个工程上建立一个Module 请选择Android Library取名AmapLibrary

建立工程1.png
建立工程2.png

请选择Android Library 我们把高德SDK放在这个Library中

是为了以后方便移植。还要很多有优点。等会我跟大家说

好了。 我们的app工程和Library都弄好了。

解压你刚下载的高德SDK 解压后文件夹如下:

解压文件目录.png

拷贝这两个文件到AmapLibrary中libs目录下

如下:

拷贝库到libs中.png

然后需要在 AmapLibrary和app的build.gradle中都添加 添加在build.gradle文件下的

android标签下 如下:

sourceSets {
    main {
        jniLibs.srcDirs = ['libs']
    }
}

添加这个是因为 我们把armeabi库放在libs下面

然后在defaultConfig标签下添加

ndk {
    abiFilters 'armeabi'
}

build.gradle如下:

请注意app下的build.gradle也要添加


修改gradle文件名称.png

然后请将AmapLibrary中build.gradle中的

implementation fileTree(include: ['*.jar'], dir: 'libs')

替换成

api fileTree(include: ['*.jar'], dir: 'libs')

这样app才能使用AmapLibrary工程中的libs库(非常重要)

修改后的效果

dependencies {
    api fileTree(include: ['*.jar'], dir: 'libs')

    implementation 'com.android.support:appcompat-v7:26.1.0'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.1'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'
}

AndroidManifest的配置

在AmapLibrary工程下的AndroidManifest.xml文件

请注意我们只需要在AmapLibrary工程下的AndroidManifest.xml文件添加

不必在app工程下的AndroidManifest.xml文件下添加(因为打包的时候这些东西都会自动打包到一个AndroidManifest.xml文件中)

AmapLibrary的AndroidManifest.xml如下


<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.yisingle.amap.lib" >

    <!--地图需要的权限-->
    <!--允许程序打开网络套接字-->
    <uses-permission android:name="android.permission.INTERNET" />
    <!--允许程序设置内置sd卡的写权限-->
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <!--允许程序获取网络状态-->
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <!--允许程序访问WiFi网络信息-->
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <!--允许程序读写手机状态和身份-->
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    <!--允许程序访问CellID或WiFi热点来获取粗略的位置-->
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <!--用于访问GPS定位-->
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <!--用于获取wifi的获取权限,wifi信息会用来进行网络定位-->
    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
    <!--用于申请调用A-GPS模块-->
    <uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />
    <!--用于申请获取蓝牙信息进行室内定位-->
    <uses-permission android:name="android.permission.BLUETOOTH" />
    <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
    <!--这个权限用于允许程序在手机屏幕关闭后后台进程仍然运行-->
    <uses-permission android:name="android.permission.WAKE_LOCK" />
    <application>
        <meta-data
            android:name="com.amap.api.v2.apikey"
            android:value="需要在高德开放平台上申请" />
    </application>
</manifest>
<meta-data
            android:name="com.amap.api.v2.apikey"
            android:value="需要在高德开放平台上申请" />
这个东西需要到高德开放平台申请。接下我们完成这个工作就集成好的高德SDK了

申请高德SDK的apikey

申请高德SDK的apikey 需要两个关键的东西。

  • 一个是应用的包名
  • 一个是应用的打包签名文件的sh1

应用的包名:

在这个工程中 请注意我们拿app的包名 而不是AmapLirary的包名(谨记)

app的包名是:com.yisingle.study.map.one

如下图:


app的包名.png

签名文件的sh1

如下图:
在AndroidStudio中点击Build generate singed apk 生成签名


生成签名文件.png

然后点击下一步 出现如下图:

签名信息填写.png

点击ok

生成好了

在工程中建一个文件夹取名key 并把签名文件放到里面如下图:

签名位置.png

然后在app中的build.gradle中 配置打包使用生成的签名。

在app.的build.gradle文件下 android标签下 添加

signingConfigs {
    signinfo {
        keyAlias 'key0'
        keyPassword '123456789'
        storeFile file('../key/studyone.jks')
        storePassword '123456789'
    }
}

在buildTypes标签下修改代码如下:

buildTypes {
    release {
        minifyEnabled false
        signingConfig signingConfigs.signinfo
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
    debug {
        minifyEnabled false
        signingConfig signingConfigs.signinfo
      
    }
}

注意请把signingConfigs 放在 buildTypes的前面。

这样我们就使用生成的签名打包debug文件了。就是换了电脑工程也不会出现签名不对的问题。

最后app工程下的build.gradle的文件如下:

apply plugin: 'com.android.application'

android {
    compileSdkVersion 26
    defaultConfig {
        applicationId "com.yisingle.study.map.one"
        minSdkVersion 18
        targetSdkVersion 26
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
        ndk {
            abiFilters 'armeabi'
        }
    }

    signingConfigs {
        signinfo {
            keyAlias 'key0'
            keyPassword '123456789'
            storeFile file('../key/studyone.jks')
            storePassword '123456789'
        }
    }
    buildTypes {
        release {
            minifyEnabled false
            signingConfig signingConfigs.signinfo
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
        debug {
            minifyEnabled false
            signingConfig signingConfigs.signinfo

        }
    }
    sourceSets {
        main {
            jniLibs.srcDirs = ['libs']
        }
    }

}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'com.android.support:appcompat-v7:26.1.0'
    implementation 'com.android.support.constraint:constraint-layout:1.0.2'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.1'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'
}

通过 命令 获取签名文件 命令在window下也可以用哈
keytool -v -list -keystore studyone.jks


获取签名文件的SH1.png
签名获取sh1成功.png

复制:

38:86:88:CF:78:05:5C:C4:F5:D5:B4:0A:3C:24:E9:11:3A:58:12:85

上面就是我的签名文件的SHA1

好了

注册高德开发平台账号

这里我就不详细介绍了 请大家自己看高德开发平台注册流程吧 很简单

进入应用管理界面 点击应用管理 点击创建新应用

创建新应用.png

然后会弹出下面的界面 随便填写就可以了

创建界面.png

创建好后点击添加新Key

点击添加Key.png

然后输入sha1 和包名 点击提交

输入包名和sha1的值.png

然后我们会得到key


高德签名显示位置.png

填写到AmapLirary工程下的

<meta-data
    android:name="com.amap.api.v2.apikey"
    android:value="7a91a3b1ccdf395223bcf4f511d5697c" />

验证

好了我们来验证一下是否配置成功了。

在app的MainActivity界面写如下的代码

package com.yisingle.study.map.one;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.TextView;

import com.amap.api.services.core.LatLonPoint;
import com.amap.api.services.route.BusRouteResult;
import com.amap.api.services.route.DriveRouteResult;
import com.amap.api.services.route.RideRouteResult;
import com.amap.api.services.route.RouteSearch;
import com.amap.api.services.route.WalkRouteResult;
import com.yisingle.amap.lib.GaoDeErrorUtils;

public class MainActivity extends AppCompatActivity {

    private RouteSearch routeSearch;

    private TextView tvInfo;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        tvInfo = findViewById(R.id.tvInfo);
        routeSearch = new RouteSearch(this);


        routeSearch.setRouteSearchListener(new RouteSearch.OnRouteSearchListener() {
            @Override
            public void onBusRouteSearched(BusRouteResult busRouteResult, int i) {

            }

            @Override
            public void onDriveRouteSearched(DriveRouteResult driveRouteResult, int i) {

                //验证是否成功
                tvInfo.setText(GaoDeErrorUtils.getErrorInfo(i));

            }

            @Override
            public void onWalkRouteSearched(WalkRouteResult walkRouteResult, int i) {

            }

            @Override
            public void onRideRouteSearched(RideRouteResult rideRouteResult, int i) {

            }
        });
        startConfimGaode();

    }

    public void startConfimGaode() {
        LatLonPoint from = new LatLonPoint(30.537107, 104.06951);
        LatLonPoint to = new LatLonPoint(30.657349, 104.065837);
        RouteSearch.FromAndTo fromAndTo = new RouteSearch.FromAndTo(from, to);
        RouteSearch.DriveRouteQuery query = new RouteSearch.DriveRouteQuery(fromAndTo, RouteSearch.DRIVING_SINGLE_SHORTEST, null, null, "");
        routeSearch.calculateDriveRouteAsyn(query);
        tvInfo.setText("使用地图的路径规划中");
    }


    @Override
    protected void onDestroy() {
        super.onDestroy();
    }

    public void test(View view) {
        startConfimGaode();
    }
}

好了 如果显示请求正常服务调用正常,有结果返回 code 为1000那么 就代表我们集成成功了。

代码下载地址点我

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,185评论 6 503
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,652评论 3 393
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,524评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,339评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,387评论 6 391
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,287评论 1 301
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,130评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,985评论 0 275
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,420评论 1 313
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,617评论 3 334
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,779评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,477评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,088评论 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,716评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,857评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,876评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,700评论 2 354

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 172,098评论 25 707
  • 这一章主要针对项目中可以用到的一些实用功能来介绍Android Gradle,比如如何隐藏我们的证书文件,降低风险...
    acc8226阅读 7,610评论 3 25
  • 转载注明出处:http://www.jianshu.com/p/5255b100930e 0. 前言 完全由个人翻...
    王三的猫阿德阅读 2,516评论 0 4
  • 每个男人心中,都有一个三国梦! 元末明初,一本泛着璀璨光芒的大型历史、军士、地理型著作――《三国演义》诞生。从它问...
    骑鲸_阅读 980评论 7 4
  • 知识是有用信息的集合,好奇心,是我们获取知识的前提。 今天,上完小古文课,我看到谢瞳小朋友拿出了棋盘,下节是围棋课...
    红雲说口才阅读 142评论 0 0