NTP时间:
SntpClient:具体网络UDP请求
路径:base/core/java/android/net/SntpClient.java
NtpTrustedTime:单例
路径:base/core/java/android/util/NtpTrustedTime.java
参数获取
final String defaultServer = res.getString(com.android.internal.R.string.config_ntpServer);
final long defaultTimeout = res.getInteger(com.android.internal.R.integer.config_ntpTimeout);
final String secureServer = Settings.Global.getString(resolver, Settings.Global.NTP_SERVER);
final long timeout = Settings.Global.getLong(resolver, Settings.Global.NTP_TIMEOUT, defaultTimeout);
备份服务器
private static final String BACKUP_SERVER = "persist.backup.ntpServer";
final String sserver_prop = Settings.Global.getString(resolver, Settings.Global.NTP_SERVER_2);
final String secondServer_prop = ((null != sserver_prop)&& (0 < sserver_prop.length()))? sserver_prop : BACKUP_SERVER;
#文件路径:base/core/res/res/values/config.xml
<string translatable="false" name="config_ntpServer">time.android.com</string>
<integer name="config_ntpPollingInterval">86400000</integer>
<integer name="config_ntpPollingIntervalShorter">60000</integer>
<integer name="config_ntpRetry">3</integer>
<integer name="config_ntpThreshold">5000</integer>
<integer name="config_ntpTimeout">5000</integer>
#文件路径:base/core/java/android/provider/Settings.java
/** Preferred NTP server. {@hide} */
public static final String NTP_SERVER = "ntp_server";
/** Timeout in milliseconds to wait for NTP server. {@hide} */
public static final String NTP_TIMEOUT = "ntp_timeout";
/** Secondary NTP server. {@hide} */
public static final String NTP_SERVER_2 = "ntp_server_2";
查看数据库如下:
msm8953_64:/ # settings get global ntp_server
null
msm8953_64:/ # settings get global ntp_timeout
null
msm8953_64:/ # settings get global ntp_server_2
persist.vendor.ntp.svr_2
msm8953_64:/ # getprop persist.vendor.ntp.svr_2
cn.ntp.org.cn
msm8953_64:/ #
更新时间三种方式:
- AUTO_TIME数据库字段变化,无论开关都触发
- 收到广播 private static final String ACTION_POLL =“com.android.server.NetworkTimeUpdateService.action.POLL”;
- 网络状态变化回调:NetworkCallback
修改方案:
修改默认数据库字段:AUTO_TIME 为0
base/packages/SettingsProvider/res/values/defaults.xml
<bool name="def_auto_time">false</bool>// 如果之前是true 需要升级数据库,需要小心
//base/services/core/java/com/android/server/NewNetworkTimeUpdateService.java
private void onPollNetworkTime(int event) {
if (!isAutomaticTimeRequested()) {
if(DBG) Log.d(TAG,"onPollNetworkTime but auto_time is false");
return;
}
//base/services/core/java/com/android/server/location/NtpTimeHelper.java
private boolean isAutomaticTime() {
if (resolver != null)
return Settings.Global.getInt(resolver, Settings.Global.AUTO_TIME, 0) != 0;
return false;
}
synchronized void retrieveAndInjectNtpTime()
if (!isAutomaticTime()) {
if (DEBUG) Log.d(TAG, "retrieveAndInjectNtpTime but auto_time is false");
return;
}
抓日志:
logcat -s SntpClient NtpTimeHelper NetworkTimeUpdateService
1473

被折叠的 条评论
为什么被折叠?



