专用设备的时间异常导致上报数据时携带的时间是错误的,设备自带的网络校准服务失效,可以从任意能访问到的地址拿到一个服务器时间做对比。
val okHttpClient = OkHttpClient.Builder()
.connectTimeout(10, TimeUnit.SECONDS)
.writeTimeout(10, TimeUnit.SECONDS)
.build()
val request = Request.Builder()
//这里地址可以换成自己服务器的接口地址,只有能通就行。
.url("https://www.baidu.com")
.get()
.build()
try {
okHttpClient.newCall(request).execute().use {
val dateHeader = it.header("Date")
if (!dateHeader.isNullOrEmpty()) {
val format = SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss z", Locale.US)
val date = format.parse(dateHeader)
//这里拿到的时间就是服务器的时间。
if (date != null) {
val span = TimeUtils.getTimeSpan(date, Date(), TimeConstants.MIN)
LogUtils.e("时间间隔:$span")
if (abs(span) > 10) {
withContext(Dispatchers.Main) {
timeErrorPopup.show()
}
}
}
}
}
} catch (e: Exception) {
e.printStackTrace()
} finally {
//释放
okHttpClient.connectionPool().evictAll()
}