[RK3288][Android6.0] WiFi之同步网络时间过程

本文介绍了在Rockchip平台、Android 6.0系统及3.10.92内核下,Android设备通过WiFi进行网络时间同步的过程。主要关注在WiFi连接状态下,系统如何自动获取时间,涉及到的协议为SNTP(NTP的简化版)。当设置自动获取时间时,系统会监听Settings.Global.AUTO_TIME的变化,并通过NtpTrustedTime.java中的配置服务器获取时间。参考内容包括Android时间同步原理和ContentObserver机制的使用。
摘要由CSDN通过智能技术生成

Platform: Rockchip
OS: Android 6.0
Kernel: 3.10.92

Android从外部同步时间的方式有两种
1. 从运营商获取,也就是插SIM卡的方式获取,运营商提供时间和时区,用的是NITZ协议
2. 网络获取时间,也就是WIFI或GPS的方式获取,网络只能提供时间,用的是SNTP协议(NTP协议的精简版)

这里关注在连接Wifi的情况下,开启自动获取时间,这时会调用:
onSharedPreferenceChanged -> DateTimeSettings.java //在initUI()初始化监听

public void onSharedPreferenceChanged(SharedPreferences preferences, String key) {
    if (key.equals(KEY_AUTO_TIME)) {
        boolean autoEnabled = preferences.getBoolean(key, true);
        //设置AUTO_TIME为enable到ContentProvider中
        Settings.Global.putInt(getContentResolver(), Settings.Global.AUTO_TIME,
                autoEnabled ? 1 : 0);
        mTimePref.setEnabled(!autoEnabled);
        mDatePref.setEnabled(!autoEnabled);
    } else if (key.equals(KEY_AUTO_TIME_ZONE)) {
        boolean autoZoneEnabled = preferences.getBoolean(key, true);
        Settings.Global.putInt(
                getContentResolver(), Settings.Global.AUTO_TIME_ZONE, autoZoneEnabled ? 1 : 0);
        mTimeZone.setEnabled(!autoZoneEnabled);
    }
}

另一方面,SettingsObserver监听Settings.Global.AUTO_TIME的变化,使用的是observer机制,机制可查看后面参考

private static class SettingsObserver extends ContentObserver {
   
    void observe(Context contex
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值