移動地理資訊系統學習筆記

wsqstar發表於2018-09-28

移動地理資訊系統學習筆記

這是我的移動地理資訊系統課程學習筆記,授課教師:楊先生。

本人聯絡郵箱(2020年前有效):wsq@cug.edu.cn

github:wsqstar

在閱讀參考本筆記之前,請明確本手冊學習環境與你自己學習環境的差異。

變數名稱 內容
基礎無關變數 win10系統,i7處理器6700HQ
基礎相關變數 java10、android studio 3.0.1(2018年9月,最新版)
百度變數 百度lbs服務版本:2018年9月特性:ak同時要求開發版(debug)SHA1以及釋出版(release)SHA1。(不提交兩個的話會出錯,2017年還僅要求一個SHA1)

更新更快的有道雲筆記: http://note.youdao.com/noteshare?id=df5b1feb9470e13d6f5addfd4b446e39&sub=B4906B8DDCFA4DBE890CB62C4337A23D

以下正文:·


首先是環境的配置:

注意:部分使用的函式出現變化。後文有專門介紹變化的函式專題。

步驟

簡化步驟示意

配置jdk並檢查 → 配置IDE以及模擬器 →新建project並獲取SHA1release以及debug版本 →例行配置,包括解決依賴包衝突等→開始程式設計

其中配置jdk並檢查 → 配置IDE以及模擬器永久性配置,在一個電腦上配置好就ok。 每次新建專案,尤其是關於使用百度LBS服務的,需要不一樣的AK。

作業與實習

第一次作業 獲取百度地圖

要求:
使用百度sdk,在手機上顯示百度地圖,做到開啟就是天安們廣場即可。

步驟記錄與反思

待續

第二次作業 獲取地址

要求:
使用百度sdk,在手機上顯示百度地圖,做到開啟就是天安們廣場即可。

步驟記錄與反思

目前已經完成基本操作,根據網路的例子,完成了基本的Locater,但是感覺不如按照PPT上來一個,於是就有了Locater2的實施。

  • 登陸API控制檯,配置應用
  • CMD獲取開發SHA1,新建Project選擇Generate Signed APK,從而獲取釋出SHA1,在MainFest.xml裡面獲取包名,共同配置好金鑰。
  • 百度地圖相關下載好庫檔案,放到相應資料夾中

第三次作業 單車APP iBike

要求:
完成所有工程

主要流程

新建帶有側邊欄的project →新建login.xml並對drawable圖片、color顏色等進行配置→實現通訊並且完成註冊專案→→開始程式設計

單車APP重要參考&入門筆記

參考案例:Android實現註冊登入頭像上傳等功能常規開發(Android端,伺服器端開發例項)https://blog.csdn.net/w690333243/article/details/72875159

參考書籍:《Android權威程式設計指南(第2版)》[美] Billl Phillips 等著 王明發 譯

零散筆記

Android應用屬於典型的事件驅動型別。為響應某個時間而建立的物件叫監聽器(listener)。 監聽器是實現特定監聽器介面的物件,用來監聽某類事件的發生。

關鍵知識點(Java語言基礎)

匿名內部類,監聽器,介面,硬編碼(通常出現在DEMO上)

android:pathData

在XML檔案中的,繪製向量影像,由字母數字以及逗號空格組成。

配置xml:url is not registered

按照提示來,新增相應的

Android 動態新增布局 LinerLayout 和RelativeLayout

https://www.jianshu.com/p/e9915eec57b3

Drawable

AndroidStudio 新建不同的Drawable資料夾

https://www.cnblogs.com/yunfang/p/6600877.html

Android 影像繪製之 Drawable

https://www.jianshu.com/p/4cd87e3c43d6

android(drawable資料夾)圖片適配

https://blog.csdn.net/xuaho0907/article/details/72848520

關於android:id=”@+id/xx”的理解

https://www.cnblogs.com/Jasxu/p/android_id.html

https://blog.csdn.net/qq_32623363/article/details/77198546

android:id屬性的內容比較特別:

例如:@+id/height

“@”符號是提示XML解析器應該把後面的字串解析成識別符號號

“+”符號代表將新增一個識別符號號。

“id/”表示這個識別符號號回被歸類在“id”下面。

“height”是這個介面主見的“android:id”。

以後的程式中,會使用“R.id.height”來取得這個介面元件。因此”@+id/height”的意思是我們在此建立了名為“height”的識別符號,可以通過這個識別符號來控制所對應的介面元件,“R”類會自動配置一個地址給這個介面元件。“R”類的內容,這可以通過檢視“R.java”檔案得知。

@string/

https://zhidao.baidu.com/question/466419608.html

android:text="@string/bn1"

這句話指的是這個控制元件的文字值是bn1變數的值

string指的是res->values->strings這個位置。

所以最終解釋為這個控制元件的文字值,為res->values->strings中變數bn1的值。

<string name="bn1">註冊</string>

也就是bn1代表註冊

配置顏色檔案color.xml

https://blog.csdn.net/wzygis/article/details/40585219

<?xml version="1.0" encoding="utf-8" ?>
<resources>
<color name="white">#FFFFFF</color><!--白色 -->
<color name="ivory">#FFFFF0</color><!--象牙色 -->
<color name="lightyellow">#FFFFE0</color><!--亮黃色-->
<color name="yellow">#FFFF00</color><!--黃色 -->
<color name="snow">#FFFAFA</color><!--雪白色 -->
<color name="floralwhite">#FFFAF0</color><!--花白色 -->
<color name="lemonchiffon">#FFFACD</color><!--檸檬綢色 -->
<color name="cornsilk">#FFF8DC</color><!--米綢色 -->
<color name="seashell">#FFF5EE</color><!--海貝色 -->
<color name="lavenderblush">#FFF0F5</color><!--淡紫紅 -->
<color name="papayawhip">#FFEFD5</color><!--番木色 -->
<color name="blanchedalmond">#FFEBCD</color><!--白杏色 -->
<color name="mistyrose">#FFE4E1</color><!--淺玫瑰色 -->
<color name="bisque">#FFE4C4</color><!--桔黃色 -->
<color name="moccasin">#FFE4B5</color><!--鹿皮色 -->
<color name="navajowhite">#FFDEAD</color><!--納瓦白 -->
<color name="peachpuff">#FFDAB9</color><!--桃色 -->
<color name="gold">#FFD700</color><!--金色 -->
<color name="pink">#FFC0CB</color><!--粉紅色 -->
<color name="lightpink">#FFB6C1</color><!--亮粉紅色-->
<color name="orange">#FFA500</color><!--橙色 -->
<color name="lightsalmon">#FFA07A</color><!--亮肉色 -->
<color name="darkorange">#FF8C00</color><!--暗桔黃色 -->
<color name="coral">#FF7F50</color><!--珊瑚色 -->
<color name="hotpink">#FF69B4</color><!--熱粉紅色 -->
<color name="tomato">#FF6347</color><!--蕃茄色 -->
<color name="orangered">#FF4500</color><!--紅橙色 -->
<color name="deeppink">#FF1493</color><!--深粉紅色 -->
<color name="fuchsia">#FF00FF</color><!--紫紅色 -->
<color name="magenta">#FF00FF</color><!--紅紫色 -->
<color name="red">#FF0000</color><!--紅色 -->
<color name="oldlace">#FDF5E6</color><!--老花色 -->
<color name="lightgoldenrodyellow">#FAFAD2</color><!--亮金黃色 -->
<color name="linen">#FAF0E6</color><!--亞麻色 -->
<color name="antiquewhite">#FAEBD7</color><!--古董白 -->
<color name="salmon">#FA8072</color><!--鮮肉色 -->
<color name="ghostwhite">#F8F8FF</color><!--幽靈白 -->
<color name="mintcream">#F5FFFA</color><!--薄荷色 -->
<color name="whitesmoke">#F5F5F5</color><!--煙白色 -->
<color name="beige">#F5F5DC</color><!--米色 -->
<color name="wheat">#F5DEB3</color><!--淺黃色 -->
<color name="sandybrown">#F4A460</color><!--沙褐色-->
<color name="azure">#F0FFFF</color><!--天藍色 -->
<color name="honeydew">#F0FFF0</color><!--蜜色 -->
<color name="aliceblue">#F0F8FF</color><!--艾利斯蘭 -->
<color name="khaki">#F0E68C</color><!--黃褐色 -->
<color name="lightcoral">#F08080</color><!--亮珊瑚色 -->
<color name="palegoldenrod">#EEE8AA</color><!--蒼麒麟色 -->
<color name="violet">#EE82EE</color><!--紫羅蘭色 -->
<color name="darksalmon">#E9967A</color><!--暗肉色 -->
<color name="lavender">#E6E6FA</color><!--淡紫色 -->
<color name="lightcyan">#E0FFFF</color><!--亮青色 -->
<color name="burlywood">#DEB887</color><!--實木色 -->
<color name="plum">#DDA0DD</color><!--洋李色 -->
<color name="gainsboro">#DCDCDC</color><!--淡灰色 -->
<color name="crimson">#DC143C</color><!--暗深紅色 -->
<color name="palevioletred">#DB7093</color><!--蒼紫羅蘭色 -->
<color name="goldenrod">#DAA520</color><!--金麒麟色 -->
<color name="orchid">#DA70D6</color><!--淡紫色 -->
<color name="thistle">#D8BFD8</color><!--薊色 -->
<color name="lightgray">#D3D3D3</color><!--亮灰色 -->
<color name="lightgrey">#D3D3D3</color><!--亮灰色 -->
<color name="tan">#D2B48C</color><!--茶色 -->
<color name="chocolate">#D2691E</color><!--巧可力色 -->
<color name="peru">#CD853F</color><!--祕魯色 -->
<color name="indianred">#CD5C5C</color><!--印第安紅 -->
<color name="mediumvioletred">#C71585</color><!--中紫羅蘭色 -->
<color name="silver">#C0C0C0</color><!--銀色 -->
<color name="darkkhaki">#BDB76B</color><!--暗黃褐色 -->
<color name="rosybrown">#BC8F8F</color> <!--褐玫瑰紅 -->
<color name="mediumorchid">#BA55D3</color><!--中粉紫色 -->
<color name="darkgoldenrod">#B8860B</color><!--暗金黃色 -->
<color name="firebrick">#B22222</color><!--火磚色 -->
<color name="powderblue">#B0E0E6</color><!--粉藍色 -->
<color name="lightsteelblue">#B0C4DE</color><!--亮鋼蘭色 -->
<color name="paleturquoise">#AFEEEE</color><!--蒼寶石綠 -->
<color name="greenyellow">#ADFF2F</color><!--黃綠色 -->
<color name="lightblue">#ADD8E6</color><!--亮藍色 -->
<color name="darkgray">#A9A9A9</color><!--暗灰色 -->
<color name="darkgrey">#A9A9A9</color><!--暗灰色 -->
<color name="brown">#A52A2A</color><!--褐色 -->
<color name="sienna">#A0522D</color><!--赭色 -->
<color name="darkorchid">#9932CC</color><!--暗紫色-->
<color name="palegreen">#98FB98</color><!--蒼綠色 -->
<color name="darkviolet">#9400D3</color><!--暗紫羅蘭色 -->
<color name="mediumpurple">#9370DB</color><!--中紫色 -->
<color name="lightgreen">#90EE90</color><!--亮綠色 -->
<color name="darkseagreen">#8FBC8F</color><!--暗海蘭色 -->
<color name="saddlebrown">#8B4513</color><!--重褐色 -->
<color name="darkmagenta">#8B008B</color><!--暗洋紅 -->
<color name="darkred">#8B0000</color><!--暗紅色 -->
<color name="blueviolet">#8A2BE2</color><!--紫羅蘭藍色 -->
<color name="lightskyblue">#87CEFA</color><!--亮天藍色 -->
<color name="skyblue">#87CEEB</color><!--天藍色 -->
<color name="gray">#808080</color><!--灰色 -->
<color name="grey">#808080</color><!--灰色 -->
<color name="olive">#808000</color><!--橄欖色 -->
<color name="purple">#800080</color><!--紫色 -->
<color name="maroon">#800000</color><!--粟色 -->
<color name="aquamarine">#7FFFD4</color><!--碧綠色-->
<color name="chartreuse">#7FFF00</color><!--黃綠色 -->
<color name="lawngreen">#7CFC00</color><!--草綠色 -->
<color name="mediumslateblue">#7B68EE</color><!--中暗藍色 -->
<color name="lightslategray">#778899</color><!--亮藍灰 -->
<color name="lightslategrey">#778899</color><!--亮藍灰 -->
<color name="slategray">#708090</color><!--灰石色 -->
<color name="slategrey">#708090</color><!--灰石色 -->
<color name="olivedrab">#6B8E23</color><!--深綠褐色 -->
<color name="slateblue">#6A5ACD</color><!--石藍色 -->
<color name="dimgray">#696969</color><!--暗灰色 -->
<color name="dimgrey">#696969</color><!--暗灰色 -->
<color name="mediumaquamarine">#66CDAA</color><!--中綠色 -->
<color name="cornflowerblue">#6495ED</color><!--菊蘭色 -->
<color name="cadetblue">#5F9EA0</color><!--軍蘭色 -->
<color name="darkolivegreen">#556B2F</color><!--暗橄欖綠  -->
<color name="indigo">#4B0082</color><!--靛青色 -->
<color name="mediumturquoise">#48D1CC</color><!--中綠寶石 -->
<color name="darkslateblue">#483D8B</color><!--暗灰藍色 -->
<color name="steelblue">#4682B4</color><!--鋼蘭色 -->
<color name="royalblue">#4169E1</color><!--皇家藍 -->
<color name="turquoise">#40E0D0</color><!--青綠色 -->
<color name="mediumseagreen">#3CB371</color><!--中海藍 -->
<color name="limegreen">#32CD32</color><!--橙綠色 -->
<color name="darkslategray">#2F4F4F</color><!--暗瓦灰色 -->
<color name="darkslategrey">#2F4F4F</color><!--暗瓦灰色 -->
<color name="seagreen">#2E8B57</color><!--海綠色 -->
<color name="forestgreen">#228B22</color><!--森林綠 -->
<color name="lightseagreen">#20B2AA</color><!--亮海藍色 -->
<color name="dodgerblue">#1E90FF</color><!--閃蘭色 -->
<color name="midnightblue">#191970</color><!--中灰蘭色 -->
<color name="aqua">#00FFFF</color><!--淺綠色 -->
<color name="cyan">#00FFFF</color><!--青色 -->
<color name="springgreen">#00FF7F</color><!--春綠色-->
<color name="lime">#00FF00</color><!--酸橙色 -->
<color name="mediumspringgreen">#00FA9A</color><!--中春綠色 -->
<color name="darkturquoise">#00CED1</color><!--暗寶石綠 -->
<color name="deepskyblue">#00BFFF</color><!--深天藍色 -->
<color name="darkcyan">#008B8B</color><!--暗青色 -->
<color name="teal">#008080</color><!--水鴨色 -->
<color name="green">#008000</color><!--綠色 -->
<color name="darkgreen">#006400</color><!--暗綠色 -->
<color name="blue">#0000FF</color><!--藍色 -->
<color name="mediumblue">#0000CD</color><!--中蘭色 -->
<color name="darkblue">#00008B</color><!--暗藍色 -->
<color name="navy">#000080</color><!--海軍色 -->
<color name="black">#000000</color><!--黑色 -->
</resources>

步驟記錄與反思

重要的附錄(按照時間梯度)

常用程式碼:

debug SHA1

debug的keystore檔案一般位於:C:Users **** .android目錄下的debug.keystore 只需在命令列中,點定位到.android目錄下( cd .android

輸入

keytool -v -list -keystore debug.keystore

即可,遇到輸入口令,一般預設為 android

release SHA1

在此我以Android Studio為例,現在AS選單欄Build下Generate Signed APK ,建立簽名檔案 xxx .jks,注意最後勾選v1與v2,然後繼續在命令列中定位到該檔案所在位置

 

然後輸入

keytool -v -list -keystore ***.jks

即可。

獲取了這兩個ak(apikey)之後,就可以在百度地圖開放平臺 http://lbsyun.baidu.com/apiconsole/key 點選 建立應用,注意選擇android SDK,填寫完成後,就可以複製api key,複製到

解決版本衝突

在app下的build.gradle檔案中的dependences {}中新增如下程式碼:

    androidTestCompile(`com.android.support:support-annotations:26.1.0`) {
        force = true
    }

新增後dependences中結構類似:

dependencies {
  androidTestCompile(`com.android.support:support-annotations:26.1.0`) {
        force = true
    }
...
}

檔案庫的引用

將BaiduLBS_Android.jar檔案放到Project檢視的app的libs目錄下,然後srcmain目錄裡建立一個名為jniLibs的Directory,把剩下的所有資料夾複製到這裡,點選Sync project按鈕就完成了

關於android studio 出現Error:Execution failed for task `:app:preDebugAndroidTestBuild`. 的解決辦法

出錯節點: 檢視app下build.gradle檔案,發現並沒有錯誤compileSdkVersion 為26,可是沒有發現27.1.1版本的com.android.support:support-annotations。可是上述資訊明顯是版本衝突,於是在external library中尋找發現了依賴包衝突。

在app下的build.gradle檔案中的dependences {}中新增如下程式碼:

    androidTestCompile(`com.android.support:support-annotations:26.1.0`) {
        force = true
    }

新增後dependences中結構類似:

dependencies {
  androidTestCompile(`com.android.support:support-annotations:26.1.0`) {
        force = true
    }
...
}

Android Studio Gradle Build Running 太久,各版本Gradle的下載

開啟一個新專案或者網上的Demo的時候Buliding時間過長的解決方法。

報錯:

Error:(4, 1) A problem occurred evaluating root project `BaiduMapsApiDemo`.
> Failed to apply plugin [id `com.android.application`]
   > Gradle version 2.2 is required. Current version is 4.1. If using the gradle wrapper, try editing the distributionUrl in D:codeAndroidBaiduMap_AndroidSDK_v5.2.0_Sample_demoBaiduMap_AndroidSDK_v5.2.0_SampleBaiduMapsApiDemogradlewrappergradle-wrapper.properties to gradle-2.2-all.zip

原因:本地缺乏對應的gradle,導致Building的時間太長,甚至一直Buiding。

解決方法一:

1.科學上網,你需要一個VPN,讓你的電腦可以開啟google官網。用資源管理器強制關閉Android Studio 再重新開啟Android Studio

解決方法二:

  1. 開啟當前專案的專案目錄。在目錄下的 gradlewrapper 目錄找到 gradle-wrapper 檢視該專案的gradle版本,比如我是zip

 

  1. 去https://services.gradle.org/distributions/下載相應版本的gradle,(2.2-all為2014年版本,大小大約55.9MB)將zip壓縮包(不需要解壓縮)放入C:UsersAdministrator.gradlewrapperdistsgradle-2.4.1-all(這個目錄可能在不同的電腦也不一樣,在這裡給window使用者推薦個神器Everything,快速查詢資料夾與檔案)目錄的子目錄“6r4uqcc6ovnq6ac6s0txzcpc0”(每臺電腦每個版本對應子目錄檔名基本都不一樣)資料夾下//測試後發現,我有兩個C:Userswsq_s.gradlewrapperdistsgradle-4.1-all(gradle-2.10-all),選用4.1
  2. 用資源管理器強制關閉Android Studio 再重新開啟Android Studio//測試時使用正常關閉

關於Gradle版本不正確的問題

以下是報錯:

Error:Gradle version 2.2 is required. Current version is 4.1. If using the gradle wrapper, try editing the distributionUrl in D:codeAndroidBaiduMap_AndroidSDK_v5.2.0_Sample_demoBaiduMap_AndroidSDK_v5.2.0_SampleBaiduMapsApiDemogradlewrappergradle-wrapper.properties to gradle-2.2-all.zip

大意為:需要2.2版本的Gradle,現在的版本為4.1,如果使用那個gradle wrapper,請嘗試修改***路徑下面的gradle-wrapper.properties,將其中的distributionUrl 改為 gradle-2.2-all.zip的所在地址(完全路徑,以zip檔案結尾)

關於Error:Unsupported method: BaseConfig.getApplicationIdSuffix().即dependencies 設定版本不正確的問題

Error:Unsupported method: BaseConfig.getApplicationIdSuffix(). The version of Gradle you connect to does not support that method. To resolve the problem you can change/upgrade the target version of Gradle you connect to. Alternatively, you can ignore this exception and read other information from the model.

將 build.gradle 中的

 dependencies {
        classpath `com.android.tools.build:gradle:1.3.1`
    }

改為:

dependencies {
        classpath `com.android.tools.build:gradle:1.3.1`
    }

引用以及感謝(尚未排序)

關於android studio 出現Error:Execution failed for task `:app:preDebugAndroidTestBuild`. 的解決辦法

百度地圖SDK申請之獲取釋出版,開發版SHA1

Android Studio Gradle Build Running 太久,各版本Gradle的下載

參考案例:Android實現註冊登入頭像上傳等功能常規開發(Android端,伺服器端開發例項)

https://blog.csdn.net/w690333243/article/details/72875159

參考書籍:《Android權威程式設計指南(第2版)》[美] Billl Phillips 等著 王明發 譯


相關文章