Android学习笔记 五七 使用Google Map API v2

分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.****.net/jiangjunshow

也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!

               

本笔记将学习如何使用Google Map服务。主要参考来源为:https://developers.google.com/maps/documentation/android/start?hl=zh-CN。要在模拟器和实际手机上跑通还是费了一番周折。最新的Google Maps Android API v2已经将map服务合并到Google Play services中,但是国内手机并不提供Google Play store,也不提供Google Play services。国内的手机是否不需要进行CTS测试?换言之,本次学习对于在国内市场提供应用并没有实际意义,因为你不可能要求用户去进行额外的安装,但是将学习手机应用如何使用互联网服务。要在手机上跑Google地图服务,涉及的步骤比较多。

一、准备开发环境

1、在Eclipse上安装Google Play Services SDK。位于extra,见下图。安装后位于sdk/extras/google/google_play_services/

Android学习笔记 五七 使用Google Map API v2

2、安装SDK后,将Make a copy of the Google Play services的lib project拷贝到我们的workspace中,目的是为了在我们的project中可以引入该lib。在Eclise中File -> Import, 选择Android -> Existing Android Code into Workspace, 在SDK安装的目录下,选择该lib(google-play-services_lib),将其import。

Android学习笔记 五七 使用Google Map API v2

3、要使我们的project可以使用google play service lib,是通用的将library project加入到Android project的操作,目地为了在开发的应用中使用来自lib project的共享代码。在Eclipse的包浏览(一般位于左侧)中,选择我们的项目,按右键-> Properties -> 在左边属处选择Android,在右边选择Library ->Project Selection 对话框中点击Add -> 从可选的lib project中选择目标。如下图

Android学习笔记 五七 使用Google Map API v2

二、准备调测环境

无论采用模拟器还是真实手机作为调测环境,需要确保设备已经安装com.android.vending.apk(Google play store)和com.google.android.gms.apk(Google play services),然而模拟器上并没有包括这两个包,而国内手机也不包含着两个apk,这就是为何我在篇首感叹。要安装这个两个需要在网上进行search。需要注意com.google.andriod.gms.apk在2013年5月30有update。由于和Google在线提供的服务相关,这个包必须是最新,才能匹配现有的在线服务。在代码中可能进行检测:

GooglePlayServicesUtil.isGooglePlayServicesAvailable ( getApplicationContext() ) 

如果返回ConnectionResult: SUCCESS表示可以正常使用。其他可能返回有SERVICE_MISSING, SERVICE_VERSION_UPDATE_REQUIRED, SERVICE_DISABLED, SERVICE_INVALID。下面左图是SERVICE_MISSING,右图是SERVICE_VERSION_UPDATE_REQUIRED的情况,都不能正常使用Map业务。上面虽然有两个button,实际不起作用,估计是无法连接到服务器导致。据说小米手机的应用商店可以跳转到Google Play,可能小米和Google达成某些协议,可能小米手机上没有什么问题。

Android学习笔记 五七 使用Google Map API v2

要安装这个apk时最为麻烦的。最后的解决办法是先在模拟器上先安装华为的智汇云,在上面查找这两个应用。由于应用来源不正规,所以不建议在真实手机上安装。模拟器上安装apk没有网上说的那么复杂,要进入adb shell处理。在模拟器上的浏览器直接打开相关的网页,下载apk,然后点击进行安装即可,和手机安装没区别。安装成功后,可以看到App增加了Google Settings和Play Store两个。

Android学习笔记 五七 使用Google Map API v2

还有一个更为简单的方法。用gmail帐号登录,然后找到应用下载,在那里可以下载Google Map,官方版本比较安全。

2013.9.5补充:在模拟器上使用Google Map。我们下载了Google API后,为了确保这些API能在模拟器上正常使用,在创建AVD时,我们应该选择Google API来进行创建Target,就可以在模拟器中加入相关的功能,如下图所示,不需要额外去下载。

Android学习笔记 五七 使用Google Map API v2Android学习笔记 五七 使用Google Map API v2

三、获取Google Map API的key

要通过Google Map API访问Google在线的地图服务,需要Google Map API Key。这个Key获取是免费的,开发者只要具有Gmail的邮箱就可。所有的Android app都必须由数字证书签发,开发者持有私有private key。由于数字证书是唯一的,作为应用的唯一标识,这是的应用商店可追踪你的应用,以及追踪你应用使用了Google Map服务。

Maps API key是基于应用的数字证书,也成为SHA-1 fingerprint。分为debug证书和release证书,对于我们的试验,使用debug。debug keystore文件位于~/.android/,如果是Windows位于C:\Users\your_user_name\.android\。Linux和用下面命令获得证书。在Windows中-keystore的参数为"C:\Users\your_user_name\.android\debug.keystore"。

keytool -list -v -keystore ~/.android/debug.keystore -alias androiddebugkey -storepass android -keypass android

Keytool 是一个Java数据证书的管理工具,Keytool将**(key)和证书(certificates)存在一个称为keystore的文件中在keystore里,包含两种数据:**实 体(Key entity)-**(secret key)或者是私钥和配对公钥(采用非对称加密)可信任的证书实体(trusted certificate entries)-只包含公钥.
-list             显示**库中的证书信息 keytool -list -v -keystore 指定keystore -storepass 密码
-alias           产生别名 每个keystore都关联这一个独一无二的alias,这个alias通常不区分大小写
-keystore    指定keystore -file 指定导出的证书位置及证书名称
-storepass  密码
-keypass     指定**库的密码(获取keystore信息所需的密码)

记录下证书指纹,用它在Google APIs Console获取Map Key。Google API Console需要用Google帐号进行登录,也就是我们Gmail的帐号,这个网站貌似不是很稳定,有时请求需要发送多次才能成功,可能有间歇性拦截,反正多给点耐心吧。

Android学习笔记 五七 使用Google Map API v2

Android学习笔记 五七 使用Google Map API v2

Android学习笔记 五七 使用Google Map API v2

OK,成功获取我们的Google Map API Key。

Android学习笔记 五七 使用Google Map API v2

四、使用Google Map服务

经过以上步骤,终于将整个开发环境准备好,进入代码编写阶段。在coding的具体编写前,首先要AndroidManifest.xml中设置相应的许可,具体如下:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.wei.android.beginning" android:versionCode="1"   android:versionName="1.0" >
    <uses-sdk android:minSdkVersion="14"  android:targetSdkVersion="17" />

    <!-- 步骤(1)设置Google Map API v2 Key,其中com.wei.android.beginning为package的名字 -->
    <permission android:name="com.wei.android.beginning.permission.MAPS_RECEIVE" android:protectionLevel="signature"/>
    <uses-permission android:name="com.wei.android.beginning.permission.MAPS_RECEIVE"/>

    <!-- 步骤(3)设置使用Google Map服务所需的许可 -->
    <uses-permission android:name="android.permission.INTERNET" />  <!-- Google Map是互联网业务,允许互联网 -->
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <!-- 允许API检查网络连接状态,已确定是否可以下载数据 -->
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/><!-- 允许将Google地图数据缓存在SD卡上 -->
    <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES"/><!-- 允许API访问Google的基于Web的业务 -->   
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>  <!-- 地图应用经常和定位相关,允许粗定位-->
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>   <!-- 允许精确定位-->    
    <!-- 步骤(4)Google Map v2需要OpenGL ES,需要用uses-feature中声明 -->
    <uses-feature android:glEsVersion="0x00020000"  android:required="true"/>
  
    <application ...... >   
        <!-- 步骤(2)设置Google Map API v2 Key -->
        <meta-data android:name="com.google.android.maps.v2.API_KEY" android:value="AIzaSyDPOviDLcwanPb3D3rwdqYXFn8jikGXey0"/>       
        <activity ......>  ...... </activity>
    </application>
</manifest>

使用最为简单的的例子,在Activitiy中简单的显示提出。在Activitiy引用的layout.xml文件如下:

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

只要在activity中,将该布局引入即可。

public class MainActivity extends Activity {    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);    }}

费了好大劲,要show一下成果。显示经度为0,维度为0的地区,请看非洲……

Android学习笔记 五七 使用Google Map API v2

相关链接: 我的Android开发相关文章
           

给我老师的人工智能教程打call!http://blog.****.net/jiangjunshow

Android学习笔记 五七 使用Google Map API v2