
Android系统学习
文章平均质量分 78
tron
这个作者很懒,什么都没留下…
展开
-
surfaceflinger Bootanimation 服务init 启动
在Init.rc中,用service关键字声明了一系列服务.init.rc对service的说明如下:(详见system/core/init/readme.txt)Services--------Services are programs which init launches and (optionally) restartswhen they exit. Services tak转载 2015-03-17 11:19:33 · 879 阅读 · 0 评论 -
android recovery mode
文章出处:http://www.cnblogs.com/xl19862005作者:Xandy1 总述为了方便客户日后的固件升级,本周研究了一下android的recovery模式。网上有不少这类的资料,但都比较繁杂,没有一个系统的介绍与认识,在这里将网上所找到的和自己通过查阅代码所掌握的东西整理出来,给大家一个参考!2 Android启动过程在这转载 2012-04-13 15:56:57 · 957 阅读 · 0 评论 -
stagefright框架(六)-Audio Playback的流程
stagefright框架(六)-Audio Playback的流程到目前為止,我們都只著重在video處理的部分,對於audio卻隻字未提。這篇文章將會開始audio處理的流程。Stagefright中關於audio的部分是交由AudioPlayer來處理,它是在AwesomePlayer::play_l中被建立的。(1)當上層應用程式要求播放影音時,AudioP转载 2012-02-17 15:48:24 · 408 阅读 · 0 评论 -
stagefright框架(三)-選擇Video Decoder
stagefright框架(三)-選擇Video Decoder在《Stagefright (1) – Video Playback的流程》中,我們並沒有詳述Stagefright是如何根據影片檔的類型來選擇適合的video decoder,現在,就讓我們來看一看。(1) Video decoder是在onPrepareAsyncEvent中的initVideoDecoder被決定转载 2012-02-17 15:42:02 · 420 阅读 · 0 评论 -
stagefright框架(二)- 和OpenMAX的運作
stagefright框架(二)- 和OpenMAX的運作Stagefright的編解碼功能是利用OpenMAX框架,而且用的還是OpenCORE之OMX的實作,我們來看一下Stagefright和OMX是如何運作的。(1) OMX_InitOMXClient mClient;AwesomePlayer::AwesomePlayer(){转载 2012-02-17 15:39:01 · 458 阅读 · 0 评论 -
stagefright框架(五)-Video Rendering
stagefright框架(五)-Video RenderingAwesomePlayer::onVideoEvent除了透過OMXCodec::read取得解碼後的資料外,還必須將這些資料(mVideoBuffer)傳給video renderer,以便畫到螢幕上去。(1)要將mVideoBuffer中的資料畫出來之前,必須先建立mVideoRenderer转载 2012-02-17 15:47:06 · 407 阅读 · 0 评论 -
stagefright框架(一)Video Playback的流程
在Android上,預設的多媒體框架(multimedia framework)是OpenCORE。OpenCORE的優點是兼顧了跨平台的移植性,而且已經過多方驗證,所以相對來說較為穩定;但是其缺點是過於龐大複雜,需要耗費相當多的時間去維護。從Android 2.0開始,Google引進了架構稍為簡潔的Stagefright,並且有逐漸取代OpenCORE的趨勢 (註1)。[圖1]转载 2012-02-17 15:35:12 · 472 阅读 · 0 评论 -
stagefright与opencore对比
1引言Android froyo版本多媒体引擎做了变动,新添加了stagefright框架,并且默认情况android选择stagefright,弃用之前的opencore,仅仅对opencore中的omx-component部分做了引用。Stagefright自android2.0后才添加,其稳定性有待商榷,是否存在bug也未知,opencore自android诞生起便存在,稳定性有保障转载 2012-02-17 15:56:16 · 379 阅读 · 0 评论 -
stagefright框架(四)-Video Buffer傳輸流程
stagefright框架(四)-Video Buffer傳輸流程這篇文章將介紹Stagefright中是如何和OMX video decoder傳遞buffer。(1) OMXCodec會在一開始的時候透過read函式來傳送未解碼的data給decoder,並且要求decoder將解碼後的data傳回來status_t OMXCodec原创 2012-02-17 15:43:41 · 612 阅读 · 0 评论 -
stagefright框架(七)-Audio和Video的同步
講完了audio和video的處理流程,接下來要看的是audio和video同步化(synchronization)的問題。OpenCORE的做法是設置一個主clock,而audio和video就分別以此作為輸出的依據。而在Stagefright中,audio的輸出是透過callback函式來驅動,video則根據audio的timestamp來做同步。以下是詳細的說明:(1)當cal转载 2012-02-17 15:54:38 · 393 阅读 · 0 评论 -
Android 2.3 StageFright 如何选定OMX 组件的
很简单,Android 2.3自带了一个可执行程序叫stagefright,在板子上执行 stagefright -l 就可以看到所有的OMX组件。OMX.PV打头的是Android自带的,软解码的(PV - Packet Video),其他的都是厂商的。 那StageFright如何选定使用哪个OMX组件来服务某个特定的decode或者encode? stagef转载 2012-02-16 16:14:15 · 1197 阅读 · 0 评论 -
android 属性系统
android 属性系统 每条属性包含了名字和其对应的值,两者都用字符串来描述。Android系统中大量的使用了属性系统用于记录系统的设置(注:和windows系统里的注册表类似),以及进程间的 信息交互。属性系统对于整个系统来说是全局的,也就是说每一个进程都可以获取和设置每条属性。当系统初始化的时候,Android系统会分配一块共享内存用于存储属 性信息转载 2012-02-16 15:50:16 · 441 阅读 · 0 评论 -
Android Makefile中是 如何识别 TARGET_PRODUCT
Android Makefile中是 如何识别 TARGET_PRODUCT首先, 编译Android 代码 通常情况下使用:# make showcommands这实际上等价于下面的完整命令 (具体参见 build/core/envsetup.mk )# TARGET_ARCH=arm TARGET_PRODUCT=generic TARGET_BUILD_TYPE=re转载 2012-02-14 16:43:59 · 396 阅读 · 0 评论 -
Tegra3 1080p高清播放时电源管理方式和功耗分析
Tegra3 1080p高清播放时电源管理方式和功耗分析此案例分析Tegra3(采用vSMP架构,4+1核心)在执行1080p播放时PM的运行情况,使用的平台是ASUA Eee Pad,运行Android 3.2。先播放少女时代1080p演唱会x264,Japan.First.Tour.Girls'Generation.2011.BluRay.1080p.DTS.x264-CHDN转载 2012-04-14 17:32:14 · 1474 阅读 · 0 评论 -
Android 根文件系统启动过程
在Android系统启动时,内核引导参数上一般都会设置“init=/init”, 这样的话,如果内核成功挂载了这个文件系统之后,首先运行的就是这个根目录下的init程序。这个程序所了什么呢? 我们只有RFSC(Read the Fucking Source code)!!init程序源码在Android官方源码的system/core/init中,main在init.c里。我们的分析就从mai转载 2012-05-25 14:48:48 · 438 阅读 · 0 评论 -
ANDROID 系统网络连接和管理机制--状态模式
一 网络连接功能介绍 ANDROID 系统网络连接和管理服务由四个系统服务ConnectivityService、NetworkPolicyManagerService、NetworkManagementService、NetworkStatsService共同配合完成网络连接和管理功能,四个服务只有ConnectivityService、NetworkPolicyManagerS转载 2014-06-18 16:31:20 · 2077 阅读 · 0 评论 -
Android 4.0 虚拟按键、手机模式、平板模式
平台信息:内核:linux2.6/linux3.0系统:android/android4.0 平台:S5PV310(samsungexynos4210/4412)作者:xubin341719(欢迎转载,请注明作者) 三星新拿回来来的BSP,编译后没有“返回、最近打开应用、home”三个虚拟键。我们硬件在设计的时候也没有设定相应的物理按键,平时调试程序的时候比较麻烦。怎转载 2014-06-18 15:12:50 · 2017 阅读 · 0 评论 -
Android热插拔事件处理流程--Vold
一、Android热插拔事件处理流程图Android热插拔事件处理流程如下图所示: 二、组成1. NetlinkManager: 全称是NetlinkManager.cpp位于Android 4.x 源码位置/system/vold/NetlinkManager.cpp。该类的主要通过引用NetlinkHandler类中的onEvent()方法来接收来自内核的事转载 2013-08-06 16:44:26 · 1325 阅读 · 0 评论 -
ANDROID中的VOLD分析
androidsocketbufferlinuxfiringiterator 现在可能很少有人会用mknod这个命令了,也很少有使用它的机会,但就在几年前,这还是一项linux工程师的必备技能,在制作文件系统前或加载新的驱动前,我们必须小心翼翼的创建设备节点。不需要使用mknod并不是他消失了,而是我们有了更好更智能的方法。linux对于热插拔的支持并不是生来就有的,而是经历转载 2013-05-03 18:05:07 · 535 阅读 · 0 评论 -
Android SDCard Mount 流程分析
本篇大纲 android 系统如何开机启动监听mount服务 默认设备节点在Android 系统的哪个目录 vold.fstab 配置文件的分析 vold 里面启动页面main做了些什么 android 系统如何开机启动监听mount服务 android sdcard 热插拔监测和执行操作是由一个启动文件vold 所统领的,系统开机会读取初始化配置文件init.rc,该转载 2013-04-09 13:49:26 · 661 阅读 · 0 评论 -
android之init进程-uevent
Init是linux kernel启动的第一个进程,理解init,对熟悉android系统非常重要。 Android的每个目录下面都有一个非常重要的文件Android.mk,负责编译该目录下面的代码。 System/core/init/android.mk[cpp] view plaincopy "font-size:18px;"> "font-siz转载 2012-07-20 09:49:38 · 778 阅读 · 0 评论 -
Android 屏幕旋转
保存下,以后可能会用到,留个思路。http://bbs.imp3.net/thread-10216400-1-1.html android 屏幕旋转屏是LANDSCAPE的,要让它默认显示为PORTRAIT.1.kernel里要旋转FrameBuffer. 启动参数里加入fbcon=rotate:1 (0:正常屏; 1:顺时钟转90度; 2:转180度; 3:顺转载 2012-07-11 09:20:05 · 700 阅读 · 0 评论 -
Android framework层编写service(实验验证后修订)
一个service是一个用用组件它能够在系统的后台中长期驻留并且不向外提供用户接口。一个应用程序组件可以开启一个服务,即便是用户切换到另一个应用程序了,服务仍将继续。另外,一个组件可以绑定到一个服务上并且能够进行进程间通信。例如,一个服务可以处理网络传输,播放音乐,进行文件的输入输出,并且和服务提供者进行交互,而所有的这一切将是在后台中运行的。为了支持特殊的硬件或者特别需要提供API或者服务的翻译 2012-07-10 18:01:09 · 902 阅读 · 0 评论 -
JNI接口函数<三>
字符串操作 NewStringjstring NewString(JNIEnv *env, const jchar *unicodeChars,jsize len);利用 Unicode 字符数组构造新的 java.lang.String 对象。参数:env:JNI 接口指针。unicodeChars:指向 Unicode 字符串的指转载 2012-05-25 14:53:14 · 588 阅读 · 0 评论 -
JNI接口函数<二>
对象操作 AllocObjectjobject AllocObject(JNIEnv *env, jclass clazz);分配新 Java 对象而不调用该对象的任何构造函数。返回该对象的引用。clazz 参数务必不要引用数组类。参数:env:JNI 接口指针。clazz:Java 类对象。返回值:返回 Java转载 2012-05-25 14:51:48 · 671 阅读 · 0 评论 -
JNI接口函数<一>
本章为 JNI 函数提供参考信息。其中列出了全部 JNI 函数,同时也给出了 JNI 函数表的准确布局。注意:“必须”一词用于约束 JNI 编程人员。例如,当说明某个 JNI 函数必须接收非空对象时,就应确保不要向该 JNI 函数传递 NULL。这时,JNI 实现将无需在该 JNI 函数中执行 NULL 指针检查。本章的部分资料改编自 Netscape 的 JRI 文档。该转载 2012-05-25 14:50:31 · 506 阅读 · 0 评论 -
在Android系统中修改Android.mk使其同时编译rgb2565和rgb2888(向out/host/linux-x86/bin/下新增加一个工具命令)
修改对应的Android.mk文件使其在源码编译时能够同时编译出rgb2565和rgb2888,rgb2888的源码文件已有,其实实现很简单,这里只是将我在具体测试中不同模块标签的模块在不同编译模式下的所采取的编译方式列举一下,因为我们的改动最好能和源码进行无缝的结合。 一、 Android系统的四种编译模式 Andr转载 2012-05-25 14:47:52 · 1286 阅读 · 0 评论 -
/system/build.prop常用的一些参数
/system/build.prop常用的一些参数 build.prop 是一个属性文件,在Android系统中.prop文件很重要,记录了系统的设置和改变,类似於/etc中的文件。# begin build properties# autogenerated by buildinfo.shro.build.id=GRI40ro.build转载 2012-02-10 15:17:01 · 1374 阅读 · 0 评论 -
Android RIL 调试分析全记录
前没有调试过RIL的东西, 从零开始, 花了两周时间,终于拨号成功,这里发表出来与大家共享经验,少走弯路. 上一篇文章是一个成功拨号的Android RIL log, 这里主要结合上一篇log进行分析, 分享一些注意事项, 由于时间有限,尽量言简意概, 主要要自己尝试去实践才会有所收获。 (本文所指的log行号,是指上一篇文章所标记的行号) 1. 所要了解的一些源码及脚本转载 2012-02-10 14:34:57 · 1139 阅读 · 0 评论 -
Android RIL log全记录
Android RIL log全记录 # logcat -b radio & 行数 log记录1 I/RIL ( 56): Opening tty device /dev/ttyS22 I/RIL ( 56): Opening mux device /dev/mux13 D/RIL ( 56):转载 2012-02-10 14:32:44 · 1168 阅读 · 0 评论 -
Android系统移植(一)-让android系统在目标平台上运行起来
Android系统移植(一)-让android系统在目标平台上运行起来Android系统由于用的是linux内核,因此内核移植和嵌入式linux内核移植差异不大,过程如下:(1)移植boot-loader和linux2.6内核到目标平台上,让linux内核可以启动起来,基本的驱动允许正常。此过程完全是嵌入式linux的开发,这里直接跳过。需要注意的是,由于android已经被l转载 2012-02-01 13:42:50 · 454 阅读 · 0 评论 -
Android图形系统分析与移植 -- 五、Android FrameBuffer
Android对FrameBuffer驱动的使用方式是标准的,在Android的GUI系统中,通过调用FrameBuffer驱动的标准接口,实现显示设备的抽象。FrameBuffer驱动是Android中的标准设备,但是路径稍有不同,如下所示:/dev/graphics/fb0; Android中直接使用标准飞FrameBuffer驱动,/dev/graphisc/中转载 2011-11-08 15:43:45 · 3121 阅读 · 0 评论 -
Android中保存数据的四种方法
在Android开发中我们会接触到四种数据存储方式,每种存储方式都各有不同;以下eoe分别列举了Android开发中的不同存储方式的特点。 一,Preferences Preferences是一个较轻量级的存储数据的方法,具体使用方法: 在A中保存值:SharedPreferences.Editor sharedata = getSharedPrefe转载 2012-01-15 14:50:34 · 398 阅读 · 0 评论 -
Android添加开机音乐的具体方法
Android学习开发之路21--Android添加开机音乐的具体方法 Android启动时第三段开机动画叫bootanimation,源码位于frameworks/base/cmds/bootanimation下,这个程序会将/data/local/bootanimation.zip或/system/media/bootanimation.zip里面的png图片以动画的形式播放出转载 2012-01-15 09:58:02 · 1908 阅读 · 1 评论 -
Android图形系统的分析与移植--一、Android GUI系统简介
1 综述 Android的GUI系统由C语言框架和JAVA语言框架组成。对下层,Android的GUI系统通过调用显示输出设备和输入设备的驱动,从而将Android的软件系统和底层的硬件联系起来。对上层,Android的GUI系统提供了Java层次的绘图结构,Android的Java框架层调用这些绘图接口来构建各种UI元素,这些绘图接口也可以供Java应用程序层来调用。转载 2011-11-08 15:38:24 · 994 阅读 · 0 评论 -
Android Launcher全面剖析
首先来说说我为什么写这篇文章,最近公司要我负责搞Launcher,网上一查这方面的资料比较少,并且不全,研究起来相当困难,所以就写了这篇文章,希望对大家有帮助。这篇文章是相当长的,希望读者能耐心读下去,实际上也花了我很长时间来写。好了闲话少说,我们切入正题。 这篇文章我会讲以下Launcher内容: Launcher转载 2012-01-15 14:45:48 · 1837 阅读 · 0 评论 -
Android Makefile分析
随着移动互联网的发展,移动开发也越来越吃香了,目前最火的莫过于android,android是什么就不用说了,android自从开源以来,就受到很多人的追捧。当然,一部人追捧它是因为它是Google开发的。对一个程序员来说,一个系统值不值得追捧得要拿代码来说话。我这里并不打算分析android的代码,而是android的makefile,也许大家已经知道了在android源码里,我们可以看见很转载 2012-01-15 14:48:58 · 402 阅读 · 0 评论 -
android framebuffer 操作-进度条显示
一、framebuffer使用基础: 1. Linux是工作在保护模式下,所以用户态进程是无法象DOS那样使用显卡BIOS里提供的中断调用来实现直接写屏, Linux抽象出FrameBuffer这个设备来供用户态进程实现直接写屏。对于用户而言,framebuffer和/dev下面的其他设备没有 什么区别,用户可以把framebuffer 看成一块内存,既可以向这块内存中写入数据,也可以转载 2011-12-09 15:38:15 · 858 阅读 · 0 评论 -
View的setOnClickListener的添加方法
1)第一种,也是最长见的添加方法(一下都以Button为例)Button btn = (Button) findViewById(R.id.myButton);btn .setOnClickListener(new View.OnClickListener() { public void onClick(View v) {//do something转载 2011-12-05 10:47:53 · 846 阅读 · 0 评论 -
Android HAL是如何被调用的
Android HAL是如何被调用的 分类: android系统移植 2011-07-14 20:47 231人阅读 评论(5)收藏 举报Android对硬件的调用,google推荐使用HAL的方式进行调用,对于Andriod HAL的写法,可以参考android源码里的hardware目录下几个模块的模版。在看HAL的编写方法的过程中,会发现整个模块貌似没转载 2011-11-08 15:47:11 · 511 阅读 · 0 评论