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
"I found "ntp_server_2" on settings." -- same for oneplus 7t pro (android 11).
In my case, even after changing both settings and rebooting, the system pid 1000 still attempts connecting to time.android.com and i see no other process attempting to connect to the ntp server i set.
Anyone experiencing the same? Are there any other workarounds?