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

2024-01-05 10:38

本文主要是介绍Android学习笔记 五七 使用Google Map API v2,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.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/

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。

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

二、准备调测环境

无论采用模拟器还是真实手机作为调测环境,需要确保设备已经安装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达成某些协议,可能小米手机上没有什么问题。

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

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

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

三、获取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的帐号,这个网站貌似不是很稳定,有时请求需要发送多次才能成功,可能有间歇性拦截,反正多给点耐心吧。





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

四、使用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开发相关文章
           

给我老师的人工智能教程打call!http://blog.csdn.net/jiangjunshow
这里写图片描述

这篇关于Android学习笔记 五七 使用Google Map API v2的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/572586

相关文章

Java中Map的五种遍历方式实现与对比

《Java中Map的五种遍历方式实现与对比》其实Map遍历藏着多种玩法,有的优雅简洁,有的性能拉满,今天咱们盘一盘这些进阶偏基础的遍历方式,告别重复又臃肿的代码,感兴趣的小伙伴可以了解下... 目录一、先搞懂:Map遍历的核心目标二、几种遍历方式的对比1. 传统EntrySet遍历(最通用)2. Lambd

C#中checked关键字的使用小结

《C#中checked关键字的使用小结》本文主要介绍了C#中checked关键字的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学... 目录✅ 为什么需要checked? 问题:整数溢出是“静默China编程”的(默认)checked的三种用

C#中预处理器指令的使用小结

《C#中预处理器指令的使用小结》本文主要介绍了C#中预处理器指令的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录 第 1 名:#if/#else/#elif/#endif✅用途:条件编译(绝对最常用!) 典型场景: 示例

SpringBoo WebFlux+MongoDB实现非阻塞API过程

《SpringBooWebFlux+MongoDB实现非阻塞API过程》本文介绍了如何使用SpringBootWebFlux和MongoDB实现非阻塞API,通过响应式编程提高系统的吞吐量和响应性能... 目录一、引言二、响应式编程基础2.1 响应式编程概念2.2 响应式编程的优势2.3 响应式编程相关技术

java中4种API参数传递方式统一说明

《java中4种API参数传递方式统一说明》在Java中,我们可以使用不同的方式来传递参数给方法或函数,:本文主要介绍java中4种API参数传递方式的相关资料,文中通过代码介绍的非常详细,需要的... 目录1. 概述2. 参数传递方式分类2.1 Query Parameters(查询参数)2.2 Path

Mysql中RelayLog中继日志的使用

《Mysql中RelayLog中继日志的使用》MySQLRelayLog中继日志是主从复制架构中的核心组件,负责将从主库获取的Binlog事件暂存并应用到从库,本文就来详细的介绍一下RelayLog中... 目录一、什么是 Relay Log(中继日志)二、Relay Log 的工作流程三、Relay Lo

使用Redis实现会话管理的示例代码

《使用Redis实现会话管理的示例代码》文章介绍了如何使用Redis实现会话管理,包括会话的创建、读取、更新和删除操作,通过设置会话超时时间并重置,可以确保会话在用户持续活动期间不会过期,此外,展示了... 目录1. 会话管理的基本概念2. 使用Redis实现会话管理2.1 引入依赖2.2 会话管理基本操作

Springboot请求和响应相关注解及使用场景分析

《Springboot请求和响应相关注解及使用场景分析》本文介绍了SpringBoot中用于处理HTTP请求和构建HTTP响应的常用注解,包括@RequestMapping、@RequestParam... 目录1. 请求处理注解@RequestMapping@GetMapping, @PostMappin

Java调用DeepSeek API的8个高频坑与解决方法

《Java调用DeepSeekAPI的8个高频坑与解决方法》现在大模型开发特别火,DeepSeek因为中文理解好、反应快、还便宜,不少Java开发者都用它,本文整理了最常踩的8个坑,希望对... 目录引言一、坑 1:Token 过期未处理,鉴权异常引发服务中断问题本质典型错误代码解决方案:实现 Token

springboot3.x使用@NacosValue无法获取配置信息的解决过程

《springboot3.x使用@NacosValue无法获取配置信息的解决过程》在SpringBoot3.x中升级Nacos依赖后,使用@NacosValue无法动态获取配置,通过引入SpringC... 目录一、python问题描述二、解决方案总结一、问题描述springboot从2android.x