国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

Android百度地圖應用開發基礎知識

2019-12-12 06:12:19
字體:
來源:轉載
供稿:網友

一、概述
 這一章先來點有意思的百度地圖應用示例,然后再分章詳細介紹用C#開發Android App的各種基本技術。 
本章以百度官網2016年1月發布的地圖API(3.7.1版)為例,演示如何用C#和VS2015編寫百度地圖應用程序,這些示例程序既可以在Android 6.0的x86模擬器中運行,也可以發布到Android 4.0以上版本的手機中測試實際運行的效果。 
1、下載官網提供的Demos
 首先訪問下面的網址: http://developer.baidu.com/map/
打開網頁后,選擇【開發】à【Andoid開發】下的第1項“Android地圖SDK”,單擊該網頁中的【相關下載】,就會出現下面的界面:

 

單擊【自定義下載】,在彈出的界面中,除了導航功能外,其他全部選中,然后將其下載到本機中,并解壓到某個文件夾下,以便后續的步驟使用它。
 2、使用Gaxaxy_Api23_x86模擬器觀察運行結果
 為了解決MapView使用硬件加速時存在的問題,百度提供了一個TextureMapView控件,使用此控件呈現地圖時,要求修改模擬器的開發者選項。 
要使用TextureMapView顯示百度地圖,需要滿足下面的條件:
 •將所有官方示例中的MapView全部改為用TextureMapView控件來呈現。
 •修改模擬器的開發者選項,將其設置為允許模擬器“強制進行GPU渲染”(如下圖所示)。

這兩個條件都滿足后,百度地圖才能順利顯示出來。 
好了,以后也不需要忍受沒有硬件加速的ARM模擬器那個特別的“慢”了,后面的例子將繼續用帶硬件加速的x86模擬器來演示。
當然也可以直接用手機調試運行(這是建議的調試辦法,手機連上電腦后可直接在debug右側的下拉框中看到該手機的選項,用這種辦法調試地圖應用程序也更符合實際。但是,由于手機調試截圖麻煩,所以這里還是直接用模擬器來演示了。 

二、創建BdMapV371BindingLib解決方案 
解決方案和項目名:BdmapV371BindingLib 
模板:Bindings Library(Android) 
創建綁定庫的目的是將百度地圖SDK 3.7.1版本的所有.jar文件自動轉換為.cs文件并生成對應的.dll文件,轉換以后,就可以在應用項目中引用生成的.dll文件了。 
這也是轉換.jar文件為.cs文件最常用的辦法。
 1、添加JAR文件 
將以下文件復制到項目的jars文件夾下,并將這些文件的【生成操作】屬性全部改為“EmbeddedJar”。 
BaiduLBS_Android.jar 
IndoorscapeAlbumPlugin.jar 
2、添加最新穩定版Xamarin.Android.Support.v4的引用 
鼠標右擊【引用】à【管理NuGet程序包】,添加最新穩定版Xamarin.Android.Support.v4的引用,本人添加的是Xamarin.Android.Support.v4.23.1.1.0。 
3、修改Metadata.xml文件 
打開Transforms文件夾下的Metadata.xml文件,將其改為下面的內容: 

<metadata> <attr path="/api/package[@name='com.baidu.mapapi']/class[@name='VersionInfo']/field[@name='VERSION_INFO']" name="managedName">VersionInfoString</attr> <attr path="/api/package[@name='com.baidu.platform.comapi.map']/class[@name='A']/field[@name='a']" name="managedName">aVar</attr> <attr path="/api/package[@name='com.baidu.platform.comapi.map']/class[@name='B']/field[@name='b']" name="managedName">bVar</attr> <attr path="/api/package[@name='com.baidu.location']/class[@name='Address']/field[@name='address']" name="managedName">AddressString</attr> <attr path="/api/package[@name='com.baidu.mapapi.cloud']/class[@name='VersionInfo']/field[@name='VERSION_INFO']" name="managedName">VersionInfoString</attr> <attr path="/api/package[@name='com.baidu.mapapi.radar']/class[@name='VersionInfo']/field[@name='VERSION_INFO']" name="managedName">VersionInfoString</attr> <attr path="/api/package[@name='com.baidu.mapapi.search.core']/class[@name='g']" name="obfuscated">false</attr> <attr path="/api/package[@name='com.baidu.mapapi.search.district']/class[@name='DistrictSearch']" name="managedName">DistrictSearchs</attr> <attr path="/api/package[@name='com.baidu.pano.platform.comapi.a']/class[@name='a']" name="obfuscated">false</attr> <attr path="/api/package[@name='com.baidu.location']/class[@name='LocationClientOption']/field[@name='mLocationMode']" name="visibility">public</attr> <attr path="/api/package[@name='com.baidu.mapapi.a.a']/class[@name='a']" name="obfuscated">false</attr></metadata>

4、添加BaiduMapOptions.cs文件
 在Additions文件夾下添加該文件,然后將其改為下面的內容: 

namespace Com.Baidu.Mapapi.Map{  public partial class BaiduMapOptions  {    public BaiduMapOptions() { }  }}

該文件的用途是提供一個不帶參數的構造函數,如果不添加該文件,無法直接在后續節的Demos項目中創建BaiduMapOptions的實例(這一節用不到它)。 
5、生成dll文件
 鼠標右擊該項目名,選擇【生成】,此時應該在【輸出】窗口中看到編譯成功了: 
========== 全部重新生成: 成功 1 個,失敗 0 個,跳過 0 個 ========== 
這樣一來,在bin/debug文件夾下就成功生成了BdMapV371BindingLib.dll,以后就可以在示例項目中引用這個.dll文件了。 

三、創建BdMapV371Demos解決方案并獲取開發密鑰
 解決方案和項目名:BdmapV371Demos 
模板:Blank App(Android) 
開發百度地圖應用程序時,需要先在百度官網上申請一個開發密鑰,百度的開發密鑰由“SHA1+包名”組合組成,這是為了讓一個項目唯一對應一個申請的密鑰(key)。密鑰申請成功后,才能在對應的項目中使用百度地圖API。 
1、修改AndroidManifest.xml文件
修改BdMapV371Demos項目的該文件,將其改為下面的內容: 

<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android" package="BdMapV371Demos.BdMapV371Demos" android:versionCode="1" android:versionName="1.0" android:installLocation="auto">  <uses-sdk />  <application android:label="BdMapV371Demos" android:theme="@style/MyCustomTheme">    <meta-data android:name="com.baidu.lbsapi.API_KEY" android:value="你申請的密鑰" />    <service android:name="com.baidu.location.f" android:enabled="true" android:process=":remote" />  </application>  <uses-permission android:name="android.permission.WAKE_LOCK" />  <uses-permission android:name="com.android.launcher.permission.READ_SETTINGS" />  <uses-permission android:name="android.permission.WRITE_SETTINGS" />  <!-- 訪問網絡,網絡定位需要上網-->  <uses-permission android:name="android.permission.INTERNET" />  <!-- 這個權限用于進行網絡定位-->  <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />  <!-- 用于訪問wifi網絡信息,wifi信息會用于進行網絡定位-->  <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />  <!-- 獲取運營商信息,用于支持提供運營商信息相關的接口-->  <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />  <!-- 這個權限用于獲取wifi的獲取權限,wifi信息會用來進行網絡定位-->  <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />  <!-- 用于讀取手機當前的狀態-->  <uses-permission android:name="android.permission.READ_PHONE_STATE" />  <!-- 寫入擴展存儲,向擴展卡寫入數據,用于寫入離線定位數據-->  <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />  <!-- SD卡讀取權限,用戶寫入離線定位數據-->  <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />  <!--允許應用讀取低級別的系統日志文件 -->  <uses-permission android:name="android.permission.READ_LOGS" />  <uses-permission android:name="android.permission.ACCESS_SURFACE_FLINGER" />  <!-- <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />  <uses-permission android:name="android.permission.LOCATION_HARDWARE" />  <uses-permission android:name="android.permission.SET_ANIMATION_SCALE" /> -->  <supports-screens android:anyDensity="true" android:largeScreens="true" android:normalScreens="false" android:resizeable="true" android:smallScreens="true" /></manifest>

2、運行項目得到SHA1
 按<F5>鍵運行項目,在輸出窗口中找到下面這一行:
 D/auth info( 3210): mcode: 【……】;BdMap361Test.BdMap361Test
 其中,分號前的【……】就是SHA1,復制它,以備下一步申請密鑰用。 
說明:創建另一個解決方案和項目時,只要你的開發環境不變,調試模式的SHA1還是這個值(這個值與是哪個項目無關,而是與debug.keystore文件有關),所以最好把這個SHA1保存在單獨的文檔中,以便以后用它申請多個開發密鑰。
 當然,由于這一步還沒有完成密鑰申請的第2步,現在還看不到地圖。 
實際上,你稍微觀察一下輸出窗口,就會發現當你按<F5>鍵調試運行后,系統首先自動執行的就是下面介紹的這些命令。或者說,這些步驟是系統自動完成的,不需要你去做。這里之所以解釋一下這些命令的含義,目的只是為了幫你理解它是如何得到SHA1并自動顯示出來讓你去使用的): 
對于Windows操作系統來說,默認情況下,可以在以下位置找到Xamarin.Android調試版本的用于應用程序簽名的密鑰庫: 
C:/Users/[USERNAME]/AppData/Local/Xamarin/Mono for Android/debug.keystore 
通過JDK提供的keytool命令,可得到密鑰存儲庫的信息。對于Windows系統來說,keytool的位置為:C:/Program Files (x86)/Java/jdk1.7.0_79/bin keytool.exe。 
在VS2015中的使用辦法為(不需要你去配置環境變量):依次單擊【工具】à【Android】à【Android Adb Command Prompt】,這樣就進入了命令行模式。
在命令行模式下,可使用下面的命令形式運行keytool工具: 
keytool -list -v -keystore [STORE FILENAME] -alias [KEY NAME] -storepass [STORE PASSWORD] -keypass [KEY PASSWORD] 
鍵入的具體命令為(注意[USERNAME]應該替換為實際的名字): 
C:/ 
cd/users/[USERNAME]/appdata/local/Xamarin/Mono for Android 
keytool -list -v -keystore debug.keystore -alias androiddebugkey -storepass android -keypass android
此時你在控制臺窗口中將會看到下面的內容: 
別名: androiddebugkey
 
序列號:……(此處省略了具體值)
 
有效期開始日期: ……(此處省略了具體值)
 
截止日期: ……(此處省略了具體值)
 
證書指紋:
 
MD5: ……(此處省略了具體值)
 
SHA1: ……(此處省略了具體值)
 
SHA256:……(此處省略了具體值)
 
簽名算法名稱: SHA256withRSA
 
版本: 3
 
擴展
 
……
 
3、進入官網獲取開發密鑰 
進入百度的官網(http://developer.baidu.com/map/),選擇【開發】à【Andoid開發】下的第1項“Android地圖SDK”,然后單擊該網頁中的【申請密鑰(key)】,選擇【進入新的key申請系統】,輸入下面的信息:
 應用名稱:BdMapV371Demos
 
應用類型:Android SDK
 
數字簽名(SHA1):
 
包名:BdMapV371Demos.BdMapV371Demos
 
對于C#項目來說,這里輸入的包名實際上是“解決方案名.項目名”,并沒有全部是小寫字母的要求。
 
將上一步復制的SHA1粘貼到“數字簽名(SHA1)”右側的文本框中。
 
單擊【提交】按鈕,完成密鑰申請。 
4、將申請的密鑰填入到配置文件中 
修改AndroidManifest.xml文件,在Application中填入你剛申請的密鑰。
 以后再為新項目申請新的密鑰時,只要開發環境不變,這個SHA1值就不會變化。以后再申請新的密鑰時,直接填入這個SHA1值就行了。 
接下來就可以逐步調試本章后面介紹的示例了。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 延寿县| 彰武县| 通海县| 阳城县| 婺源县| 温州市| 庆元县| 晋州市| 桐柏县| 竹山县| 轮台县| 滕州市| 英吉沙县| 天镇县| 枣庄市| 定州市| 海林市| 团风县| 内江市| 威远县| 图们市| 太康县| 绥化市| 古浪县| 中山市| 棋牌| 邵武市| 永泰县| 宁强县| 牙克石市| 韩城市| 治多县| 昭苏县| 青神县| 临朐县| 平利县| 栾城县| 界首市| 凯里市| 门头沟区| 莱芜市|