手机编程与手机游戏设计_第10讲 位置服务与地图应用 (1)

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

第10章位置服务与地图应用计算机学院张曙光主讲介绍:„张曙光„武汉大学计算机学院„电话:13808694857„飞信群:32160089(武汉大学智能手机群)„Email:13808694857@139.com„QQ群:82961565(whu手机爱好者)2010年11月17日星期三10.1位置服务„位置服务‰CurrentLocationDemo是一个提供位置服务的基本示例,提供了显示当前位置新的功能,并能够监视设备的位置变化10.2Google地图应用„10.2.2使用Google地图‰运行结果如图„地图模式10.2Google地图应用„10.2.2使用Google地图‰运行结果如图„地图模式10.2Google地图应用„10.2.2使用Google地图‰运行结果如图„卫星模式10.2Google地图应用„使用Overlay‰在Google地图上添加覆盖层本章学习目标:„先演示程序结果,通过程序说明如下内容:„位置服务的概念„地图密钥的申请方法„掌握获取位置信息的方法„掌握MapView和MapController的使用方法„掌握Google地图覆盖层的使用方法„最后会讲到有些处理会比较花时间,如何办?10.1位置服务„位置服务‰位置服务(Location-BasedServices,LBS),‰又称定位服务或基于位置的服务,融合了GPS定位、移动通信、导航等多种技术,提供了与空间位置相关的综合应用服务10.1位置服务„位置服务‰位置服务首先在日本得到商业化的应用‰2001年7月,DoCoMo发布了第一款具有三角定位功能的手持设备‰2001年12月,KDDI发布第一款具有GPS功能的手机‰基于位置的服务发展迅速,已涉及到商务、医疗、工作和生活的各个方面,为用户提供定位、追踪和敏感区域警告等一系列服务10.1位置服务„位置服务‰Android平台支持提供位置服务的API,在开发过程中主要用到LocationManager和LocationProviders对象‰LocationManager可以用来获取当前的位置,追踪设备的移动路线,或设定敏感区域,在进入或离开敏感区域时设备会发出特定警报‰LocationProviders是能够提供定位功能的组件集合,集合中的每种组件以不同的技术提供设备的当前位置,区别在于定位的精度、速度和成本等方面10.1位置服务„位置服务‰提供位置服务,首先需要获得LocationManager对象‰获取LocationManager可以通过调用android.app.Activity.getSystemService()函数实现这是Activity的一个PublicMethodObjectgetSystemService(Stringname)Returnthehandletoasystem-levelservicebyname.Theclassofthereturnedobjectvariesbytherequestedname.10.1位置服务„位置服务10.1位置服务„位置服务‰Android支持的系统级服务表Context类的静态常量值返回对象说明LOCATION_SERVICElocationLocationManager控制位置等设备的更新WINDOW_SERVICEwindowWindowManager最顶层的窗口管理器LAYOUT_INFLATER_SERVICElayout_inflaterLayoutInflater将XML资源实例化为ViewPOWER_SERVICEpowerPowerManager电源管理ALARM_SERVICEalarmAlarmManager在指定时间接受IntentNOTIFICATION_SERVICEnotificationNotificationManager后台事件通知KEYGUARD_SERVICEkeyguardKeyguardManager锁定或解锁键盘SEARCH_SERVICEsearchSearchManager访问系统的搜索服务VIBRATOR_SERVICEvibratorVibrator访问支持振动的硬件CONNECTIVITY_SERVICEconnectionConnectivityManager网络连接管理WIFI_SERVICEwifiWifiManagerWi-Fi连接管理INPUT_METHOD_SERVICEinput_methodInputMethodManager输入法管理10.1位置服务„位置服务‰获得LocationManager对象android.app.Activity.getSystemService()函数代码如下„代码第1行的Context.LOCATION_SERVICE指明获取的服务是位置服务„代码第2行的getSystemService()函数,可以根据服务名称获取Android提供的系统级服务1.StringserviceString=Context.LOCATION_SERVICE;2.LocationManagerLocationManager=(LocationManager)getSystemService(serviceString);10.1位置服务„位置服务‰在获取到LocationManager后,还需要指定LocationManager的定位方法,然后才能够调用LocationManager‰LocationManager支持的定位方法有两种„GPS定位:可以提供更加精确的位置信息,但定位速度和质量受到卫星数量和环境情况的影响„网络定位:提供的位置信息精度差,但速度较GPS定位快‰getLastKnowLocation()方法获取当前位置10.1位置服务„位置服务‰LocationManager支持定位方法‰在指定LocationManager的定位方法后,则可以调用getLastKnowLocation()方法获取当前的位置信息LocationManager类的静态常量值说明GPS_PROVIDERgps使用GPS定位,利用卫星提供精确的位置信息,需要android.permissions.ACCESS_FINE_LOCATION用户权限NETWORK_PROVIDERnetwork使用网络定位,利用基站或Wi-Fi提供近似的位置信息,需要具有如下权限:android.permission.ACCESS_COARSE_LOCATION或android.permission.ACCESS_FINE_LOCATION.10.1位置服务„位置服务‰以使用GPS定位为例,获取位置信息的代码如下„代码第2行返回的Location对象中,包含了可以确定位置的信息,如经度、纬度和速度等1.Stringprovider=LocationManager.GPS_PROVIDER;2.Locationlocation=locationManager.getLastKnownLocation(provider);10.1位置服务„位置服务‰通过调用Location中的getLatitude()和getLonggitude()方法可以分别获取位置信息中的纬度和经度,示例代码如下1.doublelat=location.getLatitude();2.doublelng=location.getLongitude();10.1位置服务„位置服务‰前面的getLastKnownLocation可以获得一次位置值,一般希望能监视手机位置变化‰LocationManager提供了一种便捷、高效的位置监视方法requestLocationUpdates(),‰requestLocationUpdates()可以根据位置的距离变化和时间间隔设定产生位置改变事件的条件,这样可以避免因微小的距离变化而产生大量的位置改变事件10.1位置服务„位置服务‰LocationManager中设定监听位置变化的PublicMethod如下voidrequestLocationUpdates(Stringprovider,longminTime,floatminDistance,LocationListenerlistener)Registersthecurrentactivitytobenotifiedperiodicallybythenamedprovider.„第1个参数是定位的方法,GPS定位或网络定位„第2个参数是产生位置改变事件的时间间隔,单位为微秒„第3个参数是距离条件,单位是米„第4个参数是回调函数,在满足条件后的位置改变事件的处理函数10.1位置服务„位置服务‰LocationManager中设定监听位置变化的代码如下„第1个参数是定位的方法,GPS定位或网络定位„第2个参数是产生位置改变事件的时间间隔,单位为微秒„第3个参数是距离条件,单位是米„第4个参数是回调函数,在满足条件后的位置改变事件的处理函数1.Stringprovider=LocationManager.GPS_PROVIDER;2.locationManager.requestLocationUpdates(provider,2000,10,locationListener);10.1位置服务„位置服务„LocationListener是一个位置监听器publicinterfaceLocationListenerandroid.location.LocationListenerUsedforreceivingnotificationsfromtheLocationManagerwhenthelocationhaschanged.10.1位置服务„位置服„实现locationListener的代码如下‰第2行代码onLocationChanged()在设备的位置改变时被调用1.LocationListenerlocationListener=newLocationListener(){2.publicvoidonLocationChanged(Locationlocation){3.}4.publicvoidonProviderDisabled(Stringprovider){5.}6.publicvoidonProviderEnabled(Stringprovider){7.}8.publicvoidonStatusChanged(Stringprovider,intstatus,Bundleextras){9.}10.};10.1位置服务„位置服务‰第4行的onProviderDisabled()在用户禁用具有定位功能的硬件时被调用‰第6行的onProviderEnabled()在用户启用具有定位功能的硬件时被调用‰第8行的onStatusChanged()在提供定位功能的硬件的状态改变时被调用,如从不可获取位置信息状态到可以获取位置信息的状态,反之亦然10.1位置服务„位置服务‰为了使GPS定位功能生效,还需要在AndroidManifest.xml文件中加入用户许可‰实现代码如下uses-permissionandroid:name=android.permission.ACCESS_FINE_LOCATION/10.1位置服务„位置服务‰CurrentLocationDemo是一个提供位置服务的基本示例,提供了显示当前位置新的功能,并能够监视设备的位置变化10.1位置服务„位置服务‰位置服务一般都需要使用设备上的硬件‰最理想的调试方式是将程序上传到物理设备上运行‰也可以使用Android模拟器提供的虚拟方式模拟设备的位置变化,调试具有位置服务的应用程序10.1位置服务„位置服务‰使用Android模拟器提供的虚拟方式模拟设备的位置变化,调试具有位置服务的应用程序„打开DDMS中的模拟器控制,在LocationControls中的Longitude和Latitude部分输入设备当前的经度和纬度,点击Send

1 / 86
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功