![Android智能穿戴设备开发实战详解](https://wfqqreader-1252317822.image.myqcloud.com/cover/166/31729166/b_31729166.jpg)
5.3 在Android穿戴设备中使用地图
在Android穿戴设备中可以直接使用Google地图,可以用地图的形式显示位置信息。在接下来的内容中,将详细讲解在Android穿戴设备中使用Google地图的方法。
5.3.1 使用地图前的准备工作
Google地图给人们的生活带来了极大的方便。例如,可以通过Google地图查找商户信息、查看地图和获取行车路线等。Android平台也提供了一个map包(com.google.android.maps),通过其中的MapView就能够方便的利用Google地图的资源来进行编程。在使用前需要预先进行如下设置。
(1)添加maps.jar
在Android SDK中,以JAR库的形式提供了和Google Map有关的API,此JAR库位于“android-sdk-windows\add-ons\google_apis-4”目录之下。要把maps.jar添加到项目中,可以在项目属性中的“Android”栏中指定使用包含Google API的Target作为项目的构建目标,如图5-1所示。
![](https://epubservercos.yuewen.com/850D74/17180246404476806/epubprivate/OEBPS/Images/img00121001.jpg?sign=1738881264-u27jjO2TEVTDvMKwtxnoGMqGqeF5V4Ba-0-22aaade71103c147d9dee7a356b70f60)
图5-1 在项目中包含Google API
(2)将地图嵌入应用
通过使用MapActivity和MapView控件,可以轻松的将地图嵌入应用程序当中。在此步骤中,需要将Google API添加到构建路径中。方法是在图5-2所示界面中选择“Java Build Path”,然后在Target中选中Google APIs复选框,设置项目中包含Google API。
![](https://epubservercos.yuewen.com/850D74/17180246404476806/epubprivate/OEBPS/Images/img00121002.jpg?sign=1738881264-9ummdh3ZOvXvRW8a3zO06QELSL8EuBkE-0-243989c78d1a77157d5a705312bfb472)
图5-2 将Google API添加到构建路径
(3)获取Map API密钥
在利用MapView之前,必须先申请一个Android Map API Key。具体步骤如下所示。
(1)找到你的debug.keystore文件,通常位于如下目录:
![](https://epubservercos.yuewen.com/850D74/17180246404476806/epubprivate/OEBPS/Images/img00122001.jpg?sign=1738881264-hQxWme8fN8IS5I6xMHss5F8OhQi4Uatp-0-59a81fa776777b7347ae2086efa86f61)
(2)获取MD5指纹:运行cmd.exe,执行如下命令获取MD5指纹:
![](https://epubservercos.yuewen.com/850D74/17180246404476806/epubprivate/OEBPS/Images/img00122002.jpg?sign=1738881264-Ks7PMGRzj1Ukx58VVPrTSFq6cbArLVc8-0-73eca9e2d7e36c9e86351612c9f9f222)
例如,笔者机器输入如下命令:
![](https://epubservercos.yuewen.com/850D74/17180246404476806/epubprivate/OEBPS/Images/img00122003.jpg?sign=1738881264-VJig427FGrYAqUcoDsnFmwVtVjaZqSKQ-0-4b3e655d5a9272b1b5abdd0bdafebd5e)
此时系统会提示输入keystore密码,这时候输入android,系统就会输出我们申请的MD5认证指纹,如图5-3所示。
![](https://epubservercos.yuewen.com/850D74/17180246404476806/epubprivate/OEBPS/Images/img00122004.jpg?sign=1738881264-161AFqyPZ276Jos9bQwdHrfMA9T4fPTH-0-9632620ee5362662b00c28413a26062d)
图5-3 获取的认证指纹
注意
因为在CMD中不能直接复制、粘贴使用CMD命令,这样很影响编程效率,所以笔者使用了第三方软件PowerCmd来代替机器中自带的CMD工具。
(3)申请Android map的API Key:
打开浏览器,输入下面的网址:hhttp://code.google.com/intl/zh-CN/android/maps-api-signup.html,如图5-4所示。
![](https://epubservercos.yuewen.com/850D74/17180246404476806/epubprivate/OEBPS/Images/img00122005.jpg?sign=1738881264-gACNrYF2MBKXJEESOdN9EJ4wl00cjFAm-0-cc37d9913e3dc35cbce17b217c4320d3)
图5-4 申请主页
在Google的android map API Key申请页面上输入图5-3中得到的MD5认证指纹,按下“Generate API Key”按钮后即可转到下面这个画面,得到申请的API Key,如图5-5所示。
![](https://epubservercos.yuewen.com/850D74/17180246404476806/epubprivate/OEBPS/Images/img00123001.jpg?sign=1738881264-AJqUBWks9mvFsjSTgWBx86rhYnsduITd-0-8b1d01510507bd6a4177981bd9f01017)
图5-5 得到的API Key
到此为止,成功获取了一个API Key。
5.3.2 使用Map API密钥的流程
通过上一节的讲解,我们已经申请到了一个Android Map API Key,下面开始讲解使用Map API密钥实现编程的基本流程。
(1)在AndroidManifest.xml中声明权限。
在Anroid系统中,如果程序执行需要读取到安全敏感的项目,那么必须在Android-Manifest.xml中声明相关权限请求,比如这个地图程序需要从网络读取相关数据。所以必须声明android.permission.INTERNET权限。具体方法是在文件AndroidManifest.xml中添加如下代码。
![](https://epubservercos.yuewen.com/850D74/17180246404476806/epubprivate/OEBPS/Images/img00123002.jpg?sign=1738881264-TMKgM5cSPszqPPLSugheWcEmeMCpuiEF-0-06f9aca5f3c10063c2371182da76d969)
另外,因为maps类不是Android启动的默认类,所以还需要在文件AndroidManifest.xml的application标签中申明要用maps类:
![](https://epubservercos.yuewen.com/850D74/17180246404476806/epubprivate/OEBPS/Images/img00123003.jpg?sign=1738881264-ya2Vi5hI9WknKulpcap1uPPi4dF8enZW-0-ecf8c5f4c64f4890767aa1e7923db2cd)
下面是基本的AndroidManifest.xml文件代码:
![](https://epubservercos.yuewen.com/850D74/17180246404476806/epubprivate/OEBPS/Images/img00123004.jpg?sign=1738881264-fzh4EoyVu6pKTKErJgrG62XjVSNA9rhn-0-f703252e052fbb094af8098f56be2232)
(2)在文件main.xml中完成布局。
假设要显示杭州的卫星地图,并在地图上方有五个按钮,分别可以放大地图、缩小地图或者切换显示模式(卫星、交通、街景)。即整个界面主要由两个部分组成,上面是一排五个按钮,下面是Map View。
在Android中的LinearLayout是可以互相嵌套的,在此可以把上面五个按钮放在一个子LinearLayout里边(子LinearLayout的指定可以由android:addStatesFromChildren="true"实现),然后再把这个子LinearLayout添加到外面的父LinearLayout里。具体实现代码如下。
![](https://epubservercos.yuewen.com/850D74/17180246404476806/epubprivate/OEBPS/Images/img00124001.jpg?sign=1738881264-vt5yyhgfVFiUfacDYm1BxyXRX3CHVoe2-0-62903644ca75ab54ec7972458a7a1916)
(3)完成主Java程序代码首先,主文件的这个类必须继承MapActivity。
![](https://epubservercos.yuewen.com/850D74/17180246404476806/epubprivate/OEBPS/Images/img00124002.jpg?sign=1738881264-920SrTJQN1V57hHJcc8BFSEaYb1ONbjT-0-6146b9cccd7107df4777ffb95c6676d0)
接下来看onCreate()函数,其核心代码如下所示。
![](https://epubservercos.yuewen.com/850D74/17180246404476806/epubprivate/OEBPS/Images/img00124003.jpg?sign=1738881264-GGiMPEQMzp4vbTkaH8tewzEAEQzZbvy7-0-0a597b1f162cb04d10866781a0f18e6a)
![](https://epubservercos.yuewen.com/850D74/17180246404476806/epubprivate/OEBPS/Images/img00125001.jpg?sign=1738881264-taApiTaMm7fsFbPctd1pWor08ZsC5FQj-0-ca6d6da1463e4be6c4aea4a3139b112e)
然后编写缩放按钮的处理代码,具体如下所示。
![](https://epubservercos.yuewen.com/850D74/17180246404476806/epubprivate/OEBPS/Images/img00125002.jpg?sign=1738881264-qxJvFUoTdjly28yyTxGvt3y2Rl96ilnD-0-7f5b68d54887790aa9650594a1faff36)
地图模式的切换由下面代码实现
![](https://epubservercos.yuewen.com/850D74/17180246404476806/epubprivate/OEBPS/Images/img00125003.jpg?sign=1738881264-8QQAcp8L8VYHydj37vM7jWpxaDZLnaOm-0-f8056d7d714cfa45db0ac923bb13a99a)
到此为止,完成了第一个使用Map API的应用程序。