2。2 GPS服务
基于位置的服务简称LBS,这个技术随着移动互联网的兴起,在最近的几年里十分火爆,主要的工作原理就是利用无线电通讯网络或者GPS等定位方式来确定出移动设备所在的位置。而第一步就是确定自己的位置,在Android中并不困难,主要借助LocationManager类就可以实现了。首先获取到LocationManager的实例,可以通过调用Context。getSystemService(Context。LOCATION_SERVICE)方法得到。随后需要选择一个位置提供器来确定设备当前的位置。Android中一般有三种位置提供器可供选择,分别是GPS_PROVIDER、NETWORK_PROVIDER和PASSIVE_PROVIDER,前两种用的比较多,即使用GPS定位和使用网络定位。这两种方式各有千秋,GPS定位的精确度比较高,但是非常耗电而且速度较慢,而网络定位的精确度较差,但耗电量不多。用户可以在手机设置里根据自己的实际情况来选择使用哪一种位置提供器,在代码中也支持了选择各种位置提供器,在位置精度要求非常高的时候选择GPS_PROVIDER,而在一般情况下使用NETWORK_PROVIDER更好。随后将选择好的位置提供器传入到getLastKnownLocation()方法中即可得到一个Location对象,这个Location对象包含了经度、纬度、海拔等一系列位置信息,只需调用其中想要的信息就行了。调用Location对象中的相应方法获得经纬度,再调用地理反向编码的API即可获得位置信息。
2。2。1 谷歌地理反向编码
关于反向编码,谷歌的Geocoding API更适合功能的实现,参考了官方文档之后了解了工作原理,即在手机端向谷歌的服务器发起一条HTTP请求,并将经纬度的值作为参数一同传递过去,然后服务器会将这个经纬值转换成地理信息,再将信息返回给手机端,随后解析服务器返回的信息再进行处理。拼接好要发送的URL之后将经纬度发送过去,随后会收到一个JSON格式或XML格式的数据,系统此处选择了JSON格式,因为相比于XML格式JSON格式体积较小,在网络上进行传输的时候更省流量,减轻服务器端的负担。但缺点在于语义性较差,看起来不如XML直观。这里更看重流量的控制。在收到JSON格式的信息之后对其进行解析,有很多种方法,可以使用官方提供的JSONObject,也可以使用谷歌的开源库GSON,还有一些第三方的开源库如Jackson、FastJSON等。收到JSON信息之后将服务器返回的数据传入到一个JSONArray对象之中,然后循环便利这个JSONArray,从中提取出的每一个元素都是一个JSONObject对象,每个JSONObject对象又会包含一些特定的数据,之后调用getString()方法将数据取出即可。来:自[优.尔]论,文-网www.youerw.com +QQ752018766-
2。2。2 百度地理反向编码
参考百度的官方文档之后发现跟谷歌的API差别不大,在发起HTTP请求处拼接URL时需要添加一个百度地图SDK的KEY作为其中一部分,此处的KEY要选择服务端的KEY不能选择移动端的KEY。申请好KEY之后和谷歌并无二样。但是返回回来的JSON出现了不能转换为JSONObject的情况,只好对返回的JSON做了字符串截取处理,将其中有用的信息给提取了出来并通过Handler将信息发送给了主线程,在主线程内对UI进行操作,即将位置信息显示出来。相比谷歌,百度的定位不是很精准。
移动云计算环境下基于安卓平台的服务发现机制的设计和实现(4):http://www.youerw.com/jisuanji/lunwen_93448.html