Android 源码分析
文章平均质量分 84
喝醉了的熊猫
Android 系统开发,Android通信应用开发,Android移动应用开发,智能语音设备开发,个人开源库 : https://github.com/MMLoveMeMM
展开
-
Android Audio 框架简读 <4>
android这个Audio部分还是非常大的一个模块,下面从设备的角度简读一下Audio设备是如何工作的.假设: : 熟悉了AudioFlinger和AudioPolicyService的基本程序流程. : 知道HAL中hardware.h那三个结构体是干什么的:typedef struct hw_module_t typedef struct hw_module_methods_原创 2016-03-29 20:01:12 · 1012 阅读 · 0 评论 -
Android AssetManager <1>
AssetManager是android的资源管理器,负责管理android系统所有的资源.资源可以分系统级别和应用级别.系统级别主要是framework-res.apk,即编译framework/base/core/res目录下的,当然有时候定制系统会有定制的资源,一般放在~/vendor/overlay/...下面,可以在framework/base/core/res的androi原创 2016-04-26 20:04:00 · 4731 阅读 · 0 评论 -
Android Activity启动过程简读 <1>
平时工作中经常会谈一些Activity启动过程,周期之类的话题.其实整体单纯来说还是比较简单. : Activity的启动都是从startActivity(...)开始. : 对比Activity的周期中涉及到几个阶段,如果onCreate,onResume...,当发现程序调用这些方法时,第一时间想到的是framework的Activity管理根据状态在回调这些方法. : 谈及第二点原创 2016-04-13 20:10:41 · 412 阅读 · 0 评论 -
Android Launcher 启动简述 <2>
Lanucher就是我们平时的开机后的桌面APP(它其实就是一个APP,没什么特别的,看起来有点高大上),作为APP程序,它也需要启动自己的Activity界面(因为桌面是能够看得见的,有界面的).那么开机时如何启动呢?根据上一篇,开机时SystemServer会将ActivityManagerService启动,那么首先就会启动SystemReady(...)方法. public原创 2016-04-15 19:20:23 · 357 阅读 · 0 评论 -
Android 主题资源风格定制 <1>
无论是定制系统还是自行开发APP的UI,其无论是使用标准UI还是自定义UI,最终都是需要自己熟悉主题风格的各种属性设置,不过属性非常的多,如果需要知道某个UI可以临时查看一下SDK的D:\liuzhibao\Android\sdk\platforms\android-N\data\res路径下的,但是这个是纯粹的资源文件,没有java文件,所以还是推荐repo下来framework/b原创 2016-04-28 19:59:11 · 4575 阅读 · 0 评论 -
Android View 流程简读 <1>
上一篇大致介绍了如何更新主题风格之类的,没有谈及到一些本质的,这一篇大致介绍一下所有的UI归根结底的View类显示效果流程.这里面以View背景动画产生流程为主线的.(即,我们经常会遇到各种点击效果,如material的水波纹,或者以前的按钮点击前后的背景效果变化)看了android源码View.java类public class View implements Dra原创 2016-05-03 19:12:23 · 449 阅读 · 0 评论 -
Android 自定义View背景动画 流程简读 <2>
这一篇主要根据上一篇的大致说明,我相信如果看完这一篇,对开发自定义View将会有很大的帮助,先介绍ColorStateList和StateListDrawable两个类:ColorStateList说明:https://developer.android.com/reference/android/content/res/ColorStateList.htmlStateListDraw原创 2016-05-04 13:09:55 · 2219 阅读 · 0 评论 -
WindowManager 基本应用
关键字 : WindowManager,浮动窗体,工具面板,SystemUI状态栏在群里面久了,经常会听到很多人说了做一个什么窗体,什么弹出框,或者上拉,下拉的框体.下面大致介绍一下.这里面先大致说一下SystemUI(状态栏/通知栏)工程的一些相似特点,SystemUI这个系统APP基本上没有Activity,完全通过WindowManager这个管理器动态添加视图.包括屏幕顶部的状态栏,下原创 2016-05-05 19:54:45 · 5511 阅读 · 0 评论 -
Android PackageManager
这两个管理器其实没什么好扯的,看一下源代码基本上就知道了,用途的话除了系统本身用的最多,PackageManager在桌面Launcher APP使用.PackageManager管理器主要负责APP Package的管理,比如安装,卸载,Package的解析,Package包的各种信息,如版本,APP图标,资源,权限等等,android系统在安装APP的时候,会弹出一个提示框,提示框中就会显原创 2016-04-18 18:16:31 · 1058 阅读 · 0 评论 -
Android AssetManager 简读<2>
前面一篇大致介绍如何装载各种资源到系统路径下,下面看看如何获取这些资源.做每一个Activity时,不可或缺的需要设置一个布局,后者一个View来显示给用户.public void setContentView(int layoutResID)以及:public void setContentView(View view)都比较常见.先看第一种:public void原创 2016-04-27 20:00:41 · 469 阅读 · 0 评论 -
Android Activity 图形化生成简读 <3>
不知道标题是否准确,即使Activity开始自己的周期,从attach开始,接着第一篇的attach点.多说一句,前面跟随思路,一步一步的打log,生成services.jar放到系统里面运行,就知道自己的判定是否正确了.下面回到Activity的类,attach :final void attach(Context context, ActivityThread aThread, Ins原创 2016-04-15 20:22:05 · 572 阅读 · 1 评论 -
Android Audio 框架简读 <5>
前面讲到AudioFlinger打开设备,但是后面贴了图片就没继续了,现在继续看看:audio_io_handle_t AudioFlinger::openOutput(audio_module_handle_t module, audio_devices_t *pDevices,原创 2016-03-31 14:49:48 · 2570 阅读 · 0 评论 -
Android Audio 框架简读 <6>
下面大致介绍Android Audio部分的AudioTrack和AudioFlinger的数据交换.首先要了解数据交换过程的存储方式:这个存储方式一般由在new一个AudioTrack时构造函数里面传递的mode参数决定,有两种选择:MODE_STATIC与MODE_STREAM : MODE_STATIC:static方式适用于数据较小,实时性比较高的情形,比如ring,系统铃原创 2016-04-06 19:24:17 · 1190 阅读 · 0 评论 -
Android Audio 框架简读 <1>
: 首先了解Android Audio所涉及的代码放在源代码位置:对应应用层:~\frameworks\base\media\java\android\media对应的中间层:包括framework,libarary代码:~\frameworks\av\media和~\frameworks\av\services对应HAL层:~\hardware\libhardware_legacy\原创 2016-03-23 19:16:41 · 1822 阅读 · 0 评论 -
Android Audio 框架简读 <2>
接着上一篇AudioPolicyService代码,目录:E:\liuzhibao\android\android\frameworks\av\services\audioflinger直接看代码:主要看构造函数内:// ----------------------------------------------------------------------------Audio原创 2016-03-25 14:52:52 · 960 阅读 · 0 评论 -
Android Bluetooth 框架简读 <1>
下面大致看看Android 蓝牙部分.先大致走读一遍,android系统蓝牙相关代码基本分布: : 应用层:Setting工程,Bluetooth工程,Phone工程,这三个工程代码都在~/packages/app目录下(主要是这几个见得多,面熟).Settings : 这个是用户见过最多的,蓝牙的开关,扫描,配对.Bluetooth : 实现一部分用户交互(比如蓝牙发送接收文原创 2016-04-07 19:49:01 · 747 阅读 · 0 评论 -
Android Bluetooth 框架简读 <2>
根据前一篇的思路大致走一遍.先从应用层开始,Settings工程的蓝牙部分,这部分还是挺熟悉的,以前在某知名公司负责ROM开发时熟悉了.当然不同系统版本,代码可能有点不同,设置蓝牙主界面BluetoothSettings.java,但是这里大概分析开启蓝牙流程和扫描蓝牙流程.开启蓝牙流程:直接进入BluetoothEnabler这个类查看.public void onCheck原创 2016-04-08 13:56:14 · 982 阅读 · 1 评论 -
Android Bluetooth 框架简读 <3>
上一篇从设置开始的,后面的扫描,连接的套路基本上很蓝牙enable差不多,下面从Phone大概介绍.前面说过HSP,HFP的操作基本上在应用层开始的,另外蓝牙的audio部分也是从这里开始.所以大致概括 : 有RFComm通讯连接,AT通讯处理,SCO连接以及对应Audio设置配置展开Phone工程:从工程的BluetoothHeadsetService.java类开始,这是一个服原创 2016-04-08 19:09:28 · 996 阅读 · 0 评论 -
Android Audio 框架简读 <3>
上面一篇最后提到Binder,我个人感觉Android系统需要申请内存空间基本上都是Binder完成的,可以基本认知Binder:Binder在linux层是专门有一个binder驱动层的,这个驱动层可以用于分配设备内存空间.它同时提供接口给其他设备使用,用于分配内存和管理内存,其他设备需要申请内存都需要实现它的接口,通过它提供的接口分配内存和管理内存.Android Audio 录播都需原创 2016-03-28 18:48:12 · 613 阅读 · 0 评论 -
Android NotificationManager简读
今天发觉系统状态栏不能够显示通知条了,但是通知还是有声音之类的,只是不能够显示了,是突然不可以显示了.所以突然看了一下源代码.应用程序中发送通知Notification都需要获取通知服务:NotificationManager nm = (NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);看来是通过No原创 2016-06-13 16:16:30 · 2724 阅读 · 0 评论