| tags |
|
|---|
Just use this command to set a server address to automatically sync your device time. ( ͡° ͜ʖ ͡°)✧
$ adb shell settings put global ntp_server <new-ntp-server>I have a Raspberry Pi 3 with Android Things installed on it. But the time is never synchronized...
After googling it, I found this piece of code in NtpTrustedTime.java
public class NtpTrustedTime implements TrustedTime {
...
public static synchronized NtpTrustedTime getInstance(Context context) {
if (sSingleton == null) {
final Resources res = context.getResources();
final ContentResolver resolver = context.getContentResolver();
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);
final String server = secureServer != null ? secureServer : defaultServer;
sSingleton = new NtpTrustedTime(server, timeout);
sContext = context;
}
return sSingleton;
}
}It shows that android tring to get NTP server from:
-
Settings.Global.NTP_SERVER first
-
Then com.android.internal.R.string.config_ntpServer
And the NTP server of my Android Things is time.android.com, that's why it dose not work (I'm in China...).
Fortunately, it is easy to set settings via adb:
$ adb shell settings put global ntp_server asia.pool.ntp.org
# test
$ adb shell settings get global ntp_server
> asia.pool.ntp.org🎉 CHEERS
Android 14 & higher natively support multiple NTP servers for redundancy.
I figured out how to put multiple NTP servers onto ntp_server after looking at NtpTrustedTime for like a day.
$ adb shell settings put global ntp_server "ntp://time.google.com'|'ntp://time.cloudflare.com'|'ntp://pool.ntp.org"It is explained inside the documentation on how each server is separated however command line also uses the pipe character for commands so you have put it inside quote marks like this '|'
You can verify if your device support multiple NTP server using
$ adb shell cmd network_time_update_service force_refresh&
$ adb shell cmd network_time_update_service dump