`
- 浏览:
102224 次
-
在Android2.3.4系统中,Settings->Date & time->Automatic项打上后,时间会通过网络进行同步,而Android默认使用的是NITZ来获取移动网络时间,需要有移动网络服务商的支持才能使用,而有些Android产品只支持WIFI等无线网络,而不支持移动网络,此时就需要采用SNTP方式来获取网络时间进行同步了,相应需要修改到的文件为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方式进行时间同步时不能同步时区,需要自己先去掉自动同步并设置时区后再设置自动同步,这样才能进行网络时间的同步更新。
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
android手机时间自动同步 Android开发技巧整理
本文主要介绍android4.2 手机自动同步时间与时区的代码流程,以及相关的两个协议:NITZ、NTP。
2.另一台手机运行程序后选择客户端,自动搜索选择了服务端的手机,进行自动配对(第一次手机之间的配对需要人工确认,后面不需要),并自动连接。这时在两台手机上均可看见连接成功,然后可以互发消息进行聊天 3....
Android中Gallery和ImageSwitcher同步自动(滚动)播放图片库
解决安卓设备内网状态无法与互联网时间同步问题,通过架设NTP服务器端口,安卓端连接内网WIFI后自动与NTP服务器时间同步。
Android应用自动更新代码实现,完美实现代码的自动更新。
自同步v2.1.0最新免费版 (官网已不再提供下载地址,私人收藏版) 移动端:zisync-android-2.1.1.apk PC 端:zisync-windows-2.1.0-setup.zip ...2、手机照片、文档自动备份到电脑 3、局域网文件实时、安全、快速传输
android基于udp局域网实现视频同步播放
android 指定wifi热点自动连接
一款非常强大的面向对象的手机App自动化测试软件,按照需求录制测试脚本,自动回放脚本,还支持Testin云测试300多款云端手机批量回放。 自动比对测试结果 完美跨越分辨率限制
支持2.1以上的android版本,可以把里面的APK下载到真机上测试,可以做到和系统的GPS开关同步控制,源码是在LINUX下编译的,因为android2.1把修改GPS开关的代码HIDE了,所以在2.1window平台下是编译不了。但是APK直接...
Android手机点餐系统,包括客户端、服务器和数据库等
本软件可以实时显示android手机屏幕的动态 方便android开发人员开发 欢迎前来下载
演示Android自动同步机制的测试例子,换种说法也就是说自动同步就是几个线程自动的过一段时间执行一次看看服务器端有没有更新而已。也就是每过一段时间执行一次线程。
使用Java自动化方法模拟Android人工点击、触屏事件(含platform-tools工具)
所以往往需要将在native方法...这种情况在Android开发中比较常见,因为Android不会自动同步cookie到WebView。做iOS开发则不用担心这个问题,因为iOS内部已经实现了cookie同步.本文就是一个小的事例,从登录到同步cookie
android版本自动更新安装 替换旧的apk
openkrc是android手机歌词同步显示应用 功能: 1.krc歌词解密、解压、解析 2.歌词逐字同步显示 demo使用说明: 1.将apk安装到手机 2.在sd卡新建openkrc文件夹,并将openkrc_下的文件拷贝到openkrc文件夹 3.运行app ...
得到手机的陀螺仪采集到的角速率数据,然后转化为相对于初始位置旋转的角度。陀螺仪使用一段时间后会产生误差,本例未对误差进行处理,不过貌似可以用卡尔曼滤波算法消除误差,但是我不会。
在android蓝牙自动配对的基础上增加了其通信代码,主要实现与Arduino端的通信。 详见我的博客: http://blog.csdn.net/qq_25827845/article/details/52997523