zoukankan      html  css  js  c++  java
  • 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开发板上

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

     

  • 相关阅读:
    aa
    ECS上搭建Docker(CentOS7)
    mysql时间戳转日期
    rsync用法
    docker安装mysql8
    使用Docker安装mysql,挂载外部配置和数据
    my.cnf
    Centos7通过yum安装jdk8
    maven添加本地包命令mvn install:install-file
    Mysql——查看数据库,表占用磁盘大小
  • 原文地址:https://www.cnblogs.com/liangxinzhi/p/4275635.html
Copyright © 2011-2022 走看看