![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Android FW
文章平均质量分 73
wongstar
这个作者很懒,什么都没留下…
展开
-
认识Android 的两层架构
以MediaPlayer 服务为例在Android 平台里,上层应用程序的service 与底层的系统service 有很大的区别,只是许多人都将它们混在一起了。例如,在Android 里著名的MediaPlayer范例,许多人都知道其结构为:其中有两个service:1、应用程序开发者所写的myPlayerService.java 类别。这是属于一般所称的SDK service转载 2010-03-25 09:14:00 · 814 阅读 · 0 评论 -
Android 核心分析 -- Android GWES之Android窗口治理
Android GWES之Android窗口管理 1基本构架原理 Android的窗口管理是C/S模式的。Android中的Window是表示Top Level等顶级窗口的概念。DecorView是Window的Top-Level View,这个View我称之为主View,DecorView会缺省的attach到Activity的主窗口中。主View被加入到WindowManager中,WM使用WindowState与这个主View对应。 Activity建立一个主窗口后,在将主窗口转载 2010-09-28 15:17:00 · 1042 阅读 · 0 评论 -
WebKit简介
一、WebKit简介WebKit是一个开源的浏览器网页排版引擎,包含WebCore排版引擎和JSCore引擎。WebCore和JSCore引擎来自于KDE项目的KHTML和KJS开源项目。Android平台的Web引擎框架采用了WebKit项目中的WebCore和JSCore部分,上层由Java语言封装,并且作为API提供给Android应用开发者,而底层使用WebKit核心库(WebCore和JSCore)进行网页排版。二、WebKit目录结构Android平台的WebKit模块分成Java和WebKit转载 2010-09-29 13:55:00 · 7871 阅读 · 1 评论 -
Android启动脚本init.rc
摘自《Android系统原理及开发要点详解》Android启动脚本init.rc在 Android中使用启动脚本init.rc,可以在系统的初始化过程中进行一些简单的初始化操作。这个脚本被直接安装到目标系统的根文件系统中,被 init可执行程序解析。 init.rc是在init启动后被执行的启动脚本,其语法主要包含了以下内容:Commands:命令Actions: 动作Triggers:触发条件Services:服务Options: 选项Propertise:属性(1) Commands是一些基本的操作,例转载 2011-02-15 09:42:00 · 2189 阅读 · 0 评论 -
Android 应用初始化及窗体事件的分发
droid 应用初始化及窗体事件(按键)的分发 ---AlbertChenAndroid java application运行环境初始化简介:在kernle启动之后, 系统将通过App_main进程来初始化android Runtime JAVA 运行环境,zygote是android的第一个进程,所有android的应用都是通过zygote fork出来的子进程。与QT不一样的是系统调用fork启动新进程而不再通过execv将子进程完全替换,这样做的目的是每一个子进程都保留了JAVA转载 2011-02-15 13:54:00 · 643 阅读 · 0 评论 -
stagefright + omx小结
<br /><br />看了将近1个多月的stagefright和OMX IL,感觉对框架有了一点感觉,趁感觉还在,记录下来和大家分享,由于本人也是刚开始看多媒体框架,有认识不当的地方还请务必指正.<br />由 于stagefright和openmax运行在两个不同的进程上,所以他们之间的通讯要经过openBinder进行处理,对openBinder这一 块还没有了解,所以恕stagefright和openmax之间的通信不能做分析,还有就是本小结不考虑音频这一块,假设视频为MP4封装的AVC编码 文件.转载 2011-05-24 09:00:00 · 1270 阅读 · 0 评论 -
Android的MediaPlayer架构介绍
<br />第一部分 MediaPlayer概述<br /><br /> Android的MediaPlayer包含了Audio和video的播放功能,在Android的界面上,Music和Video两个应用程序都是调用MediaPlayer实现的。<br /><br /> MediaPlayer在底层是基于OpenCore(PacketVideo)的库实现的,为了构建一个MediaPlayer程序,上层还包含了进程间通讯等内容,这种进程间通讯的基础是Android基本库中的Bi转载 2011-04-26 16:28:00 · 1428 阅读 · 1 评论 -
Android的MediaPlayer架构介绍(三)
<br /><br />第三部分 MediaPlayer的主要实现分析<br />3.1 JAVA程序部分<br />在packages/apps/Music/src/com/android/music/目录的MediaPlaybackService.java文件中,包含了对MediaPlayer的调用。<br />在MediaPlaybackService.java中包含对包的引用:<br />import android.media.MediaPlayer;<br />在MediaPlaybackSer转载 2011-04-26 16:31:00 · 3276 阅读 · 0 评论 -
Android的MediaPlayer架构介绍(二)
<br />第二部分 MediaPlayer的接口与架构<br />2.1 整体框架图<br /> MediaPlayer的各个库之间的结构比较复杂,可以用下图的表示<br /> 在各个库中,libmedia.so位于核心的位置,它对上层的提供的接口主要是MediaPlayer类,类libmedia_jni.so通过调用MediaPlayer类提供对JAVA的接口,并且实现了android.media.MediaPlayer类。<br />libmediaplayerservice.s转载 2011-04-26 16:29:00 · 1814 阅读 · 0 评论 -
Android深入浅出之Binder机制
<br /><br />Android深入浅出之Binder机制<br />一 说明<br /> Android系统最常见也是初学者最难搞明白的就是Binder了,很多很多的Service就是通过Binder机制来和客户端通讯交互的。所以搞明白Binder的话,在很大程度上就能理解程序运行的流程。<br />我们这里将以MediaService的例子来分析Binder的使用:<br />l ServiceManager,这是Android OS的整个服务的管理程序<br />l转载 2011-04-27 14:19:00 · 789 阅读 · 0 评论 -
init 分析
分析android的启动过程,从内核之上,我们首先应该从文件系统的init开始,因为 init 是内核进入文件系统后第一个运行的程序,通常我们可以在linux的命令行中指定内核第一个调用谁,如果没指定那么内核将会到/sbin/,/bin/ 等目录下查找默认的init,如果没有找到转载 2011-10-19 10:02:46 · 931 阅读 · 0 评论 -
Android 的输入法框架
Android的输入法框架比价复杂。从进程的角度来讲,相关功能主要分布在下面三个位置: 客户端应用是一个包含有图形界面的应用,如地址本。图形界面上包含有能够接收输入的编辑框,如TextView。输入法模块提供软键盘,将用户在软键盘上的按键输入根据某种算法(如Zi, T9, 国笔等)转换成单词,然后传递给客户端应用。目录development/samples/SoftKeyboard下提供了一个输入法模块实例。如果想要实现一个中文输入法,可参考这个实例。平台部分实现一些管理功能,负责装载某个输入转载 2010-09-16 15:37:00 · 6219 阅读 · 1 评论 -
Android 無線啟動流程
开机流程中无线模块的原始化流程 ;假如 sim卡锁开启,或者pin被锁住的时刻,会要求输入pin或者puk,但是这个解锁动作必须在系统原始化完成以后才能实行。(图形系统都还没有原始化如何输入密码阿?)当系统原始化完成以后会调用 wm.systemReady()来通知大众。这时刻该做什么就做什么。 开机流程中无线模块的原始化流程: rild 调用参考实现 Reference-ril.c (hardware/ril/reference-ril) 中的函数: const RIL_RadioFunctions转载 2010-09-16 15:36:00 · 1706 阅读 · 1 评论 -
活用Android线程间通信的Message机制
1.1.Message代码在frameworks/base/core/java/android/Os/Message.java中。 Message.obtain函数:有多个obtain函数,主要功能一样,只是参数不一样。作用是从Message Pool中取出一个Message,如果Message Pool中已经没有Message可取则新建一个Message返回,同时用对应的参数给转载 2010-04-22 14:30:00 · 1521 阅读 · 0 评论 -
android ---power mananger
看了一个多月的android power的管理 可以把它规划为下面的图形:因为工作的原因所有不打算细讲,只把它的架构图描述如下:如果有不对的情况下希望指出。 如果谁有兴趣的话,有时间一起交流,原创 2010-04-28 11:43:00 · 639 阅读 · 0 评论 -
Android启动过程
1. Boot系统初始化, 具体过程参见(system/core/init/Init.c)中的main函数,这时候,手机或者模拟器出现的画面是一个console,显示“ANDROID”msg。 if (fd >= 0) { const char *msg; msg = "/n" "/n" "/n" "/n" "/n" "/n" "/n" // conso原创 2010-08-19 11:43:00 · 549 阅读 · 0 评论 -
SystemServier.java分析
SystemServer::init2 将会启动一个新的线程来启动下面的所有JAVA服务:Core 服务:1. Starting Power Manager(电源管理)2. Creating Activity Manager(活动服务)3. Starting Telephony Registry(电话注册服务)4. Starting Package Manager(包管理器)5. Set Activity Manager Service as System Process6. Starting转载 2010-08-19 13:48:00 · 677 阅读 · 0 评论 -
Android 开机会出现3个画面
Android 开机会出现3个画面:a. Linux 系统启动,出现Linux小企鹅画面(reboot);b. Android平台启动初始化,出现"A N D R I O D"文字字样画面;c. Android平台图形系统启动,出现含闪动的ANDROID字样的动画图片(start)。1/ 开机图片(Linux小企鹅)Linux Kernel引导启动后,加载该图片。/kernel/trunk/drivers/video/fbmem.c/kernel/trunk/driver转载 2010-08-20 16:05:00 · 1926 阅读 · 0 评论 -
Android Booting 解析
Android 開機流程,是一個很值得詳細討論的主題;近期,也正在進行相關的技術工作,因此簡單整理一些相關資料,和大家分享。了解「整體開機流程」,是最重要的第一門課。我們將開機劃分為三大階段:1. OS-Level,由 Bootloader 載入 Linux kernel 後,開始進行 kernel 本身的初始化,並載入 built-in 的驅動程式。Kernel 完成開機後,載入 init process,切換至 user-space 後,結束 kernel 的循序過程(sequence),進入排程模式(转载 2010-08-20 16:25:00 · 727 阅读 · 0 评论 -
Android 的 init.rc 文件的语法详解
Android初始化语言包含了四种类型的声明:Actions(行动)、 Commands(命令)、Services(服务)和Options(选项)。 所有这些都是以行为单位的,各种记号由空格来隔开。C语言风格的反斜杠号可用于在记号间插入空格。双引号也可用于防止字符串被空格分割成多个记号。行末的反斜杠用于折行。 注释行以井号(#)开头(允许以空格开头)。 Actions和Services声明一个新的分组。所有的命令或选项都属于最近申明的分组。位于第一个分组之前的命令或选项将会被忽略。 Actions和转载 2010-08-24 18:06:00 · 886 阅读 · 0 评论 -
用Diff和Patch工具维护源码
在Unix系统下,维护源码版本可以使用很多方法,其中最常用的当然是大名鼎鼎的CVS,但实际上,简单的版本维护工作并没有必要使用复杂的CVS等专门的版本维护工具,Unix标配中的diff和patch工具就完全可以完成代码的简单备份和升级工作。在Unix系统下,维护源码版本可以使用很多方法,其中最常用的当然是大名鼎鼎的CVS,但实际上,简单的版本维护工作并没有必要使用复杂的CVS等专门的版本维护工具,Unix标配中的diff和patch工具就完全可以完成代码的简单备份和升级工作。diff 以"行"为单位比较两个转载 2010-08-25 16:38:00 · 393 阅读 · 0 评论 -
分析Android 根文件系统启动过程(init守护进程分析)
今天开始分析Android 根文件系统启动过程。在Android系统启动时,内核引导参数上一般都会设置“init=/init”,这样的话,如果内核成功挂载了这个文件系统之后,首先运行的就是这个根目录下的init程序。这个程序所了什么呢? 我们只有RFSC(Readthe Fucking Source code)!!init程序源码在Android官方源码的system/core/init中,main在init.c里。我们的分析就从main开始。init:(1)安装SIGCHLD信号。(如果父进程不等待子进程转载 2010-08-24 17:42:00 · 460 阅读 · 0 评论 -
Android事件处理分析
按键事件对于按键事件,调用mDevices->layoutMap->map进行映射。映射实际是由 KeyLayoutMap::map完成的,KeyLayoutMap类里读取配置文件qwerty.kl,由配置 文件 qwerty.kl 决定键值的映射关系。你可以通过修 改./development/emulator/keymaps/qwerty.kl来改变键值的映射关系。 JNI 函数在 frameworks/base/services/jni/com_android_server_KeyInputQueue转载 2010-09-16 15:30:00 · 609 阅读 · 0 评论 -
init 分析2
Zygote 服务概论:Zygote 是android 系统中最重要的一个服务,它将一步一步完成下面的任务:start Android Java Runtime and start system server. It’s the most important servic转载 2011-10-19 10:06:56 · 1165 阅读 · 0 评论