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

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

大家好碰缔,這是系列博文的第一篇: 系列博文會完成以下功能

  • 一. 地圖篇:利用高德SDK實現(xiàn)滴滴出行的效

  • 二. 導航篇:利用高德SDK實現(xiàn)滴滴司機端的效果(自定義導航界面)

集成高德SDK

首先我們訪問高德開發(fā)平臺下載 SDK

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

下載地址.png

因為我們以后要使用

地圖,導航,定位,逆地理編碼(搜索功能SDK) 請選擇這些下載 上圖已經(jīng)選好了。

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

我們新建一個Android工程技即。如下:

建立工程.png

建好以后 我們在這個工程上建立一個Module 請選擇Android Library取名AmapLibrary

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

請選擇Android Library 我們把高德SDK放在這個Library中

是為了以后方便移植。還要很多有優(yōu)點。等會我跟大家說

好了。 我們的app工程和Library都弄好了击蹲。

解壓你剛下載的高德SDK 解壓后文件夾如下:

解壓文件目錄.png

拷貝這兩個文件到AmapLibrary中l(wèi)ibs目錄下

如下:

拷貝庫到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" >

    <!--地圖需要的權限-->
    <!--允許程序打開網(wǎng)絡套接字-->
    <uses-permission android:name="android.permission.INTERNET" />
    <!--允許程序設置內(nèi)置sd卡的寫權限-->
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <!--允許程序獲取網(wǎng)絡狀態(tài)-->
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <!--允許程序訪問WiFi網(wǎng)絡信息-->
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <!--允許程序讀寫手機狀態(tài)和身份-->
    <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信息會用來進行網(wǎng)絡定位-->
    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
    <!--用于申請調(diào)用A-GPS模塊-->
    <uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />
    <!--用于申請獲取藍牙信息進行室內(nèi)定位-->
    <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

然后點擊下一步 出現(xiàn)如下圖:

簽名信息填寫.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文件了世曾。就是換了電腦工程也不會出現(xiàn)簽名不對的問題。

最后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

好了

注冊高德開發(fā)平臺賬號

這里我就不詳細介紹了 請大家自己看高德開發(fā)平臺注冊流程吧 很簡單

進入應用管理界面 點擊應用管理 點擊創(chuàng)建新應用

創(chuàng)建新應用.png

然后會彈出下面的界面 隨便填寫就可以了

創(chuàng)建界面.png

創(chuàng)建好后點擊添加新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("使用地圖的路徑規(guī)劃中");
    }


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

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

好了 如果顯示請求正常服務調(diào)用正常轮听,有結(jié)果返回 code 為1000那么 就代表我們集成成功了。

代碼下載地址點我

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末岭佳,一起剝皮案震驚了整個濱河市血巍,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌珊随,老刑警劉巖述寡,帶你破解...
    沈念sama閱讀 222,378評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件柿隙,死亡現(xiàn)場離奇詭異,居然都是意外死亡鲫凶,警方通過查閱死者的電腦和手機禀崖,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,970評論 3 399
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來螟炫,“玉大人波附,你說我怎么就攤上這事≈缱辏” “怎么了掸屡?”我有些...
    開封第一講書人閱讀 168,983評論 0 362
  • 文/不壞的土叔 我叫張陵,是天一觀的道長然评。 經(jīng)常有香客問我仅财,道長,這世上最難降的妖魔是什么碗淌? 我笑而不...
    開封第一講書人閱讀 59,938評論 1 299
  • 正文 為了忘掉前任盏求,我火速辦了婚禮,結(jié)果婚禮上亿眠,老公的妹妹穿的比我還像新娘风喇。我一直安慰自己,他們只是感情好缕探,可當我...
    茶點故事閱讀 68,955評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著还蹲,像睡著了一般爹耗。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上谜喊,一...
    開封第一講書人閱讀 52,549評論 1 312
  • 那天潭兽,我揣著相機與錄音,去河邊找鬼斗遏。 笑死山卦,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的诵次。 我是一名探鬼主播账蓉,決...
    沈念sama閱讀 41,063評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼逾一!你這毒婦竟也來了铸本?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,991評論 0 277
  • 序言:老撾萬榮一對情侶失蹤遵堵,失蹤者是張志新(化名)和其女友劉穎箱玷,沒想到半個月后怨规,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,522評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡锡足,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,604評論 3 342
  • 正文 我和宋清朗相戀三年波丰,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片舶得。...
    茶點故事閱讀 40,742評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡掰烟,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出扩灯,到底是詐尸還是另有隱情媚赖,我是刑警寧澤,帶...
    沈念sama閱讀 36,413評論 5 351
  • 正文 年R本政府宣布珠插,位于F島的核電站惧磺,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏捻撑。R本人自食惡果不足惜磨隘,卻給世界環(huán)境...
    茶點故事閱讀 42,094評論 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望顾患。 院中可真熱鬧番捂,春花似錦、人聲如沸江解。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,572評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽犁河。三九已至鳖枕,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間桨螺,已是汗流浹背宾符。 一陣腳步聲響...
    開封第一講書人閱讀 33,671評論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留灭翔,地道東北人魏烫。 一個月前我還...
    沈念sama閱讀 49,159評論 3 378
  • 正文 我出身青樓,卻偏偏與公主長得像肝箱,于是被迫代替她去往敵國和親哄褒。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,747評論 2 361

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,317評論 25 707
  • 這一章主要針對項目中可以用到的一些實用功能來介紹Android Gradle煌张,比如如何隱藏我們的證書文件读处,降低風險...
    acc8226閱讀 7,644評論 3 25
  • 轉(zhuǎn)載注明出處:http://www.reibang.com/p/5255b100930e 0. 前言 完全由個人翻...
    王三的貓阿德閱讀 2,521評論 0 4
  • 每個男人心中罚舱,都有一個三國夢井辜! 元末明初,一本泛著璀璨光芒的大型歷史管闷、軍士粥脚、地理型著作――《三國演義》誕生。從它問...
    騎鯨_閱讀 983評論 7 4
  • 知識是有用信息的集合包个,好奇心刷允,是我們獲取知識的前提。 今天碧囊,上完小古文課树灶,我看到謝瞳小朋友拿出了棋盤,下節(jié)是圍棋課...
    紅雲(yún)說口才閱讀 143評論 0 0