專用設(shè)備的時(shí)間異常導(dǎo)致上報(bào)數(shù)據(jù)時(shí)攜帶的時(shí)間是錯(cuò)誤的,設(shè)備自帶的網(wǎng)絡(luò)校準(zhǔn)服務(wù)失效,可以從任意能訪問到的地址拿到一個(gè)服務(wù)器時(shí)間做對(duì)比。
val okHttpClient = OkHttpClient.Builder()
.connectTimeout(10, TimeUnit.SECONDS)
.writeTimeout(10, TimeUnit.SECONDS)
.build()
val request = Request.Builder()
//這里地址可以換成自己服務(wù)器的接口地址,只有能通就行。
.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)
//這里拿到的時(shí)間就是服務(wù)器的時(shí)間。
if (date != null) {
val span = TimeUtils.getTimeSpan(date, Date(), TimeConstants.MIN)
LogUtils.e("時(shí)間間隔:$span")
if (abs(span) > 10) {
withContext(Dispatchers.Main) {
timeErrorPopup.show()
}
}
}
}
}
} catch (e: Exception) {
e.printStackTrace()
} finally {
//釋放
okHttpClient.connectionPool().evictAll()
}