android手机时间自动同步
2012-05-03 14:41
323 查看
在Android2.3.4系统中,Settings->Date & time->Automatic项打上后,时间会通过网络进行同步,而Android默认使用的是NITZ来获取移动网络时间,需要有移动网络服务商的支持才能使用,而有些Android产品只支持WIFI等无线网络,而不支持移动网络,此时就需要采用SNTP方式来获取网络时间进行同步了,相应需要修改到的文件为
需要修改的都是一样的内容,如下:
修改为:
当不支持NITZ获取时间同步时就使用SNTP方式获取时间进行同步。不过使用SNTP方式进行时间同步时不能同步时区,需要自己先去掉自动同步并设置时区后再设置自动同步,这样才能进行网络时间的同步更新。
时间同步 受地区 卡类别 基站 运营商 等影响大部分android手机时间同步都不怎么顺畅
frameworks/base/telephony/java/com/android/internal/telephony /cdma/CdmaServiceStateTracker.java frameworks/base/telephony/java/com /android/internal/telephony/gsm/GsmServiceStateTracker.java
需要修改的都是一样的内容,如下:
添加如下内容: import android.net.SntpClient; 修改如下内容: 把 private void revertToNitz() { if (Settings.System.getInt(phone.getContext().getContentResolver(), Settings.System.AUTO_TIME, 0) == 0) { return; } Log.d(LOG_TAG, "Reverting to NITZ: tz='" + mSavedTimeZone + "' mSavedTime=" + mSavedTime + " mSavedAtTime=" + mSavedAtTime); if (mSavedTimeZone != null && mSavedTime != 0 && mSavedAtTime != 0) { setAndBroadcastNetworkSetTimeZone(mSavedTimeZone); setAndBroadcastNetworkSetTime(mSavedTime + (SystemClock.elapsedRealtime() - mSavedAtTime)); } }
修改为:
private void revertToNitz() { if (Settings.System.getInt(phone.getContext().getContentResolver(), Settings.System.AUTO_TIME, 0) == 0) { return; } Log.d(LOG_TAG, "Reverting to NITZ: tz='" + mSavedTimeZone + "' mSavedTime=" + mSavedTime + " mSavedAtTime=" + mSavedAtTime); if (mSavedTimeZone != null && mSavedTime != 0 && mSavedAtTime != 0) { setAndBroadcastNetworkSetTimeZone(mSavedTimeZone); setAndBroadcastNetworkSetTime(mSavedTime + (SystemClock.elapsedRealtime() - mSavedAtTime)); return; } int tryCount = 5; SntpClient client = new SntpClient(); Log.i(LOG_TAG, "revertToNitz new sntpclient"); for(int i = 0; i < tryCount; i++){ if(client.requestTime("north-america.pool.ntp.org", 10000)) { long cachedNtp = client.getNtpTime(); long cachedNtpTimestamp = SystemClock.elapsedRealtime(); Log.i(LOG_TAG, "Sntp NtpTime = " + cachedNtp); setAndBroadcastNetworkSetTime(cachedNtp + (SystemClock.elapsedRealtime() - client.getNtpTimeReference())); return; } } }
当不支持NITZ获取时间同步时就使用SNTP方式获取时间进行同步。不过使用SNTP方式进行时间同步时不能同步时区,需要自己先去掉自动同步并设置时区后再设置自动同步,这样才能进行网络时间的同步更新。
时间同步 受地区 卡类别 基站 运营商 等影响大部分android手机时间同步都不怎么顺畅
相关文章推荐
- android手机时间自动同步 (未验证)
- android手机时间自动同步
- Android手机时间自动同步
- 一键在ECShop加上手机版android和ios应用 不影响原网站 所有数据取自网站,自动同步到手机端
- android 手机的网络时间同步
- Android手机虚拟CD-ROM流程 && 使用网络同步时间(NITZ和NTP)&& Android VOLD
- android 时间选择器和日期选择器,sdk上说可以实现自动同步,貌似不行
- android时间自动同步
- Android 通过adb命令同步手机(user_debug版本系统)和电脑时间
- LInux下可以使用命令自动与网络的NTP服务器同步时间 CSDN验证码验证失败问题解决
- Linux配置自动时间同步
- 使用诺基亚手机自动更新时间功能
- android 音乐播放歌词同步,歌词自动滚动,歌词换行等功能完美解决方案
- 同步Android与PC的时间
- 文章标题 android广播实现手机短信(smsMessages)自动回复的一些指令
- android开发中布局和代码块不能同步(可能findViewById找不到对应布局的id),这是因为安装的android stodio没有设置自动!
- OFFTIME for Android 断线时间 手机想都别想
- 【手机勤务员】android自动切断来电,如果是手机号码回复一条短信
- CentOS/Linux 自动同步服务器时间
- android 如何在手机第一次开机的时候,把用户放在外置SD卡上的APK自动安装到手机的存储卡。