![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=1738811442-AEoHH8bA0XfRnjiO10IsBeI7X6OTdlSU-0-e72643d2b09ddb8f41c82bbc98ae7eab)
图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=1738811442-3krpkE1hbgJ04Ey0fRoIRNIt8mZ5SnnZ-0-551f87d00677d5d701a61a888e2e5861)
图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=1738811442-cgx6IM2qjCmnqiMBwc9vt51wOKSoA6js-0-7071ef237fdf3652be3dbf3648f0b2ac)
(2)获取MD5指纹:运行cmd.exe,执行如下命令获取MD5指纹:
![](https://epubservercos.yuewen.com/850D74/17180246404476806/epubprivate/OEBPS/Images/img00122002.jpg?sign=1738811442-Dn6KSjel5bLX51j0IQAmDVM5H2FEZ6l0-0-31a3002294f9cfd27673f7679ec4556a)
例如,笔者机器输入如下命令:
![](https://epubservercos.yuewen.com/850D74/17180246404476806/epubprivate/OEBPS/Images/img00122003.jpg?sign=1738811442-BJNnizFKIFGRudV2ILyP1X8jVRG3yln7-0-b145fafc7c07f19a61fcdfe84fc0a62e)
此时系统会提示输入keystore密码,这时候输入android,系统就会输出我们申请的MD5认证指纹,如图5-3所示。
![](https://epubservercos.yuewen.com/850D74/17180246404476806/epubprivate/OEBPS/Images/img00122004.jpg?sign=1738811442-sSa6mlEDRwsSGn6uiU1b6PBevjcQ2Xs4-0-25fd8d1903e5a05a4416439dfe381cde)
图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=1738811442-a5DQg3fXbnB7erAYeDOvM6zMwTM19Xo7-0-4a45008b25fc88b788d447eaa4f060a7)
图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=1738811442-9YE6JD21DSqjrQ5fMyDLPeccjUPnIKoB-0-60bcede31734329327abf9d79ca9956f)
图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=1738811442-2NuE6W65qDwFqOWhTE73EdXveHiA0LzY-0-b43a9357304ee3cc888418b5083e3ebc)
另外,因为maps类不是Android启动的默认类,所以还需要在文件AndroidManifest.xml的application标签中申明要用maps类:
![](https://epubservercos.yuewen.com/850D74/17180246404476806/epubprivate/OEBPS/Images/img00123003.jpg?sign=1738811442-PgHsoCh4lSM36eO5KTuT7qX7G6ImBnWG-0-7c09d3d99880c9ae220cf767bf06a7f6)
下面是基本的AndroidManifest.xml文件代码:
![](https://epubservercos.yuewen.com/850D74/17180246404476806/epubprivate/OEBPS/Images/img00123004.jpg?sign=1738811442-vT9rRgVhAXt8JlJkgNdN2I2do3e27kIo-0-5d979b8d583148d65b81f197f574b9d1)
(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=1738811442-HfNazKuYmbyYVV1i8RwakL3ggty8tbg8-0-252205ad29a77933e21fb8fd2babd043)
(3)完成主Java程序代码首先,主文件的这个类必须继承MapActivity。
![](https://epubservercos.yuewen.com/850D74/17180246404476806/epubprivate/OEBPS/Images/img00124002.jpg?sign=1738811442-rRtm7P18MF6BduMe0aQfSlTBEJFwtvsh-0-55ff17b6095a437a282f5d221306820f)
接下来看onCreate()函数,其核心代码如下所示。
![](https://epubservercos.yuewen.com/850D74/17180246404476806/epubprivate/OEBPS/Images/img00124003.jpg?sign=1738811442-flqioxX7cYGkOQv98ab0BUgGMyVicXoN-0-a9c862a5de5ad0d43c56fe90ac99cab7)
![](https://epubservercos.yuewen.com/850D74/17180246404476806/epubprivate/OEBPS/Images/img00125001.jpg?sign=1738811442-Mu1TLI6DLB2I6bkfGIxpsCykfHapQUo4-0-efc64525f8aa751c3643da4bb27d2eb4)
然后编写缩放按钮的处理代码,具体如下所示。
![](https://epubservercos.yuewen.com/850D74/17180246404476806/epubprivate/OEBPS/Images/img00125002.jpg?sign=1738811442-LN2moLeJQZIx4wcpWG0O6Io1vJmEiZrF-0-6d0a6908db807f2da08b4dc7fd3b4649)
地图模式的切换由下面代码实现
![](https://epubservercos.yuewen.com/850D74/17180246404476806/epubprivate/OEBPS/Images/img00125003.jpg?sign=1738811442-3yIoLWfOHBUDztaSyFnF872b1Cbrm54C-0-156fe1cb344c1182dcde95dd3a68bb17)
到此为止,完成了第一个使用Map API的应用程序。