TQ210搭载Android 4.0.3测试Google Maps API V2(一.获取地图)

TQ210搭载Android 4.0.3测试Google Maps API V2(一.获取地图)

 

硬件环境:tq210 v4开发板

运行环境:Android 4.0.3

开发环境: Eclipse Version: Juno Service Release 2,ADT 22,Android Sdk 22

 

参考文档:

这位老兄写的很好 有一个错误就是参看他的博客才解决的

中文版:

http://www.cnblogs.com/mengdd/archive/2013/01/01/2841390.html

 

Google官网指导手册

英文版:

https://developers.google.com/maps/documentation/android/start#installing_the_google_maps_android_v2_api

 

 

在写测试代码之前,你需要

1.                              Download and configure the Google Play services SDK. The Google Maps Android API is distributed as part of this SDK.

2.                              Obtain an API key. To do this, you will need to register a project in the Google APIs Console, and get a signing certificate for your app.

 

在    获取api key和下载sdk在上面的参考文档中都可以找到详细的操作步骤,这里就不啰嗦了.

 

具体实现:

1.打开eclipse,按下快捷键ctrl+n出现下图

  1. 选择Android Application Project点击Next

  1. 接下来一致选Next,直至Finish
  2. 修改activity_main.xml添加Map到布局文件中

改为:

<?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"/>
  1. 需要访问Google Play Service,所以添加必要的权限AndroidManifest.xml中加入
<uses-permission android:name="android.permission.INTERNET"/>

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES"/>

<!-- The following two permissions are not required to use

     Google Maps Android API v2, but are recommended. -->

<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>

 

:

添加WRITE_EXTERNAL_STORAGE能够添加缓存的地图数据到SDCARD中,加快地图显示速度

添加READ_GSERVICES能够访问基于Googleweb服务

  1. 添加api_keyopengl es version 2 的支持AndroidManifest.xml文件中加入

添加api_key

<meta-data

    android:name="com.google.android.maps.v2.API_KEY"

    android:value="your_api_key"/>

your_api_key换成你申请的api_key

注意:meta-data需要添加在Application标签中

例如我的

<meta-data

   android:name="com.google.android.maps.v2.API_KEY"

android:value="AIzaSyCBulkSx_lJGCDx-945JVqBB0CW38ahDhA"/>

 

添加openGL ES Version 2的支持

<uses-feature

        android:glEsVersion="0x00020000"

        android:required="true"/>
  1. TQ210开发板上运行

9.可是并没有显示地图反而报错

 

提示找不到com.google.android.gms.maps.MapFragment

参看参考文档中那位老兄写的出错提示

于是加入Google play services类库

操作如下:

a.Package Explorer空白区单击右键选择Import

      b.弹出对话框如下图选择Existing Android Code Into Workspace

c.点击Next如下图选择Browse

找到你的google-play-services_lib的源文件

一般是在你android sdk的安装目录的下面

android-sdk-windows\extras\google\google_play_services\libproject\google-play-services_lib

 

例如我的:

D:\learnsoftware\java\android_appli\sdk\android-sdk-windows\extras\google\google_play_services\libproject\google-play-services_lib

如下图点击Finish

 

 

右键单击你所写的工程点击属性出现下图

点击Add出现下图选择google-play-services_lib点击OK在上图中点击OK就添加了google-play-services_lib.jar

 

 

 

  1.  

Ps:我第一次做的时候经过上面一步后这一步是没有问题的应该弹出第10步的图

但是很悲剧的是第二次就报错了

再次运行又报错而且错误和刚才一模一样

 

为什么还是报错呢因为第一次都是对的

接着就发挥google还有百度大神的作用了

我寻寻觅觅找了好久在某个论坛中提到的一段话提醒了我

这里是引用cosimo_dw老兄的话

  1. workspace要跟SDK在同一个分区下

    这个是为了等一下导入的时候使用相对路径,我也不知道为什么绝对路径就一直报错,但是相对路径确实是可以跑起来的。希望有大牛可以研究下这个奇怪的BUG

    2. 
    导入google_play_servicelibrary
    做法如下:(以英文版eclipse4.2为例)
    首先选择File->Import->Android->Existing Android Code Into Workspace,点Next
    Browse... 然后文件夹选择
    <android-sdk-folder>/extras/google/google_play_services/libproject/google-play-services_lib
    ,点Finish。这时候Project Explorer里面会出现google-play-services_lib一项。
    然后在自己的项目上点右键->Properties->Android,下面Library的列表的右边点Add添加,然后选择刚刚导入的google-play-services_lib然后确定即可。如果你看到列表里面的路径是类似
    ..\..\android-sdk-windows\extras\google\google_play_services\libproject\google-play-services_lib这样的相对路径说明你弄对了,如果是
    D:\android-sdk-windows\extras\google\google_play_services\libproject\google-play-services_lib
    那就说明你的分区没弄对(如果确实是同一分区的话Eclipse可以变相对路径的,如果确实是抽风了的话,那么可以直接打开project.properties文件把最后一行那个library改成相对路径)。
    弄对这里之后再跑应该就不会出问题了,起码我用这个方法成功了。
  2. 于是乎我重新导入google-play-services_lib重复第9步的操作

 唯一不同的是 勾选了Copy projects into workspace

  1. 再次运行编写的工程弹出如下界面

因为google map属于google play 中的应用所以需要 google play服务

理所当然的点击获取Google Play服务

  1. 又出错了如下图

我琢磨了一下 

估计是天嵌公司将Google play的服务给删掉了导致与我加了google-play-services-lib包后还是不能识别出来

于是利用360手机助手上传文件google play serviceapk

com.google.android.gms.apkcom.android.vending.apkTQ210开发板中

下载地址:

com.google.android.gms.apk (也就是Google_Play_services_3.1.36_(669520-36).apk

http://pan.baidu.com/share/link?shareid=548334&uk=1025967607

com.android.vending.apk

 http://pan.baidu.com/share/link?shareid=548301&uk=1025967607

  1. 接着出错好吧只有接着找了

好吧原来我把meta-data放在了Application之外了 应该把meta-data放在Application标签之中

  1. 再次运行打不死的小强哈

 

虽然没有报错但是一直屏幕一直是白板

我查看了一下LOGCAT发现如下问题

05-27 12:18:54.574: E/Google Maps Android API(9023): Failed to load map. Error contacting Google servers. This is probably an authentication issue (but could be due to network errors).

我突然想到了

Api key分为两种情况

一种是使用debug keystore生成的api key

一种是使用release keystore生成的api key

不同的api key使用不同的sha1字符生成 

而我申请的api key是使用release keystore生成的 而我是使用eclipse在线调试将apk安装到TQ210开发板上使用的是debug keystoresha1

所以导致authentication issue从而屏幕一直是白板。

两种解决办法:

1.    将项目exportapk安装到TQ210开发板上(使用release keystore打包)

2.    使用debug keystore在申请一个api key然后使用

  1. export导出来的apk安装咋TQ210开发板上

经过持续的努力结果终于出来了

 

 

posted on 2013-05-28 15:34  liangxinzhi  阅读(235)  评论(0编辑  收藏  举报