
Android源码分析
yin1031468524
喜欢打篮球,听歌
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
在Windows中利用doskey配置类似Linux中alias命令
在linux中我们经常会在Shell窗口执行一些命令,有时候命令太长,我们可以利用alias命令,对那些经常用到的,太长的命令起一个别名,然后直接在shell窗口中输入别名,就可以执行对应的任务;在Windows的dos窗口,有时候也需要输入一些太长的命令,但是windos上没有alias这样的命令可以直接使用,但可以通过doskey来实现这个功能。下面主要先说下alias在linux中怎么配置和原创 2016-11-20 19:27:21 · 5314 阅读 · 0 评论 -
Android 7.0后SettingProvider ContactsProvider TelephonyProvider MediaProvider数据库位置
在Android7.0之后,很多Provider数据库的位置都发生弄改变,在这记录下,免得以后又忘记了,找起来费劲。1、SettingsProvider在之前SettingsProvider是是以settings.db的方法存在,在Android N之后SettingsProvider数据存储目录在data/system/users/userId(没开启多用户,userid为0),数据存储原创 2017-05-09 23:43:04 · 6649 阅读 · 3 评论 -
Android 7.1.1中SystemProperties详解
Android系统源码中,存在大量的SystemProperties.get或SystemProperties.set,通过这两个接口可以对系统的属性进行读取/设置,看着挺简单的就是调用get或set就能获取或设置系统属性,其实并不然。曾经也遇到过有关的坑,所以就总结了下,这样以后自己就不会在再次入坑了,接下来了正题吧1、SystemProperties的使用SystemPropert原创 2017-03-28 20:02:01 · 23016 阅读 · 0 评论 -
Android view绘制之setContentView详解
Android view绘制之setContentView详解Activity是我们开发过程中最常见到的界面,然而它是怎么从layout布局文件加载显示到我们眼前的呢?接下来我们就来看看,activity界面的呈现过程,在Activity中我们通常通过setContentView()来设置layout的资源。原创 2017-06-08 21:17:30 · 745 阅读 · 0 评论 -
Android中view的onTouch&onClick事件分发机制详解
当view设置了setOnClickListener或setOnTouchListener之后,onClick或onTouch方法才会被调用,如下 mTextView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) {原创 2017-06-10 19:25:01 · 2732 阅读 · 0 评论 -
TextView vs Button
前两天在研究View事件分发传递时,很好奇为啥Button默认就可以点击,而TextView需要设置setClickable后才可以点击,就翻阅了下源码,写下来记录下。通过前面《Android中view的onTouch&onClick事件分发机制详解》知道,view的触摸事件先于点击事件,且最先执行的是dispatchTouchEvent,在这个方法里会判断当前view是否可点击,然后调用onTou原创 2017-06-10 19:31:26 · 548 阅读 · 0 评论 -
Android TextView文字设置超链接、背景高亮、关键字高亮等用法
在使用TextView时,有时候会遇到需要把文本中部分关键字设置成超链接、文本高亮、文本背景高亮、下划线、关键字字体稍大等功能,今天特意看了下Android中TextView这些功能的基本用法,首先我们把设置这些style公用的地方提取出来,定义个方法setTexViewByStyle,如下 private void setTexViewByStyle(TextView view, Parcelab原创 2017-06-11 18:05:22 · 2179 阅读 · 0 评论 -
Android 7.1 icu4c(icudt56l.dat)编译
在Android系统开发中我们经常会遇到修改语言名称翻译、日期月份显示格式、时区名称、星期开始周期等问题,这些问题通常都能通过修改icu4c来达到目的,我们先来看看icu4c简介。ICU4C:是ICU在C/C++平台下的版本, ICU(International Component for Unicode)是基于"IBM公共许可证"的,与开源组织合作研究的, 用于支持软件国际化的开源项目。IC原创 2017-07-03 22:39:20 · 3164 阅读 · 0 评论 -
Android N SystemUI-状态栏
手机中状态栏主要用来显示电池电量信息、时间、信号格数、系统图标(闹钟)、通知图标,我们先来看看手机statusbar的界面今天我们先来简单介绍下这个界面是怎么显示出来,考虑到放到一起写,文章就有点太长了,后续会对信号格图标显示、通知图标、系统图标这几个复杂点的一一介绍 从上图中我们基本可以看出,从左到右基本上是通知图标显示区域、系统图标显示区域,系统图标区域里主要包括wifi、飞行模式、闹钟、耳机原创 2017-07-06 09:19:28 · 5924 阅读 · 0 评论 -
Android N(7.0) SystemUI-Notification
上篇文章简要介绍了下手机状态,今天主要说下SystemUI中Notification的显示,系统或第三方应用都能够发送通知,通过调用NotificationManager的notify或notifyAsUser(仅限系统签名应用使用,当然通第三方应用通过反射方式也能调用)通知到statusbar,下面来看看具体流程。 1、通过Notification.Builder构建通知,调用Notificat原创 2017-07-09 22:42:56 · 2420 阅读 · 0 评论 -
Android 7.1.1 插入耳机图标显示
在Android手机上插入耳机后,状态栏会显示耳机图标,之前手机都是在手机最上面状态栏右边的区域显示,在Android 7.1.1上,插入耳机后不会显示这个图标,而是在最左边有个耳机的通知,这个通知是在下面的类中监听耳机插入或拔出的广播来显示或取消插入耳机的通packages/services/Telecomm/src/com/android/server/telecom/TtyManag原创 2017-10-18 19:30:40 · 4726 阅读 · 0 评论 -
Android 7.1 Settings详解
最近一直在看settings的问题,觉得不错,就研究了下,写出来方便以后查找问题,不用每次都去重新看,如有不对的地方,欢迎纠正。 在Android N 上Settings是带有侧拉菜单的,我们先从界面的角度大致看下Settings是怎么显示出来,然后再看下view对应的数据是如何加载而来的,先来看看设置的界面如下: 从图片可以看出主界面有点类似listview的感觉,只不过所有的item分原创 2018-01-08 09:28:46 · 20354 阅读 · 9 评论 -
Android lk启动流程
Andorid 7.1.1 lk启动流程little kernel 是小内核小操作系统,简称lk,主要用来引导运行OS系统,lk启动后根据一些参数值,引导启动进入不同模式。其实Android手机有四种启动方式,四种方式分别为:正常开机启动;recovery启动;fastboot启动;ffbm启动下面就以高通代码为例,分析下这四种启动方式分别是在什么条件下启动的手机上电后,会从原创 2018-01-05 20:09:24 · 5135 阅读 · 2 评论 -
adb命令之input和getevent
在Android调试时,如果触屏不能正常使用时、调试没有屏幕的机器或调试样机上没有的按键功能时,可能会用到通过命令的方式发送按键消息给Android系统进行调试,或着当点击屏幕后手机没有反应,需要确认是手机屏幕出现问题,还是当前布局不合理,有控件的click事件被其它控件消耗了,导致没有出现预期结,同样也可以通过adb命令监听屏幕上的点击事件。1、下面先来讲下adb shell input 命原创 2017-05-13 23:10:10 · 5732 阅读 · 1 评论 -
Android开机动画制作
在Android手机中开机动画一般位于”system/media“中,可以通过下面的命令获取adb pull system/media/bootanimation.zip .原创 2015-04-22 17:22:04 · 4022 阅读 · 0 评论 -
Android 7.1.1 系统时区,语言,地区,铃声配置
Android手机开机后,有一些常用的默认属性配置,今天就捡主要的说下手机里默认时区,语言,铃声这些常用的属性配置1、配置默认时区对于China来说默认时区是GMT+08:00,如果系统中没有配置默认时区的属性,时区肯定不是中国标准时间,控制时区的属性为persist.sys.timezone,只需要在配置系统默认属性的地方加上下面属性就行#在mk文件中配置系统属性如下PRODU原创 2017-04-01 15:04:03 · 7092 阅读 · 0 评论 -
Android 6.0 Marshmallow 拨打电话流程
Android 6.0 Marshmallow 拨打电话流程,主要简单总结介绍了下用户是如何从拨号盘界面点击拨打按钮后,到电话真正拨打出去的流程,谢谢大家多多指教,相互学习!原创 2016-12-24 16:05:17 · 2694 阅读 · 0 评论 -
Android Zygote系统进程启动过程分析(Android N)
在Android系统中,所有的应用程序进程以及系统服务进程SystemServer都是由Zygote进程孕育(fork)出来的,因为Android系统是基于Linux内核的,而在Linux系统中,所有的进程都是init进程的子孙进程,也就是说,所有的进程都是直接或者间接地由init进程fork出来的。Zygote进程也不例外,它是在系统启动的过程,由init进程创建的,在系统启动脚本system/原创 2017-02-20 15:35:33 · 6498 阅读 · 1 评论 -
Android 7.1.1 锁屏界面启动流程
前几天遇到一个低概率复现锁屏界面不显示,只显示状态栏的问题,跟了下锁屏界面启动显示的流程,在这分享下,也方便以后自己查看。前面简单介绍了下Zygote启动流程, Zygote进程启动后会首先创建一个SystemServer进程,SystemServer进程在调用startOtherServices同时也会调用WindowManagerService的systemReady()方法 //fra原创 2017-02-21 17:32:03 · 8775 阅读 · 5 评论 -
Android 7.1.1源码下载
有时候想看看android源码,却不知道如何去下载android源码,再这里以最新的android 7.1.1为例,记录下在国内下载android源码的方法。网上的方法也有很多,好多目前都不能下载,简要记录下自己下载android N 源码的流程1、下载安装repo 工具mkdir ~/binPATH=~/bin:$PATHcurl https://storage-googleapis原创 2017-02-13 21:02:58 · 7528 阅读 · 0 评论 -
联系人Contacts中数据库contacts.db简要分析
主要记录下contact中数据库,视图,索引,触发器的创建,以及在contacts中怎么利用contentprovider操作数据库里表原创 2015-12-27 18:12:49 · 12816 阅读 · 0 评论 -
Android 6.0 Marshmallow 通知栏中QuickSetting分析
在SystemUI中,状态栏和通知栏都是在PhoneStatusBar的makeStatusBarView方法添加进来的,这里主要说说状态栏中的QuickSettingPanel里各个图标的显示,以及各个控件的功能实现原创 2016-05-29 18:12:31 · 7496 阅读 · 5 评论 -
Android 5.0 Lollipop 短彩信接收流程
短彩信接收流程和来电流程有点类似,最开始也是RIL层上报短信事件,然后上层来处理接收短信的流程。android的ril位于应用程序框架与内核之间,分成了两个部分,一个部分是rild,它负责socket与应用程序框架进行通信。另外一个部分是Vendor RIL,这个部分负责向下是通过两种方式与radio进行通信,它们是直接与radio通信的AT指令通道和用于传输包数据的通道,数据通道用于手机的上网功原创 2016-05-07 19:43:13 · 3772 阅读 · 0 评论 -
Android 7.1.1 通话记录数据库详解
在拨打或接听来电时,都会在Dialer中看到新增的通话记录,前两天遇到了个通话记录中类型显示得不对的问题,就跟踪了下Android中CallLog的相关流程,在这记录下,以后查起来方便些,顺便分享给大家,欢迎指正错误,共同学习! Android中电话分接来电(MT)和去电(MO),拨打电话流程可以看看《Android 6.0 Marshmallow 拨打电话流程》,这里就以来电或去电当ca原创 2017-02-28 17:20:07 · 13404 阅读 · 3 评论 -
Android 7.1.1 Dialer中通话记录显示详解
这两天在看通话记录相关问题,顺便跟踪了Dialer中的通话记录是怎么显示出来的,在这和大家分享下。当有来电或去电时,calllog会被插入到calllog.db的数据中去,具体可以参考《Android 7.1.1 通话记录数据库详解》。在Dialer中通话记录对应的为CallLogFragment这个界面。下面我们先来具体分析这个Fragment的布局,再来看看每个控件的数据是如何获取的。通话原创 2017-03-06 15:15:56 · 6281 阅读 · 0 评论 -
Android中CS域和PS域以及手机中常用术语简介
CS域:电路交换域(Circuit Switching Domain),在发端和收端之间建立电路连接,并保持到通信结束的一种交换方式。因此电路交换在通信之前要在通信双方之间建立一条被双方独占的物理通路。PS域:分组交换域(Packet Switching Domain),通过标有地址的分组进行路由选择传送数据,使信道仅在传送分组期间被占用的一种交换方式。分组交换采用存储转发传输方式,将一个长报文先分割为若干个较短的分组,然后把这些分组(携带源、目的地址和编号信息)逐个地发送出去。分组域交换加速了数据在网络原创 2017-03-22 17:28:21 · 5826 阅读 · 0 评论 -
Android 7.1.1时间更新NITZ和NTP详解
最近在项目中遇到手机首次插上移动卡时不能自动更新时间的问题,就特意跟了下Android系统中手机时间更新有两种方式NTP和NITZ,下面先来看看NTP和NITZ的简介NITZ:Network Identity and Time Zone(网络标识和时区),是一种用于自动配置本地的时间和日期的机制,需要运营商支持,可从运营商获取时间和时区具体信息。NTP:Network Time Protocol(网络时间协议),用来同步网络中各个计算机的时间的协议。在手机中,NTP更新时间的方式是通过GPRS或wifi原创 2017-03-24 10:59:33 · 16339 阅读 · 0 评论 -
Android原生Launcher3简要分析
Launcher是android手机启动后第一个看到的界面,即手机系统的桌面,下面我们就以android原生的Launcher3为例看看界面布局和显示的数据怎么获取的来简要分析下android手机桌面Launcher中第一显示的Activity为Launcher.java,下面我们主要看看这个布局文件launcher.xml//packages/apps/Launcher3/res/l原创 2017-03-15 17:16:24 · 13818 阅读 · 2 评论 -
Android调用getSimSerialNumber获取iccid不完整
1、在Android中我们可以通过下面这段代码获取SIM的iccid,关于手机中常用术语简介可参考《Android中CS域和PS域以及手机中常用术语简介》 TelephonyManager telephonyManager = (TelephonyManager) getSystemService(TELEPHONY_SERVICE); String si...原创 2018-04-05 11:10:18 · 14452 阅读 · 6 评论