正常访问状态! 设为首页 | 加入收藏夹 | 浏览历史  
  http://www.guosp.com
 碧海澜涛居
  海纳百川,有容乃大。壁立千刃,无欲则刚!
 
 
关键词:
  网站首页 | 关于本站 | 技术资料 | 美文日志 | 读书收藏 | 影视收藏 | 软件收藏 | 摄影相册| 留言板 
  技术资料 >> Android技术 关闭(快捷键alt+C)
搜索标签: Google Android 地图
Google Maps Android API V2使用及问题解决
[阅读次数:993次]  [发布时间:2013年7月15日]

说明

因为Google Maps的API版本更新,之前的一些教程都是关于旧版本V1的,虽然Google说继续提供服务,但是不再提供API Key的申请。

而新的V2版本貌似改动还挺大。也没搜到国内有什么系统介绍的博客文章之类的(书肯定是来不及那么新了)。

断断续续折腾了大概半个月,因为对Android也不是特别熟悉,所以碰到这样那样的问题。

终于在昨天看见模拟器上跑的地图了。太感人了。

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

因为肯定有时效性,所以打上一个时间戳:版本更新事件发生在2012年12月,而这篇博文目前的时间是2013年1月1日。

背景

一些相关的链接:

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是作为这个SDK的一部分发行的。

这个安装是通过Android SDK Manager进行,配置好之后的Eclipse上面应该有Android SDK Manager的图标,一般的SDK版本安装和更新都在这里进行。

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

2.获取API key

获取Maps API key需要两样东西:应用的signing certificate和它的package name。

获取这个key之后,把它加在应用程序的AndroidManifest.xml文件里即可。

为应用获取一个key还是需要好几个步骤的,下面详细说明:

获取数字证书(digital certificate)信息

数字证书有Debug和Release两种,下面主要说Debug的。

要获取一个叫做SHA-1 fingerprint的东西,作为数字证书的一个简短代表。

这个指纹(fingerprint)是通过一个哈希算法得到的字符串,为了得到你的证书的SHA-1 fingerprint,首先要找到你的debug keystore 文件,文件名叫debug.keystore。

默认情况下它和虚拟机AVD存放在一起,win7下的路径是:C:\Users\your_user_name\.android\,也可以通过Eclipse中的Windows > Prefs > Android > Build来查看这个路径。

然后,在cmd命令行里运行下列命令:

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

就显示一大堆东西,其中就有证书指纹:

SHA1那一行就包含了证书的SHA-1 fingerprint,是二十段用冒号割开的数字段,每段是两个十六进制的数。

在Google APIs Console上创建API Project

在Google APIs Console上创建项目,并且注册Maps API。

首先,去这个网址:https://code.google.com/apis/console/

用Gmail的账户登录,如果是第一次的话,需要创建项目,默认情况会创建一个叫做API Project的项目。

点击左边的Services,会在中间看到很多的APIs和Services,找到Google Maps Android API v2,然后把它设置成on,需要接受一些服务条款。

获得API Key

在左边的导航条中选择API Access。

在出来的页面中选择Create New Android Key...就可以生成key了:

Google Maps Android API V2使用及问题解决

然后在对话框中填入:SHA-1 指纹, 分号隔开,然后是应用的 package name.然后就会生成一个Key。

比如:

Google Maps Android API V2使用及问题解决

3.把API Key加入应用程序

首先,建立虚拟设备AVD和应用程序。

关于AVD,官方文档并没详细介绍,我后面会有说明。

建立好应用程序,注意包名应该和申请key时候的包名一致。

之后修改AndroidManifest.xml文件:

3.1.在元素中加入子标签

  1. <meta-data
  2. android:name="com.google.android.maps.v2.API_KEY"
  3. 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中的其他具体设置

许可设置

作为 的子元素,需要加入下列一些:

  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特性支持

同样也是作为 的子元素。

  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. package com.example.mapdemo;
  3. import android.app.Activity;
  4. import android.os.Bundle;
  5. public class MainActivity extends Activity {
  6. @Override
  7. protected void onCreate(Bundle savedInstanceState) {
  8. super.onCreate(savedInstanceState);
  9. setContentView(R.layout.main);
  10. }
  11. }

遇到的问题和解决的方法

程序编译错误,显示找不到一些类

如图:

Google Maps Android API V2使用及问题解决

解决这个问题,首先需要把Google Play services的类库加载进来:

在Eclipse里面选择:File > Import > Android > Existing Android Code Into Workspace然后点击Next.

之后Browse..., 找到路径下的/extras/google/google_play_services /libproject/google-play-services_lib, 然后选择Finish。

第二步是添加对这个库的引用:

在自己的项目上右键,选Properties,左边选Android,然后在下面的Library里面Add刚才的google-play-services_lib。

之后程序就应该能运行了。

接着你可能会碰到下面的问题:

程序运行成功,但是显示This app won't run unless you update Google Play services.

如图:

有传言说V2不能在AVD上运行,可能Google还会对此问题进行更新。

经过搜索,这个问题已经在Stackoverflow上被讨论过了,链接

所以看来在AVD上运行的问题已经被解决了。

解决的方法就是在AVD上安装两个包:vending.apk和gms.apk,(给一个网盘链接)

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

安装时把那两个包放在当前目录,用命令行安装:

之后运行程序,就出地图了:





本页地址: [复制地址]
该页内容非本站原创 收藏自:http://rd.189works.com/article-108450-1.html
返回顶部 关闭(快捷键alt+C)
评论统计(0条)| 我要评论
暂无评论内容!
我要评论 
我要评论: 带*部分需要填写
 姓名称呼: * 请填写您的姓名或呢称
联系方式: QQ,MSN,Email都可以,方便交流 (仅管理员可见)
 评论内容: * 不超过100字符,50汉字
验证码:
    
  推荐链接
  最近更新  
·Host 'XXX' is not allowed...
·Win2008或IIS7的文件上传大...
·IIS7.0上传文件限制的解决方...
·测试信息2015-03-11
·asp.net中处理图片
·ASP.NET之Web打印-终极解决...
·Asp.net下C#调用Word模版实...
·asp.net下将页面内容导入到...
·asp.net导出为pdf文件
·asp.net生成pdf文件
·FCKeditor 文本编辑器的使用...
·ASP.NET 将数据生成PDF
·asp.net2.0导出pdf文件完美...
·AspJpeg的安装与测试
·JS验证浏览器版本对IE11的支...
  热门浏览  
·IE8和IE9出现“此网页上的问...
·无线路由器密码破解,教你断...
·js替换所有回车换行符
·QQ/MSN在线交流代码
·IE弹出“中国工商银行防钓鱼...
·如何取消键盘上的一些快捷键...
·win7声音小的解决方法
·webdav漏洞的利用
·强制两端对齐的函数或者CSS...
·win7下成功安装sql server ...
·显示器分辨率调的过高导致电...
·天诺时空技术技术论坛
·js验证手机号码格式
·JS展开和收缩效果(二)
·本地计算机上的 MSSQLSERVE...
  碧海澜涛居
网站首页关于本站站长简介开发案例技术资料美文日志摄影相册读书收藏影视收藏留言板
版权所有:碧海澜涛 QQ:410436434 Email:shaopo_guo@163.com 苏ICP备15000526号
免责声明:本站为个人网站,站内所有文字、图片等各类资料均为个人兴趣爱好所收集,不用作任何商业用途,亦不保证资料的真实性,若有因浏览本站内容而导致的各类纠纷,本站也不承担任何责任。本站部分内容来自互联网,如有涉及到您的权益或隐私请联系站长解决。