尊敬的开发者:
北京时间2019年4月7日8时起,由于全球定位系统(GPS)的周数翻转事件(GPS Week Number Rollover),部分GPS芯片会因未对“GPS周数翻转”进行兼容处理,导致从GPS中获取的日期持续错误。
此事件为小概率事件,大部分新款智能手机及芯片不会遇到该问题,但不排除个别手机及芯片未对该问题进行兼容处理。为避免影响开发者使用,现将本次问题的原因、影响、解决方案公布如下,如开发者遇到类似情况可供参考。
一、问题原因
本次事件是由于GPS用来处理导航信号的周元素(Week Element)的方式引起的一个已知问题。GPS采用10比特定义域来对每个GPS时间信息中的周数进行编码,最多可以处理1024个周,这个期间被称为一个Epoch。在每个Epoch的结束时,接收机将周数复位为第0周,然后再次开始计数。GPS第一次周数清零时间为1999年8月22日,第二次清零为2019年4月7日。(注:因不同厂商GPS芯片内部处理逻辑不同,日期可能为1999年8月22日或其他错误日期)
二、影响产品
Android 定位SDK4.5.0及以下版本
三、影响点
1. 使用上述高德定位SDK获取到的定位类型为GPS定位的定位点时间,部分设备会返回错误日期。
2. 下游业务逻辑依赖此时间进行逻辑处理的,会导致判断异常。
四、解决方案
针对本次事件,在GPS周数翻转时刻,高德开放平台将采用系统时间和GPS对比的方法,如果二者相差超过一年,则时分秒取GPS时间,年月日取系统时间,以解决周数翻转带来的时间跳变问题使开发者内部用错时间。
五、建议修复方式
方案一:自主排查GPS定位时间的使用范围,当该时间参与业务逻辑时,需要添加如下兼容逻辑。
方案二:更新至新版Android 定位SDK(新版本已于4月2日发布)。
高德开放平台
2019年4月3日