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官网指导手册
英文版:
在写测试代码之前,你需要
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出现下图
改为:
<?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"/>
<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能够访问基于Google的web服务
添加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"/>
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
Ps:我第一次做的时候经过上面一步后这一步是没有问题的应该弹出第10步的图
但是很悲剧的是第二次就报错了
再次运行又报错而且错误和刚才一模一样
为什么还是报错呢因为第一次都是对的
接着就发挥google还有百度大神的作用了
我寻寻觅觅找了好久在某个论坛中提到的一段话提醒了我
这里是引用cosimo_dw老兄的话
唯一不同的是 勾选了Copy projects into workspace
因为google map属于google play 中的应用所以需要 google play服务
理所当然的点击获取Google Play服务
我琢磨了一下
估计是天嵌公司将Google play的服务给删掉了导致与我加了google-play-services-lib包后还是不能识别出来
于是利用360手机助手上传文件google play service的apk
com.google.android.gms.apk和com.android.vending.apk到TQ210开发板中
下载地址:
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
好吧原来我把meta-data放在了Application之外了 应该把meta-data放在Application标签之中
虽然没有报错但是一直屏幕一直是白板
我查看了一下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 keystore的sha1
所以导致authentication issue从而屏幕一直是白板。
两种解决办法:
1. 将项目export的apk安装到TQ210开发板上(使用release keystore打包)
2. 使用debug keystore在申请一个api key然后使用
经过持续的努力结果终于出来了