自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 android 横竖屏切换 源码剖析

以通知栏中下拉菜单里面的"自动旋转"按钮为例子,说下横竖屏切换的原理; 点击状态栏中的"自动旋转"按钮,会走下面代码: frameworks/base/packages/SystemUI/src/com/android/systemui/qs/til...

2019-02-28 19:45:16

阅读数 401

评论数 0

原创 PowerManagerService:电池电量管理

前言:手机电池的电量主要由两种元件消耗:CPU和显示屏,因此设法降低这两种元件的耗电量就是电源管理的关键;       针对CPU和显示屏,分别有两种节约能源的方案: (1)CPU:CPU大多有低频率和高频率两种工作频率,为了省电,大部分时间内cpu都工作在降低频率下,只有进行密集计算时,如视频...

2019-02-19 19:58:36

阅读数 458

评论数 0

原创 BatteryService:电池电量管理

前言:BatteryService用于获取电池信息、充电状态等,如果想对Android的功耗控制有更深入的了解,有必要分析一下BatteryService。 1.来看下BatteryService.java: BatteryService.java public BatteryServ...

2019-02-16 11:41:15

阅读数 1053

评论数 0

原创 LightsService:led灯显示管理

前言:LightsService是用来管理手机led指示灯显示; 1.先看有哪些类型的灯: LightsManager.java public abstract class LightsManager { public static final int LIGHT_ID_BAC...

2019-02-15 14:28:16

阅读数 169

评论数 0

原创 test命令

前言:Shell中的 test 命令用于检查某个条件是否成立,它可以进行数值、字符和文件三个方面的测试。test命令和关系运算符有点像。 1.数值测试 参数 说明 -eq 等于则为真 -ne 不等于则为真 -gt 大于则为真 -ge 大于等于则...

2019-02-13 10:13:20

阅读数 74

评论数 0

原创 shell运算符

前言:原生bash不支持简单的数学运算,但是可以通过其他命令来实现,例如 awk 和 expr,expr 最常用。 expr 是一款表达式计算工具,使用它能完成表达式的求值操作。 1.算术运算符 #!/bin/bash val=`expr 2 + 2` echo "两数之和...

2019-02-13 09:44:25

阅读数 41

评论数 0

原创 Shell数组

Bash Shell 只支持一维数组(不支持多维数组),初始化时不需要定义数组大小。 Shell 数组用括号来表示,元素用"空格"符号分割开,语法格式如下: array_name=(value1 ... valuen) 1.数组表示 (1)括号表示,如: my_a...

2019-02-12 15:18:45

阅读数 34

评论数 0

原创 流程控制

1.if else 格式如下: if [ condition1 ]; then command1 elif [ condition2 ]; then command2 else command3 fi 以if开始,fi结束;每个if判断语句后面都跟着then;  ...

2019-02-12 15:11:47

阅读数 38

评论数 0

原创 shell函数

shell中函数的定义格式如下: [ function ] funname [()] { action; [return int;] } 上面[]的意思是指可要可不要,如: 函数1: function a () { echo "haha"; ...

2019-02-12 15:11:31

阅读数 20

评论数 0

原创 Shell 传递参数

前言:之前在编译源码的时候,总是使用这条编译指令:./SLB767_meig_userdebug.sh userdebug RS51,./SLB767_meig_userdebug.sh我知道是执行SLB767_meig_userdebug.sh文件,那后面userdebug和RS51的是什么呢...

2019-02-12 15:11:14

阅读数 196

评论数 0

原创 一系列命令的连贯执行

前沿:某些情况下,很多命令想一次性输入,而不要分次执行,这可如何是好? 有两种方式可以解决上述问题,一种是写脚本(这个我们暂时不介绍),另外一种就是使用一些特殊符号来控制命令的连贯执行。 怎么控制呢? 1.顺序执行 command1;command2;command3 使用分号;将...

2019-02-12 11:05:33

阅读数 60

评论数 0

原创 输入/输出重定向

前言:通常,我们会在终端输入一些命令,这些命令被系统处理了之后,系统又通过在终端显示的方式将输出结果呈现给我们,输入和输出都是终端;而重定向,就是指定输入/输出到某个文件,而不再是终端; 1.command > file command是指一个命令,上面这个命令执行comma...

2019-02-11 11:27:46

阅读数 98

评论数 0

原创 注释

1.单行注释 以 # 开头的行就是注释,会被解释器忽略,通过每一行加一个 # 号设置多行注释,如: #打印 echo "我是ren"   2.多行注释 使用 :<<字符串 进行多行注释,如: :<<! WO...

2019-02-11 09:35:29

阅读数 58

评论数 0

原创 类加载全过程

前言:在很长的一段时间里,我对类加载机制一直弃之不顾,直到碰到下面的两段代码时,促使我去学习类加载的机制。 疑惑1: public class Test { class A{ public void print(){ ...

2019-02-03 23:51:35

阅读数 77

评论数 0

原创 Notification的音效,振动,指示灯

前言:在创建一个通知的时候,我们除了指定通知的信息外,还可以指定通知的震动,响铃以及指示灯,今天就从源码的角度来分析下通知的震动,响铃以及指示灯是如何实现的; 1.首先,要想在通知来临时开启指示灯,需要使用调用下面函数: Settings.System.putInt(mContext.get...

2019-02-02 20:48:24

阅读数 371

评论数 0

原创 android手机Down版本

1.首先是进入到out目录 找到有system.img的地方: cd out/target/product/XXX XXX目录下有system.img   2.开始刷机 adb reboot bootloader sudo fastboot flash system system....

2019-01-31 09:16:24

阅读数 114

评论数 0

原创 echo命令

Shell的echo 指令用于字符串的输出,如: 1.普通字符串 echo "I am a student" 当然双引号也可以忽略,写成: echo I am a student 但是建议加上双引号;   2.转义字符 要想\n等转义字符有意义,就必须得在前...

2019-01-30 22:04:40

阅读数 541

评论数 0

原创 Activity启动模式源码剖析

前言:之前我们分析过Activity在AMS中的启动流程,当时也简单的说了下Activity的启动模式,现在我们更详细,更全面的解析一下它; 启动Activity的时候,Activity.startActivity()方法会将启动流程交给AMS,AMS又将启动交给ActivityStarte...

2019-01-30 20:08:36

阅读数 167

评论数 0

原创 状态模式的简单模板

前言:在分析通话过程中声音输出设备切换的时候,我们发现每一种设备,它内部都封装了一套自己的逻辑处理,当我们切换到某一个设备时,就会走相应的流程,这就是典型的状态模式; 状态模式简化了if,else的逻辑判断,可维护性大大加强,后期添加功能时也是十分的方便; 我们今天就来写个最简单的状态模式...

2019-01-27 22:27:37

阅读数 64

评论数 0

原创 adb常用命令以及log抓取

1. 查看设备 adb devices      //显示连接的设备 如果输入adb devices时,显示Mew0115700061AFA    no permissions; 需要将手机的USB调试设置到传输照片即可;   2.查看当前的Activity adb shell dum...

2019-01-25 19:41:57

阅读数 583

评论数 0

原创 UserManager的使用

前沿:在手机的Settings当中,有一项菜单栏是用来管理手机的当前用户的,点开这个菜单栏,会发现系统将手机用户分成了3类,分别是管理员,访客和自定义用户; 管理员,访客是系统为我们预设的,自定义用户可由我们自由添加或者删除; 并且这些用户是相互可以切换的,每个用户都有与之对应的系统属性; ...

2019-01-25 16:46:19

阅读数 1767

评论数 0

原创 android音频系统(7):通话过程中的音频输出设备切换

前言:由于通话比较特殊,Android对于通话过程中音频输出设备的切换做了特殊处理,它在上层也是通过切换音频播放状态来完成切换操作的,android用CallAudioState来封装通话过程中的音频播放状态; 1.CallAudioState解析 CallAudioState的属性 C...

2019-01-24 21:26:31

阅读数 1318

评论数 0

原创 android音频系统(6):AudioService之音频输出通道切换

前言:音频输出的方式有很多种,外放即扬声器(Speaker)、听筒(Telephone Receiver)、有线耳机(WiredHeadset)、蓝牙音箱(Bluetooth A2DP)等,电话免提、插拔耳机、连接断开蓝牙设备等操作系统都会自动切换Audio音频到相应的输出设备上。 我们知道...

2019-01-23 11:57:04

阅读数 2861

评论数 1

原创 Activity常用知识总结

前言:从根Activity的启动流程出发,总结下应用层Activity在开发过程中常用到的知识;  还是以"Launcher中启动Settings"为例: 1.Launcher暂停 也就是ActivityThread.handlePauseActivity(): (...

2019-01-17 13:46:55

阅读数 80

评论数 0

原创 AS常用指令,常用功能,以及常见问题

1.AS常用指令: (1)查找: ①Ctrl+shift+N 全局查找一个类或者一个文件; ②Crtl+F 搜索的时候,有几个设置: In Comments only:仅在注释中搜索; In Literals only:仅在文本中搜索,这是我们经常用的; Ctrl+Alt+shif...

2019-01-16 19:54:01

阅读数 200

评论数 0

原创 开发工具

1.Android Studio (1)简介:比较纯净版的Android Studio,解压后,安装路径在Android Studio\bin\studio64.exe; 链接: android studio 提取码: vbex (2)要想在AS中导入android源码项目,需要添加两个文...

2019-01-16 19:47:58

阅读数 27

评论数 0

原创 Git

前言:平时工作中的代码管理用到了Git,所以就总结下Git; 推荐一篇写的很好的关于Git的教程,简单易懂:Git教程   1.把文件添加到版本库 git add readme.txt git add file2.txt file3.txt git commit -m "w...

2019-01-16 11:51:11

阅读数 25

评论数 0

原创 AMS剖析(3):AMS与ActivityThread的交互

前言:前面追溯了Activity在AMS中的启动流程,接下来分析AMS与ActivityThread的交互,并详细讲解Activity的生命周期; 还是以"Launcher中启动Settings"为例; 1.Launcher.onPause() AMS与Activit...

2019-01-14 12:56:52

阅读数 335

评论数 0

原创 控件属性

前言:在开发过程中我们会经常遇到修改控件属性以及窗口属性的问题,现在就来分析下这些属性; 1.先从一个xml布局开始: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/and...

2019-01-04 20:23:20

阅读数 173

评论数 0

原创 AMS数据结构(1)

1.ActivityStackSupervisor 它是一个计算类,所有关于ActivityRecord,TaskRecord,ActivityStack的操作都是在这里面进行; ①来看这句代码: ActivityRecord sourceRecord = mSupervisor.isIn...

2019-01-03 20:29:36

阅读数 149

评论数 0

原创 算法思想

前言:之前阅读过不少关于算法的书籍和文章,觉得这些书籍和文章写得有点枯燥乏味,偏向于理论,有点不容易理解。其实算法不应该是这样无趣,因为算法是人们在解决日常生活问题时总结出来的一些经验,它跟我们的生活息息相关,所以我准备用自己的语言来写一点自己对算法的理解。 提起算法,肯定要涉及到容器,准备写...

2018-12-30 22:20:50

阅读数 183

评论数 0

原创 java容器(1):ArrayList以及迭代器

前言:前面几篇博客简单的叙述了几个常用算法的思想,现在,要详细的分析它们; 在java中,算法和数据结构大部分是体现在java容器上面,所以,接下来,我们要开始分析容器了; 第一篇分析的是两种最简单的数据结构之一:数组; 一提到使用数组作为数据结构的容器,我们首先就会想到ArrayLis...

2018-12-30 22:19:04

阅读数 93

评论数 0

原创 AMS剖析(2):Activity在AMS中的启动

前言:前面已经分析了AMS的启动,接下来就开始分析AMS的数据结构以及AMS与ActivityThread的交互; 这一篇我们跟着一个Activity的启动流程,来分析AMS的数据结构,基于android9.0的framework源码; Activity的启动过程分为两种,一种是根Aci...

2018-12-29 18:49:14

阅读数 187

评论数 0

原创 AMS剖析(1):AMS的启动

前言:本专题是基于android9.1的源码对AMS进行深度剖析,这应该是目前全网中对AMS分析的最新最细的一篇文章; 其实AMS的主要内容可以分为两大部分,一个是AMS的数据结构,一个是AMS与AcitivtyThread的交互; 在分析这两大块之前,先来看下AMS的启动;  第一节讲...

2018-12-28 22:15:39

阅读数 164

评论数 0

原创 算法思想

前言:之前阅读过不少关于算法的书籍和文章,觉得这些书籍和文章写得有点枯燥乏味,偏向于理论,有点不容易理解。其实算法不应该是这样无趣,因为算法是人们在解决日常生活问题时总结出来的一些经验,它跟我们的生活息息相关,所以我准备用自己的语言来写一点自己对算法的理解。 提起算法,肯定要涉及到容器,准备写...

2018-12-25 09:26:25

阅读数 48

评论数 0

原创 android音频系统(5):AudioService之音频焦点

前言:上一节我们分析了AudioService对音量的管理,这一节来看下AudioService对音频焦点的处理,也就是音频系统中的AudioFocus机制,它用来处理多个音频不合理的同时播放的糟糕后果; 在分析AudioFocus机制之前,我们首先先来理解一下这个机制; ①首先,Audi...

2018-12-22 14:59:02

阅读数 482

评论数 0

原创 android音频系统(4):AudioService之音量管理

前言:AudioService这个系统服务包含或者使用了几乎所有与音频有关的内容,AudioService是音频系统在java层的大本营; android音频系统,分为两个部分:数据流和策略; 数据流:描述了音频数据从数据源流向目的地的流程,之前我们分析的AudioTrack,AudioF...

2018-12-21 16:56:21

阅读数 1548

评论数 1

原创 android音频系统(1):AudioTrack

前言:平时开发中经常碰到录音器和音乐播放器,录音器和音乐播放器是音频系统在应用层最直观的体现; android原生音乐器在播放音乐时用的技术是MeidaPlayer,我一直想知道这个MeidaPlayer是怎么播放音乐的,所以对android的音频系统进行了剖析; 剖析音频系统,肯定是JAV...

2018-12-19 18:17:59

阅读数 270

评论数 0

原创 Music源码分析(2):歌手界面ArtistAlbumBrowserActivity

前言:ArtistAlbumBrowserActivity继承自ExpandableListActivity,ExpandableListActivity是封装了ExpandableListView的Activity,ExpandableListView是可以展开的ListView;在Artis...

2018-12-18 11:34:17

阅读数 77

评论数 0

原创 Music源码分析(1):主界面MusicBrowserActivity

前言:最近在开发android8.1的原生音乐播放器,代码路径是vendor\mediatek\proprietary\packages\apps\Music;音乐播放器的逻辑比较清晰明了,分析起来也比较简单;  本节分析是Music的主界面 废话不多说,直接上源码:   MusicB...

2018-12-17 16:54:17

阅读数 72

评论数 0

提示
确定要删除当前文章?
取消 删除