(源码分析)Android系统时间-自动获取

什么是Android逆向?如何学习安卓逆向?Android逆向自学笔记入门到实战 简单地来说,安卓逆向是对已经打包好的APP进行反编译、源码分析了解APP实现逻辑的一门技术。我们可以把安卓安装时用到的APK文件看作一个加密后的压缩包,逆向就是要最大程序地还原出APK打包之前的源码。 逆向需要用到解密、反编译、解压缩等技术,想要100%还原APK的源码几乎是不可能的,所以在实际进行逆向分析的时候,一般都是根据想实现的目的,分析出APK的部分源码和实现逻辑,然后对这一部分源码进行修改后与原始的APK打包在一起,这样就获得了一个实现自己特定目的的APP。 安卓逆向到底能做什么? APP自动化 阅读详情

工作关系查看了 设置界面 自动获取时间的code。


点开设置-时间日期 第一眼就能看到 自动获取时间 和 自动获取时区的勾选框,那么时间和时区是怎么自动获取的呢。

首先我们要知道的是,当前页面的显示是在packages/apps/Settings/src/com/android/settings下面的DateTimeSettings.java中显示的。


然后我们可以看到 在onResume添加了一个SharedPreferenceChangeListener。这个callback是当前activity已经实现的








点了自动获取时间的按钮之后 就会回调到这儿:




会对Settings.Global.AUTO_TIME 进行修改。


根据查找,系统里面有三个地方(修改时间相关的地方)对Settings.Global.AUTO_TIME 进行了追踪。

1.GSM:frameworks/opt/telephony/src/java/com/android/internal/telephony/gsm/GsmServiceStateTracker.java

2.CDMA:frameworks/opt/telephony/src/java/com/android/internal/telephony/cdma/CdmaServiceStateTracker.java

3.frameworks/base/services/core/java/com/android/server/NetworkTimeUpdateService.java


1跟2都跟运营商有关系,但是nitz是能获取到时区的。因为能定位哈哈哈。

因为工作关系不需要跟1,2相关的。我们直接看3.

3里面呢是有对nitz的判断的,但是我们着重看一下ntp时间的获取。由于ntp服务器根据ip是无法获取到定位的所以如果单ntp是只能更新时间不能更新时区的。

为了跟代码,部分Log是自己添加的 请无视,来看NetworkTimeUpdateService.java:





我们可以看到handler的三个事件都会走这个方法。这三个监听都是哪儿来的呢

1.



2.



3.




所以我们知道 一进来 还有自动获取时间按钮状态的变化 还有网络的变化都会走这个方法,那这个方法是做什么的呢,先看前部分:



前部分做了一些判断,例如:不是自动获取时间请求的,return;如果获取到了nitz时间(默认是 NOT_SET这个值,获取到之后会发广播到这个类来赋值),nitz获取的时间比boot之后运行的时间还小的 return;接下来如果是第一次 或者 已经超过规定的获取ntp时间的间隔就会开始请求ntp时间。如果第一次请求了ntp时间 第二次请求ntp的时间与第一次的间隔小于规定的值,那么就不会去获取ntp时间。见后半部分代码:





接下来看看 请求:

刚看到代码调到了frameworks/base/core/java/android/util/NtpTrustedTime.java 的 forceRefresh方法:




当然也做了一系列判断,诸如server是否为空是否有网之类的。

然后就调到了:frameworks/base/core/java/android/net/SntpClient.java的requestTime的方法:





通过udp来请求ntp获取时间并进行更新,有兴趣的童鞋可以自己跟跟 gsm和cdma的东西。

注:如果不断电的话 或 断电时间较短 那么电容会继续走时间,那么下一次进来的缓存还是没有进行更新的。包括规定的ntp的获取间隔。


如果有不对的地方,欢迎指正,互相学习。

Android中通过NTP服务器获取时间功能源码分析 阅读详情

相关推荐

Android 时钟TextClock 使用及源码分析

返回12小时制的格式。:返回24小时制的格式。:指示此视图当前使用的时区。:指**「系统」**当前是否使用 24 小时模式。:当此视图的用户可见性可能受到此视图本身、祖先视图或此视图附加到的窗口的更改的影响时调用。:如有必要,更新显示的时间并使视图无效(在API 30中添加)。示例看上面介绍十分简单,咱们还是搞个实例了解一下吧,先看效果图。

omofun5541的博客 1449

Android时间获取与使用

编写Android网络程序时难免会遇到手机时间不准确的问题,本文总结了一些常用的时间获取与校正方法: 转载请注明:http://blog.youkuaiyun.com/xzy2046 1.获取本机当前时间: Time local = new Time(); local.set(System.currentTimeMillis()); mLocalTim

xzy2046的专栏 3772

Android 8.0系统源码分析--相机createCaptureSession创建过程源码分析

     上一次我们详细分析了openCamera启动过程的源码,从CameraServer进程创建了很多对象,比如CameraDeviceClient、Camera3Device、FrameProcessorBase,而真正打开相机还是在驱动层中上电后才完成的,有时候真想把公司的系统组件和芯片组件的源码拷回来,这样就能看到完整的过程了,但是还是不敢,哈哈哈!华为手机是仿照高通,和CameraSe...

红旺永福 1万+

Android8.1 时间更新机制之网络更新时间和GPS更新时间

一、Android网络时间更新 Android网络时间更新,大体分两类。1、moderm相关更新,2、网络更新。本次主要介绍网路更新时间,主要涉及到NetworkTimeUpdateService,该类运行在SystemServer(ActivityManagerService)进程中。它有点特殊,从名字来看,其实Service,其实它和WifiService、ConnectivityManagerService等系统Service不同。 ZygoteInit.java的startSystemServer函

wq892373445的博客 3502

android 11 源码ntp时区同步

android11源码ntp设置,时区设置,经过验证,以下参数更改后,编译即可同步为正常时间。

告别南半球的博客 2774

安卓闹钟程序源码分析与实践

是Android提供的一个系统服务,用于管理应用程序中的定时任务。它的核心特性之一就是能够在应用程序不运行时触发定时事件。这在开发需要定时任务的应用时非常有用,比如闹钟应用、定时提醒等场景。与直接使用或者Handler的方法不同,这些方法只在应用程序正在运行时才能工作,而使用可以让应用程序在后台或设备休眠时,仍能按时触发任务。系统广播是由Android操作系统发出的广播,用于告知应用或组件系统发生的特定事件。例如,电池状态变化、充电状态变化、网络连接变化等。

weixin_36059856的博客 1088

android 自动启动 设置时间,Android获取开机启动总时间

方法1:在开机广播接收器中实现如下代码:package com.flora;import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;import android.os.SystemClock;import android.util.Log;public...

weixin_33304375的博客 583

安卓连续点击事件监听实现与源码分析

模拟点击技术是安卓应用开发中的一个基本功能,它允许开发者在不与用户交互的情况下自动模拟用户的点击行为。这在自动化测试、游戏辅助以及一些需要模拟用户交互的场景中非常重要。在软件开发中,源码分析是一个重要的技能,尤其对于开发者来说,阅读和理解框架或库的源码可以帮助他们更深入地理解软件的工作原理,提高开发效率和问题解决能力。在分析复杂的源码时,应当遵循以下步骤:理解整体架构:首先浏览源码目录,了解项目的整体架构和各个模块之间的关系。阅读文档。

weixin_28721743的博客 964

Android 系统时间自动更新机制

Android中两种时间更新机制NITZNITZ(Network Identity and Time Zone,网络标识和时区),是一种用于自动配置本地的时间和日期的机制,同时也通过无线网向移动设备提供运营商信息。NITZ是自从PHASE 2+ RELEASE 96 的GSM中的可选功能,经常被用来自动更新移动电话的系统时钟。NITZ需要运营商网络支持(通过CS网络),目前国内电信、移动都支持NIT

wzn2119的专栏 1万+

Android系统时间管理与修改指南

时间是衡量事件持续性和顺序性的物理量。在计算机科学中,时间戳通常指从一个特定起始时间点(如Unix纪元,即1970年1月1日00:00:00 UTC)开始计算的秒数或毫秒数。计算机通过系统时钟来维持当前的时间戳,不同的系统可能使用不同的起始点和精度。Python的datetime模块提供了处理日期和时间的丰富功能。它主要由以下几个类组成:datetimedatetimetimedelta以及tzinfo。这些类可以帮助我们获取当前时间,格式化时间数据,处理时区问题等。在使用。

weixin_32836713的博客 1031

零基础教程:用Python给试卷照片自动切题(有道OCR+PIL完整流程)

本文为零基础用户提供了一套完整的Python自动化切题方案。通过调用有道OCR API识别试卷照片中的题目坐标,并利用PIL库进行精准裁剪,将杂乱的试卷图片自动分割为独立的题目图像。教程详细涵盖了环境搭建、图像预处理、API调用、坐标解析与批量处理全流程,帮助教育工作者和技术爱好者高效处理大量试卷,实现工作流程自动化。

grpc6streamer的博客 1177

浅谈Android8.1自动同步时间机制

好久没更新博客了,这一年来实在是太忙,上班、洗衣、做饭、看书、奶爸,忙确实是忙。最近工作中刚好研究了下Android8.1系统的自动同步时间机制,也学到了一点东西,leader也叫分享下,趁着这个机会就简单分享下我对Android8.1自动同步时间机制的理解: 一、问题前沿 公司的测试妹子提了个问题:链接上wifi...

小飞哥的专栏 7161

OpenCV机械臂手眼标定

这篇文章总结了手眼标定的原理,利用OpenCV自带的函数套用参数即可完成眼在手上和眼在手外两种标定。

Q先森的博客 6598

Android App设置系统时间,语言和时区

安卓设置系统时间 安卓设置系统语言 安卓设置系统时区 设置系统时间 设置系统日期(仅设置到xxxx年xx月xx日) 设置系统是否自动获取时间 判断系统是否自动获取时间 设置系统时区 设置系统是否自动获取时区 判断系统是否自动获取时区 获取当前月有多少天 获取系统时间和时区信息 设置系统语言 获取系统语言偏好

kisaragi_yu的博客 5536

西门子S7-200 SMART与施耐德ATV变频器Modbus通讯实战:从接线到稳定运行的完整指南

本文详细介绍了西门子S7-200 SMART PLC与施耐德ATV变频器之间实现稳定Modbus通讯的完整实战指南。内容涵盖从硬件接线、参数配置、PLC程序编写到触摸屏设计的全流程,并分享了提升通讯稳定性的关键技巧和常见故障排查方法,助力工业自动化系统可靠运行。

kkk56的博客 1110

FreeModbus从入门到实战:手把手教你用STM32实现工业级Modbus RTU通信

本文详细介绍了如何使用STM32和FreeModbus实现工业级Modbus RTU通信,涵盖硬件搭建、协议栈移植及优化技巧。重点解析了FreeModbus的移植过程,包括串口驱动适配、定时器配置和工业级稳定性优化,为开发者提供了一套完整的工业通信解决方案。

weixin_33737774的博客 352

Android源码分析(九)-----如何修改Android系统默认时间

一 : 修改Android系统默认时间 源码路径:frameworks/base/services/java/com/android/server/SystemServer.java 主要变量EARLIEST_SUPPORTED_TIME // The earliest supported time. We pick one day into 1970, to // give a...

weixin_30646505的博客 525

【学长笔记】点亮 STM32F411CEU6 板载 LED —— 入门级教程

本文提供了STM32F411CEU6开发板(Black Pill)点亮LED的完整教程。详细介绍了硬件信息(板载LED连接PC13,低电平有效)、CubeMX配置步骤(GPIO输出模式)、Keil5工程设置及完整代码实现(包含GPIO初始化和系统时钟配置)。教程还涵盖ST-Link下载器连接方法、程序下载步骤(需配合BOOT0按键操作)以及验证程序运行的方法。该教程特别适合STM32初学者,通过简单的LED闪烁示例快速入门STM32开发。

apple_53308981的博客 1327

Android NTP时间同步源码分析

Android系统设置自动时间后,如果连接了可用的网络。会同步网络时间。这个处理是 NetworkTimeUpdateService完成的

林多 1930

手把手教你学Simulink--进阶电机控制场景实例:基于Simulink的直流电机双闭环调速系统抗负载扰动仿真

摘要:本文基于Simulink平台构建直流电机双闭环调速系统,重点研究其在工业传送带场景下的抗负载扰动性能。系统采用转速外环(稳速)和电流内环(限流)的嵌套结构,通过工程法整定PI参数,实现了转速跌落<10%、恢复时间<0.5s的优异抗扰性能。仿真结果表明,相比单闭环系统,双闭环控制使转速跌落率降低47%,恢复时间缩短75%。文中详细介绍了数学模型建立、Simulink模块实现及参数优化方法,并提供了完整代码和模型文件,为电机控制系统设计提供实用参考。

MHD0815的博客 180

五十天精通硬件设计第6天-放大器知识及选型

运算放大器(Operational Amplifier,简称运放)是一种高增益的直流耦合差分放大器,广泛应用于信号处理、滤波、比较、积分、微分等电路中。

whm128的博客 597

初学安卓framework系列 一 (怎么科学的学习安卓系统的framework)

相信大家在找工作的时候,肯定或多或少都被面试官问到过安卓的八股文。比如ActivityManagerService(简称AMS),或者WindowManagerService(WMS)怎么实现的啊,有些什么细节需要注意啊,View被加入到ViewRoot的流程啊等等。每每看到这些文章,教人怎么准备安卓framework面试,我都觉得很痛心。。。因为在我看来,对于应用开发来说,面试考这些纯粹就是扯淡,很有可能面试官自己也只是在网上看看文章,然后照本宣科的再去问面试者。这种现象其实说白了就是卷。...

chuyouyinghe的专栏 1332

Android 13 RK3588 编译烧写实录全程

本文详细记录了RK3588主板在Android 13系统下的各项功能测试与编译过程。主要内容包括:1)网络功能测试(以太网、WiFi、蓝牙连接);2)外设接口测试(耳机、麦克风、USB、TF卡);3)硬件功能验证(RTC时钟、ADC采样、MIPI摄像头);4)系统设置(手势导航、开发者选项);5)Android 13 SDK编译环境搭建与源码获取方法。通过图文并茂的方式展示了各功能的配置方法、操作步骤和测试结果,为开发者提供了全面的参考指南。

hnjzfwy的博客 240

安卓壁纸服务(动态壁纸)使用与源码分析

概览 安卓的动态壁纸可以归属到SystemUI中,是SystemUI管理的一部分,安卓支持静态壁纸,同时也支持动态壁纸(added in API level 7 ) 用户可以从设备的内部或者是外部存储中选择一个图片资源来作为静态壁纸,此外也可以设置壁纸跟随时间的变化进行一些变化(例如切换不同的图片资源),这也是安卓的特色功能之一。 需要说明的是当某个应用通过系统的接口设置为壁纸应用后,会启动一个壁纸服务,该服务的优先级很高,从某种程度上来说是不会被系统主动杀死的(但是可以被手动停止)。 使用方法 安卓的动态

oaimgo的博客 1903

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

Bootchart抓取 - Android源码分析及时间参数

本文针对Android系统Bootchart部分源码进行了分析,并给出了Android-5、6-7、8+版本的参数差异,解释了8+以上的时长无法手动控制的原因,并对bootchart源码进行了分析

wangvic21的博客 1759

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Android系统时间自动设置NTP服务报错

问题描述: 在日期和时间中开启自动设置,时间不变,并没有同步到网络时间。 问题查找: 开始以为是系统默认的ntp服务器有问题,查看后发现使用的是阿里云的NTP服务器ntp2.aliyun.com,我在设备内pin了一下,也是通的。 然后,查看打印日志,发现报了request time failed: Unable to resolve host "ntp2.aliyun.com" No address associated with hostname的错误,这个是因为通过域名获取地址时报的错。 通过..

佳朗的专栏 1658

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

上一篇: System.getProperty("line.separator") 的含义
下一篇: Error:null value in entry: incrementalFolder=null
androideveloper
博客等级 码龄12年 21粉丝 42原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值