自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Google Maps Android API V2使用及問題解決

移動(dòng)開發(fā) Android
Google Maps Android API 在2012年12月更新,其V2版摒棄了MapActivity,而采用MapFragment,從而可以更好的在Android中使用地圖組件。本文詳細(xì)介紹了如何使用這一新特性。

說明

因?yàn)镚oogle Maps的API版本更新,之前的一些教程都是關(guān)于舊版本V1的,雖然Google說繼續(xù)提供服務(wù),但是不再提供API Key的申請(qǐng)。

而新的V2版本貌似改動(dòng)還挺大。也沒搜到國(guó)內(nèi)有什么系統(tǒng)介紹的博客文章之類的(書肯定是來不及那么新了)。

斷斷續(xù)續(xù)折騰了大概半個(gè)月,因?yàn)閷?duì)Android也不是特別熟悉,所以碰到這樣那樣的問題。

終于在昨天看見模擬器上跑的地圖了。太感人了。

下面就主要說說要成功做成這一件事的流程吧。

因?yàn)榭隙ㄓ袝r(shí)效性,所以打上一個(gè)時(shí)間戳:版本更新事件發(fā)生在2012年12月,而這篇博文目前的時(shí)間是2013年1月1日。

背景

一些相關(guān)的鏈接:

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是作為這個(gè)SDK的一部分發(fā)行的。

這個(gè)安裝是通過Android SDK Manager進(jìn)行,配置好之后的Eclipse上面應(yīng)該有Android SDK Manager的圖標(biāo),一般的SDK版本安裝和更新都在這里進(jìn)行。

安裝和更新Extras下的Google Play services即可。

2.獲取API key

獲取Maps API key需要兩樣?xùn)|西:應(yīng)用的signing certificate和它的package name。

獲取這個(gè)key之后,把它加在應(yīng)用程序的AndroidManifest.xml文件里即可。

為應(yīng)用獲取一個(gè)key還是需要好幾個(gè)步驟的,下面詳細(xì)說明:

獲取數(shù)字證書(digital certificate)信息

數(shù)字證書有Debug和Release兩種,下面主要說Debug的。

要獲取一個(gè)叫做SHA-1 fingerprint的東西,作為數(shù)字證書的一個(gè)簡(jiǎn)短代表。

這個(gè)指紋(fingerprint)是通過一個(gè)哈希算法得到的字符串,為了得到你的證書的SHA-1 fingerprint,首先要找到你的debug keystore 文件,文件名叫debug.keystore。

默認(rèn)情況下它和虛擬機(jī)AVD存放在一起,win7下的路徑是:C:\Users\your_user_name\.android\,也可以通過Eclipse中的Windows > Prefs > Android > Build來查看這個(gè)路徑。

然后,在cmd命令行里運(yùn)行下列命令:

keytool -list -v -keystore "C:\Users\your_user_name\.android\debug.keystore" -alias androiddebugkey -storepass android -keypass android

就顯示一大堆東西,其中就有證書指紋:

SHA1那一行就包含了證書的SHA-1 fingerprint,是二十段用冒號(hào)割開的數(shù)字段,每段是兩個(gè)十六進(jìn)制的數(shù)。

在Google APIs Console上創(chuàng)建API Project

在Google APIs Console上創(chuàng)建項(xiàng)目,并且注冊(cè)Maps API。

首先,去這個(gè)網(wǎng)址:https://code.google.com/apis/console/

用Gmail的賬戶登錄,如果是第一次的話,需要?jiǎng)?chuàng)建項(xiàng)目,默認(rèn)情況會(huì)創(chuàng)建一個(gè)叫做API Project的項(xiàng)目。

點(diǎn)擊左邊的Services,會(huì)在中間看到很多的APIs和Services,找到Google Maps Android API v2,然后把它設(shè)置成on,需要接受一些服務(wù)條款。

獲得API Key

在左邊的導(dǎo)航條中選擇API Access。

在出來的頁(yè)面中選擇Create New Android Key...就可以生成key了:

Google Maps Android API V2使用及問題解決

然后在對(duì)話框中填入:SHA-1 指紋, 分號(hào)隔開,然后是應(yīng)用的 package name.然后就會(huì)生成一個(gè)Key。

比如:

Google Maps Android API V2使用及問題解決

3.把API Key加入應(yīng)用程序

首先,建立虛擬設(shè)備AVD和應(yīng)用程序。

關(guān)于AVD,官方文檔并沒詳細(xì)介紹,我后面會(huì)有說明。

建立好應(yīng)用程序,注意包名應(yīng)該和申請(qǐng)key時(shí)候的包名一致。

之后修改AndroidManifest.xml文件:

3.1.在<application>元素中加入子標(biāo)簽

  1. <meta-data 
  2.  
  3.     android:name="com.google.android.maps.v2.API_KEY" 
  4.  
  5.     android:value="your_api_key"/> 

3.2.加入一些許可信息

  1. <permission 
  2.           android:name="com.example.mapdemo.permission.MAPS_RECEIVE" 
  3.           android:protectionLevel="signature"/> 
  4.         <uses-permission android:name="com.example.mapdemo.permission.MAPS_RECEIVE"/> 

其中com.example.mapdemo換成自己的包名。

 

4. AndroidManifest.xml中的其他具體設(shè)置

許可設(shè)置

<uses-permission> 作為<manifest> 的子元素,需要加入下列一些:

  1. <uses-permission android:name="android.permission.INTERNET"/> 
  2. <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 
  3. <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES"/> 
  4. <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/> 
  5. <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> 

OpenGL ES V2特性支持

    同樣也是作為<manifest> 的子元素。

  1. <uses-feature  
  2.   android:glEsVersion="0x00020000"  
  3.   android:required="true"/> 

5.加上地圖

首先布局文件:

  1. <?xml version="1.0" encoding="utf-8"?> 
  2. <fragment xmlns:android="http://schemas.android.com/apk/res/android" 
  3.   android:id="@+id/map" 
  4.   android:layout_width="match_parent" 
  5.   android:layout_height="match_parent" 
  6.   class="com.google.android.gms.maps.MapFragment"/> 

然后在MainActivity.java:

  1. MainActivity.java 
  2.  
  3. package com.example.mapdemo;  
  4.   
  5. import android.app.Activity;  
  6. import android.os.Bundle;  
  7.   
  8. public class MainActivity extends Activity {  
  9.   
  10.     @Override  
  11.     protected void onCreate(Bundle savedInstanceState) {  
  12.         super.onCreate(savedInstanceState);  
  13.         setContentView(R.layout.main);  
  14.     }  

遇到的問題和解決的方法

程序編譯錯(cuò)誤,顯示找不到一些類

如圖:

Google Maps Android API V2使用及問題解決

解決這個(gè)問題,首先需要把Google Play services的類庫(kù)加載進(jìn)來:

  在Eclipse里面選擇:File > Import > Android > Existing Android Code Into Workspace然后點(diǎn)擊Next.

  之后Browse..., 找到路徑下的<android-sdk-folder>/extras/google/google_play_services /libproject/google-play-services_lib, 然后選擇Finish。

第二步是添加對(duì)這個(gè)庫(kù)的引用:

  在自己的項(xiàng)目上右鍵,選Properties,左邊選Android,然后在下面的Library里面Add剛才的google-play-services_lib。

之后程序就應(yīng)該能運(yùn)行了。

接著你可能會(huì)碰到下面的問題:

程序運(yùn)行成功,但是顯示This app won't run unless you update Google Play services.

如圖:

有傳言說V2不能在AVD上運(yùn)行,可能Google還會(huì)對(duì)此問題進(jìn)行更新。

經(jīng)過搜索,這個(gè)問題已經(jīng)在Stackoverflow上被討論過了,鏈接

所以看來在AVD上運(yùn)行的問題已經(jīng)被解決了。

解決的方法就是在AVD上安裝兩個(gè)包:vending.apk和gms.apk,(給一個(gè)網(wǎng)盤鏈接

并且AVD就選擇普通的API 16就行,不需要是Google APIs。我選的是Android4.1 API16.

安裝時(shí)把那兩個(gè)包放在當(dāng)前目錄,用命令行安裝:

之后運(yùn)行程序,就出地圖了:

責(zé)任編輯:徐川 來源: cnblogs
相關(guān)推薦

2013-08-13 10:59:03

Android Stu啟動(dòng)

2011-09-06 09:26:03

2010-06-12 13:49:50

Ubuntu 10.0

2011-02-23 13:48:05

Web

2013-03-04 14:24:58

Google Maps

2013-02-28 13:35:02

Google Maps

2011-08-18 18:46:24

SQL Server

2011-06-27 16:44:59

Qmake

2011-06-13 16:16:32

Qt 中文問題

2011-03-23 16:38:28

LAMP

2010-06-17 11:35:24

Ubuntu 修復(fù)Gr

2010-04-28 18:01:15

Unix系統(tǒng)

2011-08-03 11:07:01

布線管理軟件

2011-11-28 22:45:19

Nginxsession

2009-12-28 10:56:45

WPF Image

2010-05-05 10:25:24

Unix操作系統(tǒng)

2011-09-05 18:57:36

MTKJ2ME

2012-05-09 10:08:41

跨機(jī)房

2010-05-05 14:20:46

AIX CDE

2011-01-21 14:13:10

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)