2013年5月22日 星期三
2013年5月20日 星期一
Google Maps Android API V2使用及問題解決
因為Google Maps的API版本更新,之前的一些教程都是關於舊版本V1的,雖然Google說繼續提供服務,但是不再提供API Key的申請。
而新的V2版本貌似改動還挺大。也沒搜到國內有什麼系統介紹的博客文章之類的(書肯定是來不及那麼新了)。
斷斷續續折騰了大概半個月,因為對Android也不是特別熟悉,所以碰到這樣那樣的問題。
終於在昨天看見模擬器上跑的地圖了。太感人了。
下面就主要說說要成功做成這一件事的流程吧。
因為肯定有時效性,所以打上一個時間戳記:版本更新事件發生在2012年12月,而這篇博文目前的時間是2013年1月1日。
背景
一些相關的連結:
Google Maps Android API V1的介紹:
HTTPs://developers.google.com/maps/documentation/android/v1/mapkey?hl=zh-CN
Google Maps Android API v2的初步介紹:
HTTPs://developers.google.com/maps/documentation/android/
Introduction
HTTPs://developers.google.com/maps/documentation/android/intro
Getting Started
(本部分參考HTTPs://developers.google.com/maps/documentation/android/start)
1.首先安裝Google Play services SDK
Google Maps Android API是作為這個SDK的一部分發行的。
這個安裝是通過Android SDK Manager進行,配置好之後的Eclipse上面應該有Android SDK Manager的圖示,一般的SDK版本安裝和更新都在這裡進行。
安裝和更新Extras下的Google Play services即可。
2.獲取API key
獲取Maps API key需要兩樣東西:應用的signing certificate和它的package name。
獲取這個key之後,把它加在應用程式的AndroidManifest.xml檔裡即可。
為應用獲取一個key還是需要好幾個步驟的,下面詳細說明:
獲取數位憑證(digital certificate)資訊
數位憑證有Debug和Release兩種,下面主要說Debug的。
要獲取一個叫做SHA-1 fingerprint的東西,作為數位憑證的一個簡短代表。
這個指紋(fingerprint)是通過一個雜湊演算法得到的字串,為了得到你的證書的SHA-1 fingerprint,首先要找到你的debug keystore 檔,檔案名叫debug.keystore。
預設情況下它和虛擬機器AVD存放在一起,win7下的路徑是:C:\Users\your_user_name\.android\,也可以通過Eclipse中的Windows > Prefs > Android > Build來查看這個路徑。
然後,在cmd命令列裡運行下列命令:
keytool -list -v -keystore "C:\Users\your_user_name\.android\debug.keystore" -alias androiddebugkey -storepass android -keypass android就顯示一大堆東西,其中就有證書指紋:
SHA1那一行就包含了證書的SHA-1 fingerprint,是二十段用冒號割開的數位段,每段是兩個十六進位的數。
在Google APIs Console上創建API Project
在Google APIs Console上創建專案,並且註冊Maps API。
用Gmail的帳戶登錄,如果是第一次的話,需要創建專案,預設情況會創建一個叫做API Project的專案。
點擊左邊的Services,會在中間看到很多的APIs和Services,找到Google Maps Android API v2,然後把它設置成on,需要接受一些服務條款。
獲得API Key
在左邊的導航條中選擇API Access。
在出來的頁面中選擇Create New Android Key...就可以生成key了:
然後在對話方塊中填入:SHA-1 指紋, 分號隔開,然後是應用的 package name.然後就會生成一個Key。
比如:
3.把API Key加入應用程式
首先,建立虛擬裝置AVD和應用程式。
關於AVD,官方文檔並沒詳細介紹,我後面會有說明。
建立好應用程式,注意包名應該和申請key時候的包名一致。
之後修改AndroidManifest.xml檔:
3.1.在元素中加入子標籤
4. AndroidManifest.xml中的其他具體設置
許可設置
同樣也是作為 的子項目。
首先佈局檔:
MainActivity.java package com.example.mapdemo; import android.app.Activity;import android.os.Bundle; public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); } } 遇到的問題和解決的方法
程式編譯錯誤,顯示找不到一些類
如圖:
解決這個問題,首先需要把Google Play services的類庫載入進來:
在Eclipse裡面選擇:File > Import > Android > Existing Android Code Into Workspace然後點擊Next.
之後Browse..., 找到路徑下的/extras/google/google_play_services /libproject/google-play-services_lib, 然後選擇Finish。
第二步是添加對這個庫的引用:
在自己的專案上右鍵,選Properties,左邊選Android,然後在下面的Library裡面Add剛才的google-play-services_lib。
之後程式就應該能運行了。
接著你可能會碰到下面的問題:
程式運行成功,但是顯示This app won't run unless you update Google Play services.
如圖:
有傳言說V2不能在AVD上運行,可能Google還會對此問題進行更新。
經過搜索,這個問題已經在Stackoverflow上被討論過了,連結
所以看來在AVD上運行的問題已經被解決了。
解決的方法就是在AVD上安裝兩個包:vending.apk和gms.apk,(給一個網盤連結)
並且AVD就選擇普通的API 16就行,不需要是Google APIs。我選的是Android4.1 API16.
安裝時把那兩個包放在目前的目錄,用命令列安裝:
之後運行程式,就出地圖了:
標籤:
Android,
Google maps
Android Google Map V2 Eclipse AVD 模擬器免破解執行方法
Android Google Map V2 Eclipse AVD (Android Emulator) 模擬器免破解執行方法 (原創)
How to use Eclipse AVD Run Android Google Map V2 Without Root AVD?
發現時機-在巨匠上鄭一鴻老師的Android APP課程時發現的~
Google MAP V2版 For Android 在Eclipse ADV 中無法啟動?
--如果想要找如何申請V2版KEY,可至Google查,可以查到許多善心人教學~
Google MAP V1 已經停止支援無法申請API KEY,改用Google MAP V2,
許多工程師們都無法在Eclipse 上的ADV跑V2版,
現在有許多方式可以解決,但需用第三方模擬器,或ROOT模擬器來克服,
而我在這提供一個另類的方式,
直接在Eclipse 上的ADV(Android Emulator)跑V2版,不需再裝第三方apk,免破解,直接可用~
事前準備~
先要準備好 SDK Manager 開啟,並將 Eclipse 升級到 ADT 21.1 版本,
並下載4.2.2版(API17)且需下載Google APIs
在Extras中把 Google Play Service, Google Play 相關的都裝上吧!
我是全選全裝!
標籤:
Android,
Google maps
Android學習_如何申請Google Map API Key(實機用)
Google已經發布新的Google Map Android API v2,相關使用方法請參考新文章:Android學習_如何開始使用Google Maps Android API v2
-------------------------------------------------------------
要在Android內使用Google Map API需要先申請API key,而申請API key必須要有MD5 fingerprint,如果是使用模擬器來測試,就必須要以debug的MD5去申請key,詳細步驟請見"Android筆記_如何申請Google Map API Key(模擬器用)",但是如果想放到實體手機上,就必須要先建立"個人的keystore",再利用keytool取得MD5,最後進行API key的申請,詳細步驟如下:
一、建立個人的keystore
A. 開啟DOS命令視窗,找到java的bin資料夾(C:\Program Files\Java\jre6\bin)
B. 輸入keytool指令(keytool -genkey -v -keystore yourkeyname.keystore -alias yourkeyname -keyalg RSA -validity 10000)[參考Android SDK 開發範例大全3]
keystore:名稱
alias:別名
keyalg:演算法
validity:有效天數
輸入後,會有一系列的問題,需要注意的是過程中會輸入兩種密碼,網路上書上都推薦怕記不住就用一樣。
C. 完成後,keytool就會產生keystore的檔案在java的bin資料夾
二、有了個人的keystore後,就必須要取得該keystore的MD5
A. 還是一樣先開啟DOS命令視窗,找到java的bin資料夾(C:\Program Files\Java\jre6\bin)
B. 使用"既有keystore取得MD5的語法(keytool -list -v -keystore "絕對路徑"),鍵入語法後就必須要輸入剛剛建立時所設定的密碼。
C. 記著MD5。
資料來源
-------------------------------------------------------------
要在Android內使用Google Map API需要先申請API key,而申請API key必須要有MD5 fingerprint,如果是使用模擬器來測試,就必須要以debug的MD5去申請key,詳細步驟請見"Android筆記_如何申請Google Map API Key(模擬器用)",但是如果想放到實體手機上,就必須要先建立"個人的keystore",再利用keytool取得MD5,最後進行API key的申請,詳細步驟如下:
一、建立個人的keystore
A. 開啟DOS命令視窗,找到java的bin資料夾(C:\Program Files\Java\jre6\bin)
B. 輸入keytool指令(keytool -genkey -v -keystore yourkeyname.keystore -alias yourkeyname -keyalg RSA -validity 10000)[參考Android SDK 開發範例大全3]
keystore:名稱
alias:別名
keyalg:演算法
validity:有效天數
輸入後,會有一系列的問題,需要注意的是過程中會輸入兩種密碼,網路上書上都推薦怕記不住就用一樣。
C. 完成後,keytool就會產生keystore的檔案在java的bin資料夾
二、有了個人的keystore後,就必須要取得該keystore的MD5
A. 還是一樣先開啟DOS命令視窗,找到java的bin資料夾(C:\Program Files\Java\jre6\bin)
B. 使用"既有keystore取得MD5的語法(keytool -list -v -keystore "絕對路徑"),鍵入語法後就必須要輸入剛剛建立時所設定的密碼。
C. 記著MD5。
資料來源
keytool -genkey -alias "C:\Users\Administrator\.android\debug.keystore" -keyalg RSA -validity 20000 -keystore android.keystore
其实Android 搭配Google Map还能实现很多功能,比如GPS导航,结合SNS实现提供各类的LBS位置服务等,本文只是带领你初窥了Android 搭配Google Map的强大功能,更多的还有待读者去实践发现。
1> android 在开发google map 项目的时候,首先需要一个android.keystore文件,该文件在
如果是win 7 则:C:\Users\Administrator\.android\如果是win xp 则:C:\Documents and Settings\Administrator\.android\ 下面,文件一般为:debug.keystore。如果不存在该文件,则需要参加这个文件,创建命令如下: C:\Program Files\Java\jdk1.6.0_10\bin>keytool -genkey -alias "C:\Users\Administrator\.android\debug.keystore" -keyalg RSA -validity 20000 -keystore android.keystore 请注意 这个 其中参数-validity 20000 ,则个是表示 这个表示是证书有效天数。 C:\Users\Administrator\.android\debug.keystore 这个是android默认的证书地址路劲。可以在eclipse环境查看 查看方式:window->preferences->andorid->Build 右边 defualt debug keystore 即为默认路劲。 然后根据提示设置相应的内容,注意建议设置的用户名和密码统一为android ,因为eclipse中默认的证书用户名和密码也是android,如果设置其他的用户名和密码,则会带来不必要的麻烦。我就遇到过,如果设置成其他密码还要找办法去修改eclipse里面的默认密码。 生成keystore文件之后可以通过 keytool -list -alias androiddebugkey -keystore "C:\Users\Administrator\.android\debug.keystore" -storepass android -keypass android 来获取certificate's MD5 fingerprint 2> 现在我们就产生了debug模式下的MD5密纹了,要注意的是,你必须重新为生产环境下的应用重新生成一次MD5密纹,因为如果在不同的Android SDK或者不同的开发环境下,MD5密纹是不同的,否则换了环境的话Google Map将不会工作。
产生的MD5密纹的输出如下面:
接下来,我们要到Google Map API的主页去申请一个Map的key了,可以访问
http://code.google.com/android/maps-api-signup.html页面,在其中的MD5 fingerprint一栏中输入刚才生成的MD5密纹,如下图:
输入后,点Generate API Key,之后会为我们产生Google Map API了,如下图,这个API是我们在程序中可以使用的。
其中还给出了如何在android中使用该API的方法。
第四步:开始创建Android Google Map应用
其实,编写Android Map应用并不复杂,只需要继承MapActivity类就可以了。MapView这个类功能是从Google Map地图中获得数据并且展示地图。MapActivity的主要功能有:
1) 管理Activity的生命周期
2) 为MapView类建立和撤消相关的服务。
在继承了MapActivity类后,我们要实现其中的isRouteDisplayed方法,这个方法其实是用来表示我们是否显示一些路线的信息,这个通常用在地图的飞行模式时才使用,这里我们不提供任何信息仅是返回false即可。
在我们的activity中,我们将引用到MapView,它是在界面xml中定义的。同时我们也用到setBuiltInZoomControls方法设置地图允许缩放模式。
初步的代码是这样的:
而相应的界面xml文件如下:
|
复制代码
注意,其中要把你获得的Google Map的API KEY写到MapView控件中去。最后,记得在AndroidManifest.xml配置文件中,加上对Internet和Map的使用访问权限,其中由于Google Map的API是另外提供的API,因此也需要使用use-library标签进行说明,如下代码所示。
- package="com.javacodegeeks.android.googlemaps"
- android:versionCode="1"
- android:versionName="1.0">
-
-
- android:label="@string/app_name">
-
-
-
2013年5月19日 星期日
Jack的資訊教學筆記: Scratch+Arduino 玩互動科技(台中女中)
Jack的資訊教學筆記: Scratch+Arduino 玩互動科技(台中女中): 今天在台中女中所研習的是利用Scratch軟體來控制Arduino硬體所呈現的互動科技 講師是苗栗縣蟠桃國小范運平老師,首先他介紹了Arduino軟硬體,這些都是開放原始碼,網路上的資料非常豐富,而Arduino的基本套件不到1000元,就可以創意出多采多姿的好玩又實用的科技,...
訂閱:
文章 (Atom)