第11章 Android GPS位置服务与地图编程

Slides:



Advertisements
Similar presentations
第 3 章 测绘项目和测绘市场管理制度 3.1 测绘项目管理制度 测绘项目技术管理主要从技术立法、技术基础设施 建立、技术业务及质量保障、技术创新及新技术、先进 设备使用、推广等几方面加以规范和管理。对此,测绘 法律法规对建立测绘基准和测绘系统、制定测绘技术规 范和标准、坐标系统选择、测绘质量监督管理等内容作.
Advertisements

湖南城市学院 Android 智能手机开发 信息科学与工程学院 主 讲:李 旎. 湖南城市学院 课程结构 Android 平台概述 – 平台介绍 开发环境: – 构建 Android 开发环境 Android 的基本操作 -- 五种基本操作 应该程序: – 应用程序结构 典型应用: – 用户界面 –
开发入门 一个 android 初学者的心得与体会. 前言 两周前张老师通知我说,让我根据教练助手的学习与开发的过程讲下 android 开发的心得与体会,我觉得自己在这么多 Android 前辈大佬面前讲 android 简 直是班门弄斧。由于是刚入门的初学者,水平有限,很多方面还很不足,对 错误或不周到之处欢迎批评指正。顺便还得提下,我这个标题有抄袭积聚童.
Java 程序设计 案例教程 北京大学出版社 第 01 章. Java 程序设计案例教程 第 01 章 Java 语言与面向对象程序设计 Java 语言的历史 Java 语言的特点 Java 程序的分类 Java 环境配置 Eclipse 的安装 Java 程序的调试 教学目标.
Android ADT + Android SDK Eclipse Eclipse 編輯器 JAVA JAVA 開發工具.
MBA专项赛、移动互联网创业专项赛 有关情况介绍 共青团湖北省委学校部 2014年3月25日.
班級:醫管3B 組別:第二組 組員:王品媛、郭雅瑄、謝淑玲、蔡孟蔙
中创联厂区WI-FI 商业计划书.
第一章 Android简介与环境搭建 QQ号: QQ群: (Android编程入门) 网络资源:
(讲座幻灯课件请在网上下载,让我们一起思考!)
面向对象程序设计(Java) 徐志红
Android环境搭建 倚动软件工厂实验室 网络课程地址:
實驗五:多媒體播放器選單介面.
Part 2 開發Android應用程式的流程
OUTLINE Android app Devolpment Flow App反組譯解說 實例 簽名詳解 DalvikByteCode
位置與地圖應用 此投影片為講解Android如何取得定位經緯度和使用Google Map地圖.
第二章 B4A程式語言的開發環境 課程名稱:程式設計 授課老師:李春雄 博士
做一个智慧快乐的班主任.
科學科 污染 空氣 成因 的 : 題目 及 減少空氣污染的方法 陳玉玲 (4) 姓名 : 去到目錄.
Android App 系統開發教學 Luna 陳雯琳 2014/12/18
使用Android Studio 開發Android App 靜宜大學資管系 楊子青
建立Android新專案 建國科技大學 資管系 饒瑞佶 2010/10.
厦门大学数据库实验室 报告人:谢荣东 导师:林子雨 2014年8月30日
實驗四:單位轉換程式.
CH3 Eclipse.
Android + JUnit 單元測試 建國科技大學資管系 饒瑞佶 2012/8/19V4.
實驗十三:顯示目前經緯度位置.
安裝JDK 安裝Eclipse Eclipse 中文化
Android程式開發準備 Android智慧型手機程式設計 建國科技大學 資管系 饒瑞佶 2012/4 V1 2012/8 V2
Android開發環境建置與設定 Android智慧型手機程式設計 程式設計與應用班 建國科技大學 資管系 饒瑞佶 2012/4 V1
安裝與設置 Android 發展環境 靜宜大學資工系 蔡奇偉副教授 ©.
Android SDK工具 Android智慧型手機程式設計 建國科技大學 資管系 饒瑞佶 2012/4 V1 2012/8 V2
第9章 位置服务与地图应用.
第一个Android程序 本讲大纲: 1、创建Android应用程序 2、Android项目结构说明 3、运行Android应用程序
第8章 Android内容提供者(ContentProvider)应用
第4章 Android生命周期.
第9章 使用意圖啟動活動與內建應用程式 9-1 意圖的基礎 9-2 使用意圖啟動活動
ANDROID PROGRAMMING2.
Android開發環境建置與設定 建國科技大學 資管系 饒瑞佶 2010/10.
實驗十四:顯示與控制地圖.
建立Android新專案 Android智慧型手機程式設計 程式設計與應用班 建國科技大學 資管系 饒瑞佶 2012/4 V1
第8章 Service解析.
Android 视频教程简介.
建國科技大學 資管系 饒瑞佶 2012/4 V1 2012/8 V2 2013/2 V3 2014/9 V4
Embed Google Map 資二乙 1號 王思洋.
使用Android模拟器 本讲大纲: 1、模拟器概述 2、Android虚拟设备和模拟器 3、Android模拟器启动与停止 4、控制模拟器
第10章 GPS位置服务与地图编程.
Android智慧型手機程式設計實務應用班
實驗十一:待辦事項程式 (儲存在手機上).
Android 开发入门.
生涯手冊第18頁 生涯統整面面觀.
第10章 GPS位置服务与地图编程 QQ号: QQ群: (Android编程入门) 网络资源:
網路應用.
Java變數 2014/6/24.
專利資料視覺化分析平台 功能畫面介紹 2015/11/02 資料服務組
課程網站
Location Based Services - LBS
Java程式初體驗大綱 大綱 在學程式之前及本書常用名詞解釋 Hello Java!程式 在Dos下編譯、執行程式
Ch8 顧客關係維繫 與量化滿意度 陳水蓮 林書旭 楊婷媖 編著.
Review 1~3.
實驗十六:匯出APK安裝檔與軟體上架.
第二章 Java基本语法 讲师:复凡.
2012清大資工系 「頂尖企業暑期實習」 經驗分享心得報告 實習企業:工研院(ITRI) 實習學生:資工系 李東恩.
班級:210 學號:60915 姓名:李佾璇 學號:60935 姓名:趙家瑩 學號:60938 姓名:鄭伊婷
第2章 Java语言基础.
第9章 BroadcastReceiver的使用
Android进程间通讯.
東吳大學『樂齡大學』 外雙溪環境與生態 產業 黃顯宗 東吳大學 微生物學系 101.
控制UI界面 本讲大纲: 1、使用XML布局文件控制UI界面 2、在代码中控制UI界面 3、使用XML和Java代码混合控制UI界面
社群定位資訊系統 葉國賢 組員: 吳俊億 鄧硯文 郭冠良 魏毓男
Presentation transcript:

第11章 Android GPS位置服务与地图编程 QQ号:1281147324 QQ群:489059718(Android编程-清华版) 287966120(公共版) 网络资源:http://www.xs360.cn/book

主要内容

11.1 GPS位置服务编程 位置服务(Location-Based Services,LBS),又称定位服务或基于位置的服务,融合了GPS定位、移动通信、导航等多种技术,提供了与空间位置相关的综合应用服务。

11.1.1 支持位置服务的核心API Android为支持位置服务,提供了android.location包,该包中包含了与位置信息密切相关的类和接口,主要有:LocationManager、LocationProvider、Location、LocationListener。 LocationManager(定位管理者)类是访问android系统位置服务的入口,所有定位相关的服务、对象都将由该类的对象来产生。和其他服务一样,程序不能直接创建LocationManager对象,而是通过Context的getSystemService()方法来获取。 LocationManager locMg=getSystemService(Context.LOCATION_SERVICE) ;

11.1.1支持位置服务的核心API 一旦得到了LocationManager对象,即可调用LocationManager类的方法获取定位相关的服务和对象,例如获取最佳定位提供者、实现临近警报功能等,该类的常用方法如下: public String getBestProvider (Criteria criteria, boolean enabledOnly):根据指定条件返回最优的LocationProvider;criteria表示过滤条件,enabledOnly表示是否要求处于启用状态; public Location getLastKnownLocation (String provider):根据LocationProvider获取最近一次已知的Location,provider表示提供上次位置的LocationProvider名称; public LocationProvider getProvider (String name):根据名称返回LocationProvider; public List<String> getProviders (boolean enabledOnly):获取所有可用的LocationProvider; public void requestLocationUpdates (String provider, long minTime, float minDistance, PendingIntent intent):通过指定的LocationProvider周期性地获取定位信息,并通过intent启动相应的组件,进行事件处理,provider表示LocationProvider的名称,mimTime表示每次更新的时间间隔,单位为毫秒,minDistance表示更新的最近位置,单位为米,intent每次更新时启动的组件;

11.1.1支持位置服务的核心API LocationProvider(定位提供者)类是对定位组件的抽象表示,用来提供定位信息,能够周期性的报告设备的地理位置,Android中支持多种LocationProvider,它们以不同的技术提供设备的当前位置,区别在于定位的精度、速度和成本等方面。常用的LocationProvider主要有以下两种。 network:由LocationManager.NETWORK_PROVIDER常量表示,代表通过网络获取定位信息的Location Provider对象; gps:由LocationManager.GPS_PROVIDER常量表示,代表通过GPS获取定位信息的LocationProvider对象。 GPS相对来说精度更高,但它只能在户外工作,很费电,并且不能像用户期望的那样立即就能返回位置信息,而网络位置提供器使用手机发射塔或Wi-Fi信号来判断用户位置,在室内室外都能工作、响应速度快,并且更加省电。

11.1.1支持位置服务的核心API LocationProvider类的常用方法如下: int getAccuracy():返回该LocationProvider的精度; String getName():返回该LocationProvider的名称; boolean hasMonetaryCost():返回该LocationProvider是收费的还是免费的; boolean supportsAltitude():判断该LocationProvider是否支持高度信息; boolean supportsBearing():判断该LocationProvider是否支持方向信息; boolean supportsSpeed():判断该LocationProvider是否支持速度信息; Location类 就是代表位置信息的抽象类,通过Location可获取定位信息的精度、高度、方向、纬度、经度、速度以及该位置的LocationProvider等信息。

11.1.1支持位置服务的核心API LocationListener接口 用于监听定位信息的监听器,必须在定位管理器中注册该对象,这样在位置发生变化的时候就会触发相应的方法进行事件处理,该监听器包含的方法如下: public abstract void onLocationChanged (Location location):位置发生改变时回调该方法; public abstract void onProviderDisabled (String provider):Provider禁用时回调该方法; public abstract void onProviderEnabled (String provider):Provider启用时回调该方法; public abstract void onStatusChanged (String provider, int status, Bundle extras):当Provider状态发生变化时回调该方法;

11.1.2 简单位置服务应用 获取位置信息的通用步骤为: ①获取系统的LocationManager对象; ②使用Locationmanager,通过指定LocationProvider来获取定位信息,定位信息由Location来对象来表示; ③从Location对象中获取定位信息; 案例:获取位置信息 【示例代码:codes\10\LocationService】

11.2 Google Map服务编程 前面一节介绍了Android提供的API获取设备的定位信息,但得到的只是一些难记的经纬度的数值,对用户来说没有多大用处。 如果能将这些经纬度与我们的生活联系起来,以更形象直观的方式显示出来将会吸引更多的用户。本节将介绍Google地图的使用,并将位置信息和地图结合起来开发定位应用程序。

11.2.1使用Google地图的准备工作 Android系统默认并不支持调用Google Map,为了正常调用Google Map服务,需要先进行如下准备工作。 1、获取Google Map API Key 为了在应用程序中调用Google Map,必须先获取Google Map API的Key,步骤如下: 1)单击Eclipse的“Window”菜单,然后选择Preferences菜单项,弹出如图所示对话框;

11.2.1使用Google地图的准备工作 2)展开左边Android节点,选中Build子节点,即可在对话框中看到默认调试的keystore的存储位置,在此为D:\androiddeveloper\AVD\.android\debug.keystore,默认为你的模拟器文件的存储目录下。接下来根据keystore来生成Google API的Key; 3)使用JDK提供的keytool工具为Android keystore生成认证指纹,启动命令行窗口输入如下命令。keytool –list –keystore <Android keystore 的存储位置>,在此为: keytool –list –keystore D:\androiddeveloper\AVD\.android\debug.keystore

11.2.1使用Google地图的准备工作 注意:如果运行keytool工具时,提示”找不到该命令”,则说明还未在PATH环境变量中添加java安装目录下的bin路径,该路径下包含keytool.exe工具。如果keystore存储路径中包含空格时,也会提示错误,无法生成认证指纹,此时需修改AVD的存储路径,做法是在环境变量中,添加Android_SDK_Home变量,变量值为电脑上的任意路径,不包含空格。设置完成后,需重启Eclipse。 4)记住上面生成的认证指纹,登录 https://developers.google.com/maps/documentation/ android/maps-api-signup站点,界面如图所示;

11.2.1使用Google地图的准备工作 5)在界面的文本框中输入keytool工具生成的认证指纹,单击Generate API Key 按钮,系统显示如图(左)所示的页面。 6)在页面中输入自己的Google账户,如果还没有Google账户,可以先注册一个,如果已经有了Google账号,输入Google账户和密码,登录后如图(右)所示。

11.2.1使用Google地图的准备工作 2、创建支持Google Map API的AVD Android SDK默认并不支持Google Map,为了得到支持Google Map的SDK,必须为Android SDK添加相应的插件。启动Android的SDK Manager.exe工具,显示如图(左)所示的窗口,勾选Google API前面的复选框,然后单击Install package按钮。 安装完毕后,需要创建一个支持Google Map的模拟器,单击Eclipse中的模拟器管理界面,新建一个模拟器,如图(右)所示。

11.2.2 根据位置信息在地图上定位 Google地图核心API介绍 为了使开发者更容易在应用程序中添加强大的地图功能,Google提供了操作地图的API,存放在com.google.android.maps下。包括地图的显示、缩放、定位、标记等,核心API如下: MapView:用于显示地图的View组件。它派生自ViewGroup,它必须和MapActivity配合使用,而且只能被MapActivity创建,这是因为MapView需要通过后台的线程来连接网络或文件系统,这些线程要由MapActivity来管理。当MapView获取的焦点时,它将捕捉按键和触摸手势,自动地平移和缩放地图,还可以在地图上绘制许多Overlay类型标记。 MapActivity:该类是用于显示地图的Activity类,是一个抽象类,任何想要显示MapView的Activity都需要派生自MapActivity,并且在onCreate()中,都要创建一个MapView实例。 MapController:用于控制地图的移动、缩放等的工具类。

11.2.2 根据位置信息在地图上定位 GeoPoint:是一个包含经纬度位置的对象。 Overlay:是一个可显示在地图之上的可绘制的对象,常用于绘制标记。如果需要在地图上标注一些图标文字等信息,就需要使用Overlay,首先要将地图上的经度和纬度转换成屏幕上实际的坐标,才能将信息绘制上去。Map API中提供了Projection.toPixels(GeoPoint in,Point out)方法,可以将经度和纬度转换成屏幕上的坐标。然后实现Overlay中的draw()方法才能在地图上绘制信息。 GeoPoint:是一个包含经纬度位置的对象。 案例:输入一个经纬度即在地图上显示该位置信息,并在地图上标记出当前的位置 。【示例代码:codes\chapter11\NavigationTest】