移动编程.pptx
《移动编程.pptx》由会员分享,可在线阅读,更多相关《移动编程.pptx(52页珍藏版)》请在咨信网上搜索。
1、第第9章章 位置服位置服务与地与地图应用用本章学习目标:n了解位置服务的概念n了解地图密钥的申请方法n掌握获取位置信息的方法n掌握MapView和MapController的使用方法n掌握Google地图覆盖层的使用方法9.1位置服务n位置服务q位置服务(Location-BasedServices,LBS),又称定位服务或基于位置的服务,融合了GPS定位、移动通信、导航等多种技术,提供了与空间位置相关的综合应用服务q位置服务首先在日本得到商业化的应用q2001年7月,DoCoMo发布了第一款具有三角定位功能的手持设备q2001年12月,KDDI发布第一款具有GPS功能的手机q基于位置的服务发
2、展迅速,已涉及到商务、医疗、工作和生活的各个方面,为用户提供定位、追踪和敏感区域警告等一系列服务9.1位置服务n位置服务qAndroid平台支持提供位置服务的API,在开发过程中主要用到LocationManager和LocationProviders对象qLocationManager可以用来获取当前的位置,追踪设备的移动路线,或设定敏感区域,在进入或离开敏感区域时设备会发出特定警报qLocationProviders是能够提供定位功能的组件集合,集合中的每种组件以不同的技术提供设备的当前位置,区别在于定位的精度、速度和成本等方面9.1位置服务n位置服务q提供位置服务,首先需要获得Locat
3、ionManager对象q获取LocationManager可以通过调用android.app.Activity.getSystemService()函数实现qandroid.app.Activity.getSystemService()函数代码如下n代码第1行的Context.LOCATION_SERVICE指明获取的服务是位置服务n代码第2行的getSystemService()函数,可以根据服务名称获取Android提供的系统级服务1.String serviceString=Context.LOCATION_SERVICE;2.LocationManager LocationManag
4、er=(LocationManager)getSystemService(serviceString);9.1位置服务n位置服务qAndroid支持的系统级服务表ContextContext类的静态常量类的静态常量值值返回对象返回对象说明说明LOCATION_SERVICElocationLocationManager控制位置等设备的更新WINDOW_SERVICEwindowWindowManager最顶层的窗口管理器LAYOUT_INFLATER_SERVICElayout_inflaterLayoutInflater将XML资源实例化为ViewPOWER_SERVICEpowerPowe
5、rManager电源管理ALARM_SERVICEalarmAlarmManager在指定时间接受IntentNOTIFICATION_SERVICEnotificationNotificationManager 后台事件通知KEYGUARD_SERVICEkeyguardKeyguardManager锁定或解锁键盘SEARCH_SERVICEsearchSearchManager访问系统的搜索服务VIBRATOR_SERVICEvibratorVibrator 访问支持振动的硬件CONNECTIVITY_SERVICEconnectionConnectivityManager 网络连接管理W
6、IFI_SERVICEwifiWifiManager Wi-Fi连接管理INPUT_METHOD_SERVICEinput_methodInputMethodManager 输入法管理9.1位置服务n位置服务q在获取到LocationManager后,还需要指定LocationManager的定位方法,然后才能够调用LocationManagerqgetLastKnowLocation()方法获取当前位置qLocationManager支持的定位方法有两种nGPS定位:可以提供更加精确的位置信息,但定位速度和质量受到卫星数量和环境情况的影响n网络定位:提供的位置信息精度差,但速度较GPS定位快
7、9.1位置服务n位置服务qLocationManager支持定位方法q在指定LocationManager的定位方法后,则可以调用getLastKnowLocation()方法获取当前的位置信息LocationManagerLocationManager类类的静态常量的静态常量值值说明说明GPS_PROVIDERgps使用GPS定位,利用卫星提供精确的位置信息,需要android.permissions.ACCESS_FINE_LOCATION用 户权限NETWORK_PROVIDERnetwork使用网络定位,利用基站或Wi-Fi提供近似的位置信息,需要具有如下权限:android.perm
8、ission.ACCESS_COARSE_LOCATION或android.permission.ACCESS_FINE_LOCATION.9.1位置服务n位置服务q以使用GPS定位为例,获取位置信息的代码如下n代码第2行返回的Location对象中,包含了可以确定位置的信息,如经度、纬度和速度等q通过调用Location中的getLatitude()和getLonggitude()方法可以分别获取位置信息中的纬度和经度,示例代码如下1.String provider=LocationManager.GPS_PROVIDER;2.Location location=locationManage
9、r.getLastKnownLocation(provider);1.double lat=location.getLatitude();2.double lng=location.getLongitude();9.1位置服务n位置服务qLocationManager提供了一种便捷、高效的位置监视方法requestLocationUpdates(),可以根据位置的距离变化和时间间隔设定产生位置改变事件的条件,这样可以避免因微小的距离变化而产生大量的位置改变事件qLocationManager中设定监听位置变化的代码如下n第1个参数是定位的方法,GPS定位或网络定位n第2个参数是产生位置改变事件
10、的时间间隔,单位为微秒n第3个参数是距离条件,单位是米n第4个参数是回调函数,在满足条件后的位置改变事件的处理函数locationManager.requestLocationUpdates(provider,2000,10,locationListener);9.1位置服务n位置服务n代码将产生位置改变事件的条件设定为距离改变10米,时间间隔为2秒n实现locationListener的代码如下q第2行代码onLocationChanged()在设备的位置改变时被调用1.LocationListener locationListener=new LocationListener()2.pub
11、lic void onLocationChanged(Location location)3.4.public void onProviderDisabled(String provider)5.6.public void onProviderEnabled(String provider)7.8.public void onStatusChanged(String provider,int status,Bundle extras)9.10.;9.1位置服务n位置服务q第4行的onProviderDisabled()在用户禁用具有定位功能的硬件时被调用q第6行的onProviderEnabl
12、ed()在用户启用具有定位功能的硬件时被调用q第8行的onStatusChanged()在提供定位功能的硬件的状态改变时被调用,如从不可获取位置信息状态到可以获取位置信息的状态,反之亦然9.1位置服务n位置服务q为了使GPS定位功能生效,还需要在AndroidManifest.xml文件中加入用户许可q实现代码如下9.1位置服务n位置服务qCurrentLocationDemo是一个提供位置服务的基本示例,提供了显示当前位置新的功能,并能够监视设备的位置变化9.1位置服务n位置服务q位置服务一般都需要使用设备上的硬件,最理想的调试方式是将程序上传到物理设备上运行,但在没有物理设备的情况下,也可
13、以使用Android模拟器提供的虚拟方式模拟设备的位置变化,调试具有位置服务的应用程序n首先打开DDMS中的模拟器控制,在LocationControls中的Longitude和Latitude部分输入设备当前的经度和纬度,然后点击Send按钮,就将虚拟的位置信息发送到Android模拟器中9.1位置服务n位置服务q在程序运行过程中,可以在模拟器控制器中改变经度和纬度坐标值,程序在检测到位置的变化后,会将最新的位置信息显示在界面上q但笔者在1.5版本的Android模拟器中进行调试时,发现模拟器控制器只能成功的将虚拟坐标发送到模拟器中2次,超过2次后模拟器对新发送的虚拟坐标不再响应9.1位置服
14、务n位置服务q下面是CurrentLocationDemo示例中LocationBasedServiceDemo.java文件的完整代码1.package edu.hrbeu.LocationBasedServiceDemo;2.3.import android.app.Activity;4.import android.content.Context;5.import android.os.Bundle;6.import android.widget.TextView;7.import android.location.Location;8.import android.location.L
15、ocationListener;9.import android.location.LocationManager;10.9.1位置服务n位置服务11.public class LocationBasedServiceDemo extends Activity 12.Override13.public void onCreate(Bundle savedInstanceState)14.super.onCreate(savedInstanceState);15.setContentView(R.layout.main);16.17.String serviceString=Context.LO
16、CATION_SERVICE;18.LocationManager locationManager=(LocationManager)getSystemService(serviceString);19.String provider=LocationManager.GPS_PROVIDER;20.Location location=locationManager.getLastKnownLocation(provider);21.getLocationInfo(location);22.locationManager.requestLocationUpdates(provider,2000,
17、0,locationListener);23.24.9.1位置服务n位置服务25.private void getLocationInfo(Location location)26.String latLongInfo;27.TextView locationText=(TextView)findViewById(R.id.txtshow);28.if(location!=null)29.double lat=location.getLatitude();30.double lng=location.getLongitude();31.latLongInfo=Lat:+lat+nLong:+l
18、ng;32.33.else34.latLongInfo=No location found;35.36.locationText.setText(Your Current Position is:n+latLongInfo);37.38.39.private final LocationListener locationListener=new LocationListener()40.Override41.public void onLocationChanged(Location location)42.getLocationInfo(location);43.9.1位置服务n位置服务44
19、.Override45.public void onProviderDisabled(String provider)46.getLocationInfo(null);47.48.Override49.public void onProviderEnabled(String provider)50.getLocationInfo(null);51.52.Override53.public void onStatusChanged(String provider,int status,Bundle extras)54.55.;56.9.2 Google地图应用n9.2.1申请地图密钥q首先向Go
20、ogle申请一组经过验证的“地图密钥”(MapAPIKey),然后使用MapView(com.google.android.maps.MapView)就可以将Google地图嵌入到Android应用程序中,才能正常使用Google的地图服务q“地图密钥”是访问Google地图数据的密钥,无论是模拟器还是在真实设备中需要使用这个密钥9.2 Google地图应用n9.2.1申请地图密钥q注册“地图密钥”的第一步是申请一个Google账户,也就是Gmail电子邮箱,申请地址是https:/ Google地图应用n9.2.1申请地图密钥n获取证书的保存地址:首先打开Eclipse,通过WindowPr
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 移动 编程
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【a199****6536】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【a199****6536】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。