admin管理员组文章数量:1534545
2024年7月13日发(作者:)
在Android2.3.4系统中,Settings->Date & time->Automatic项打上后,时间会通过网络进
行同步,而Android默认使用的是NITZ来获取移动网络时间,需要有移动网络服务商的支
持才能使用,而有些Android产品只支持WIFI等无线网络,而不支持移动网络,此时就需
要采用SNTP方式来获取网络时间进行同步了,相应需要修改到的文件为
frameworks/base/telephony/java/com/android/internal/telephony
/cdma/
frameworks/base/telephony/java/com
/android/internal/telephony/gsm/
需要修改的都是一样的内容,如下:
添加如下内容:
import ient;
修改如下内容:
把
private void revertToNitz() {
if ((text().getContentResolver(),
_TIME, 0) == 0) {
return;
}
Log.d(LOG_TAG, "Reverting to NITZ: tz='" + mSavedTimeZone
+ "' mSavedTime=" + mSavedTime
+ " mSavedAtTime=" + mSavedAtTime);
if (mSavedTimeZone != null && mSavedTime != 0 && mSavedAtTime != 0) {
setAndBroadcastNetworkSetTimeZone(mSavedTimeZone);
setAndBroadcastNetworkSetTime(mSavedTime
+ (dRealtime() - mSavedAtTime));
}
}
private void revertToNitz() {
if ((text().getContentResolver(),
_TIME, 0) == 0) {
return;
}
Log.d(LOG_TAG, "Reverting to NITZ: tz='" + mSavedTimeZone
+ "' mSavedTime=" + mSavedTime
+ " mSavedAtTime=" + mSavedAtTime);
if (mSavedTimeZone != null && mSavedTime != 0 && mSavedAtTime != 0) {
setAndBroadcastNetworkSetTimeZone(mSavedTimeZone);
setAndBroadcastNetworkSetTime(mSavedTime
+ (dRealtime() - mSavedAtTime));
return;
}
int tryCount = 5;
SntpClient client = new SntpClient();
Log.i(LOG_TAG, "revertToNitz new sntpclient");
for(int i = 0; i < tryCount; i++){
if(tTime("", 10000)) {
long cachedNtp = Time();
long cachedNtpTimestamp = dRealtime();
Log.i(LOG_TAG, "Sntp NtpTime = " + cachedNtp);
setAndBroadcastNetworkSetTime(cachedNtp
+ (dRealtime() - TimeReference()));
return;
}
}
}
当不支持NITZ获取时间同步时就使用SNTP方式获取时间进行同步。不过使用SNTP
方式进行时间同步时不能同步时区,需要自己先去掉自动同步并设置时区后再设置自动同步,
这样才能进行网络时间的同步更新。
时间同步 受地区 卡类别 基站 运营商 等影响大部分android手机时间同步都不怎么顺畅
版权声明:本文标题:android手机时间自动同步 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/dianzi/1720823923a844816.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论