最近项目中要对用户的地理位置进行定位,本节记录了Android中经纬度的获取过程。
一、Android中三种定位方式
GPS定位:手机一般都有GPS芯片,卫星信号已经覆盖全球,手机接收卫星发射的信号,可以推算出手机到每颗卫星的距离,根据卫星的位置,推测出手机的位置。GPS定位适用于开阔的户外,并且天气晴朗条件下,室内、室外有遮挡物、室外大楼密集等情况,接收不到卫星信号,会定位失败。GPS定位最为准确,误差一般不会超过50m,但耗电量大,用户较为反感,用户不会长时间开启GPS定位功能,此外GPS启用后到第一次成功定位,会比较耗时。
WiFi定位:WiFi热点一般都在固定位置,所以只要能知道手机连接的WiFi热点的位置,也就可以推算出手机的位置。而且手机一般连接的WiFi不会太远,所以其实精确度也不会太差,也不会像GPS那样需要耗时比较久才能获得位置信息。
基站定位:各大运营商的基站已经覆盖了全国大部分地区,每个基站的ID号是全球唯一的,只要手机能接收到周围基站的信号(手机有信号),用收到该基站的信号强度当做相对基站的距离,开启流量开关,通过GPRS可以获取到手机连接基站的位置信息。
二、定位场景
成功定位情况:
1 如果用户在开阔的室外(GPS开,WiFi可关可开,sim卡可以不插,可以不联网),并且天气晴朗,一般可以收到良好的GPS信号,GPS会定位成功。
2 如果用户在封闭的室内,无法收到GPS信号,此时手机必须要联网才能获得定位信息,手机要插sim卡且有信号或者手机开启WiFi且附近有热点,如果两种信号都收不到,无法定位。
无法定位情况:
1 用户在封闭的室内,且没有联网。但此时可以采用SharePreference中的记录,返回最近一次成功定位数据。
2 用户在室外,有大雨,大雾,阴天,且没有联网。
三、Android获取经纬度方法
1 百度、高德等SDK,百度定位SDK,