企業(yè)網(wǎng)站建設(shè)服務(wù)熱線搜狗搜索引擎網(wǎng)頁
文章目錄
- 一、前置知識:
- 二、學(xué)習(xí)目標(biāo)
- 三、學(xué)習(xí)資料
- 四、操作過程
- 1、創(chuàng)建空項(xiàng)目
- 2、高德 SDK 環(huán)境接入
- 2.1 獲取高德 key
- 2.2下載 SDK 并導(dǎo)入
- 2.2.1、下載SDK 文件
- 2.2.2、SDK 導(dǎo)入項(xiàng)目
- 2.2.3、清單文件配置
- 2.2.4、隱私權(quán)限
- 3、顯示地圖
一、前置知識:
1、Java 基礎(chǔ)語法
2、Android 一周(3-5天)入門即可,學(xué)完基礎(chǔ)控件、Activity 跳轉(zhuǎn)等即可,不用深入學(xué)習(xí)
二、學(xué)習(xí)目標(biāo)
1、高德地圖 SDK 接入App 項(xiàng)目,環(huán)境部署成功,沒有報(bào)錯
2、調(diào)用第一個基礎(chǔ)功能——顯示地圖,地圖在真機(jī)上運(yùn)行成功
三、學(xué)習(xí)資料
操作過程全部參考這個博客——https://blog.csdn.net/qq_38436214/article/details/111628025
高德 SDK Key的獲取頁面—— https://console.amap.com/dev/index
高德 SDK下載頁——https://lbs.amap.com/api/android-sdk/download
創(chuàng)建工程及地圖 SDK 功能——https://lbs.amap.com/api/android-sdk/guide/create-project/android-studio-create-project
舊版 SDK 功能文檔—— https://developer.amap.com/demo/sdk/place-choose#ios
SDK接口文檔——https://a.amap.com/lbs/static/unzip/Android_Map_Doc/index.html
四、操作過程
1、創(chuàng)建空項(xiàng)目
(1)創(chuàng)建項(xiàng)目 選擇 Empty Views Activity
(2)給項(xiàng)目起個名字、改一下包名,android 版本合適就行(都行),點(diǎn)擊 finish
(3)此時生成一個初始的 MainActivity 頁面,已經(jīng)構(gòu)建好了一個初始的空項(xiàng)目,接下來我們要開始接入地圖SDK環(huán)境了,記住我們現(xiàn)在的包名。
2、高德 SDK 環(huán)境接入
入門指南-Android 定位SDK | 高德地圖API
這是一個官方的參考文檔,可以看一看了解一下整體的過程,中間還有一些具體的操作過程需要說明
2.1 獲取高德 key
獲取Key-創(chuàng)建工程-開發(fā)指南-Android 定位SDK | 高德地圖API
可以按照這個過程操作一下。中間有一個獲取 安全碼 SHA1 的過程,如果初學(xué)Android的話,可能不懂這個概念,可以看一個 Android 程序打包 APK 的視頻,了解一下 SHA1 的概念以及創(chuàng)建生成的過程。
androidstudio打包apk_嗶哩嗶哩_bilibili
接下來按照我的步驟,可以拿到具體的 key
1、進(jìn)入到高德控制臺,點(diǎn)擊應(yīng)用管理-> 我的應(yīng)用 -> 創(chuàng)建新應(yīng)用
輸入隨便起的名稱,輸入對應(yīng)的類型即可
2、點(diǎn)擊 添加key,彈出輸入框
- key 名稱隨便輸入一個
- 服務(wù)平臺選 Android 平臺
- 安全碼填入SHA1 密鑰
發(fā)布版安全碼怎么獲取?
Android Studio 中點(diǎn)擊 settings
點(diǎn)擊 Experimental,取消勾選,此時右側(cè)的gradle就會出現(xiàn)完整的功能
打開右側(cè)的gradle ,點(diǎn)擊 Tasks -> android -> signingReport,可以生成默認(rèn)的簽名算法文件,顯示SHA1 安全密鑰
輸入正確的包名、SHA1安全碼,點(diǎn)擊確認(rèn)即可。
此時就能在 key的列表界面看到我們 生成的key了,等會要用到
2.2下載 SDK 并導(dǎo)入
相關(guān)下載-Android 定位SDK | 高德地圖API
2.2.1、下載SDK 文件
我們可以去高德地圖的SDK下載頁進(jìn)行選擇,可以選一個 3D 地圖合包,里面包含了3D地圖SDK、搜索SDK、定位SDK,相對來說比較的全面
下載好之后解壓就是一個 jar包和 幾個so文件
2.2.2、SDK 導(dǎo)入項(xiàng)目
復(fù)制這些文件到你的工程的libs下,如果沒有找到libs目錄,就將項(xiàng)目結(jié)構(gòu)從Android切換到Project就能找到了,
放進(jìn)去之后在你的 app 的 build.gradle 中的 dependencies{} 閉包中添加這樣一句代碼,表示導(dǎo)入文件夾
implementation fileTree(dir: 'libs', include: ['*.jar'])
點(diǎn)擊 sysn 同步一下,我們會發(fā)現(xiàn),lib文件夾底下的jar包 能夠打開了。如果沒有發(fā)生變化,可以右鍵點(diǎn)擊這個 jar 包,點(diǎn)擊add as library,導(dǎo)入到這個項(xiàng)目中
然后在 app下的 build.gradle 文件中添加配置代碼 , 在 android 閉包中再放入下列代碼,告訴gradle jar包在libs目錄下
sourceSets {main{jniLibs.srcDirs = ['libs']}}
2.2.3、清單文件配置
打開 AndroidManiFest.xml,在 application 標(biāo)簽中添加定位service組件信息
<!--定位service--><service android:name="com.amap.api.location.APSService"/>
在 manifest 標(biāo)簽下 放入對應(yīng)功能提供的接口使用權(quán)限 permission
<!--用于訪問網(wǎng)絡(luò),網(wǎng)絡(luò)定位需要上網(wǎng)-->
<uses-permission android:name="android.permission.INTERNET" />
<!--用于讀取手機(jī)當(dāng)前的狀態(tài)-->
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<!--用于寫入緩存數(shù)據(jù)到擴(kuò)展存儲卡-->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<!--用于申請調(diào)用A-GPS模塊-->
<uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />
<!--用于進(jìn)行網(wǎng)絡(luò)定位-->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<!--用于訪問GPS定位-->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<!--用于獲取運(yùn)營商信息,用于支持提供運(yùn)營商信息相關(guān)的接口-->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<!--用于訪問wifi網(wǎng)絡(luò)信息,wifi信息會用于進(jìn)行網(wǎng)絡(luò)定位-->
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<!--用于獲取wifi的獲取權(quán)限,wifi信息會用來進(jìn)行網(wǎng)絡(luò)定位-->
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
在 application 標(biāo)簽下放入對應(yīng)的 key
<!--設(shè)置高德Key-->
<meta-data android:name="com.amap.api.v2.apikey" android:value="你自己申請的key值,自己去復(fù)制"/>
2.2.4、隱私權(quán)限
在調(diào)用 SDK 接口之前都要更新 隱私合規(guī)借口,updatePrivacyShow()\ updatePrivacyAgree()
我們在使用高德的定位、地圖、搜索功能時,需要先同意隱私政策,不通過則無法使用,一般是通過 App 啟動之后出現(xiàn)一個彈窗,彈窗中你告知用戶那些信息被采集,用到了那些 SDK ,作用是什么。并且要有隱私政策的鏈接地址,很麻煩。
這里我們就簡單一些,在 com.ttit.map 包下新建一個 MapApplication 類,里面的代碼如下:
public class MapApplication extends Application {@Overridepublic void onCreate() {super.onCreate();Context context = this;//定位隱私政策同意AMapLocationClient.updatePrivacyShow(context,true,true);AMapLocationClient.updatePrivacyAgree(context,true);//地圖隱私政策同意MapsInitializer.updatePrivacyShow(context,true,true);MapsInitializer.updatePrivacyAgree(context,true);//搜索隱私政策同意ServiceSettings.updatePrivacyShow(context,true,true);ServiceSettings.updatePrivacyAgree(context,true);}
}
我們在項(xiàng)目初始化的時候就通過這些隱私政策,(這不是最終的做法,如果你上架應(yīng)用的時候這么做就會被駁回)。為了使這個MapApplication生效,我們需要在AndroidManifest.xml中配置它。比較簡單,如下圖所示。
接下來我們就可以在自己的 MainActivity 中進(jìn)行開發(fā)代碼。
3、顯示地圖
顯示地圖-創(chuàng)建地圖-開發(fā)指南-Android 地圖SDK | 高德地圖API
參照 SDK 入手文檔,我們先來調(diào)用 顯示地圖的接口進(jìn)行使用
在 MainActivity.xml 中配置一個 標(biāo)簽的對象,加上id
<?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"tools:context=".MainActivity"><com.amap.api.maps.MapViewandroid:id="@+id/map"android:layout_width="match_parent"android:layout_height="match_parent"></com.amap.api.maps.MapView></LinearLayout>
在 MainActivity.java 文件中 獲取mapView,重寫 onCreate 進(jìn)行展示地圖
public class MainActivity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);MapView mapView = findViewById(R.id.map);mapView.onCreate(savedInstanceState);}
}
點(diǎn)擊運(yùn)行項(xiàng)目,在真機(jī)上進(jìn)行運(yùn)行app,查看效果