Android 网络时间更新-科卓培训android系列

来源:互联网 发布:python高级编程 pdf 编辑:程序博客网 时间:2024/06/01 09:19
 

 

       Android2.3中,网络时间更新是通过GSM和CDMA的电信移动网络来实现的,但是现在很多MID都没有GSM和CDMA,所以,没有实现网络更新。
       在 “设置” ——> “日期和时间” ——> “自动” 选项实习网络时间更新
       由于项目需要,我用了点时间去实现了通过wifi实习网络时间更新,如下
       直接修改android源码中的Settings源码
       1、附件中SNTP.java文件是一个wifi时间更新Service ,该Service如果没有成功获取网络时间则会每隔一段时间去程序获取网络时间,直到成功获取网络时间为止。 

       2、修改Settings\src\com\android\settings\DeviceInfoSettings.java,在onSharedPreferenceChanged函数中
       public void onSharedPreferenceChanged(SharedPreferences preferences, String key) {
           if (key.equals(KEY_DATE_FORMAT)) {
                String format = preferences.getString(key, 
                getResources().getString(R.string.default_date_format));
                Settings.System.putString(getContentResolver(), 
                Settings.System.DATE_FORMAT, format);
                updateTimeAndDateDisplay();
          } else if (key.equals(KEY_AUTO_TIME)) {
                boolean autoEnabled = preferences.getBoolean(key, true);

                /* add at 2011.6.21 */
                if( autoEnabled ){ 
            
      Log.d("---------->"," startService !! " );       

            
      Intent intent = new Intent(DateTimeSettings.this,SNTP.class);
        
      intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        
      startService(intent);         
        
}else{
        
      Log.d("---------->"," endService !! " );
        
      Intent intent = new Intent(DateTimeSettings.this,SNTP.class);
        

        
      stopService(intent) ;
        
}

                Settings.System.putInt(getContentResolver(), 
                    Settings.System.AUTO_TIME, 
                    autoEnabled ? 1 : 0);
                mTimePref.setEnabled(!autoEnabled);
                mDatePref.setEnabled(!autoEnabled);
                mTimeZone.setEnabled(!autoEnabled);
          }
     }

     3、在packages\apps\Settings\AndroidManifest.xml中注册service 
      <service android:name=".sntp.SNTP" 

android:exported="true" 

android:process=":remote">
      </service>

中国大概能用的NTP服务器地址
133.100.11.8 prefer
210.72.145.44
203.117.180.36
131.107.1.10
time.asia.apple.com
64.236.96.53
130.149.17.21
66.92.68.246
www.freebsd.org
18.145.0.30
clock.via.net
137.92.140.80
133.100.9.2
128.118.46.3
ntp.nasa.gov
129.7.1.66ntp-sop.inria.frserver 210.72.145.44(中国国家授时中心服务器IP地址)
原创粉丝点击