自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(28)
  • 资源 (1)
  • 收藏
  • 关注

原创 2021-05-10

最近项目上经常遇到播放器相关的问题。所以没有办法,只能看一下Android 播放器相关的框架。通过最近的学习,个人感觉有一下几点心得。主要有一下几点需要注意:1.视频文件中的视频格式(video/avc)是如何确定的(mp4文件中的mime)2.解码插件是在OMXMaster文件中进行加载的。所以第三方插件接入口就在这个地方3.如何根据videoTrack加载插件列表中的解码库4.OMX与解码库之间的交互是通过mHandler进行的,而mHandler的初始化是在解码器加载的时候有解码器初始化的。

2021-05-10 16:56:17 107

原创 Android init service启动流程分析

在Android kernel启动完成之后,将会启动init进程,这个进程是用户空间的第一个进程。在init进程中将会解析init.rc文件。在init.rc文件中包含有一些系统服务。这些服务可以自动启动,或者是根据某些条件启动。在项目的开发过程中,有抓取开机log和开机报文的需求。最初的想法是把log和报文抓到U盘里面,但是分析系统启动 流程发现在开机的时候网络链接要早于U盘挂载,所以无法将开机的报文抓到U盘里。所以最终决定将开机报文分为两部分:1.开机启动过程的报文(U盘挂载之前);2.开机U盘挂载之

2021-03-20 17:20:45 1210 2

原创 蓝牙设备按键是如何传递给Framework的

蓝牙按键是如何上传给Framework层的主要流程是蓝牙controller接收到slaver消息之后传递给host,然后host将按键信息写入到/dev/input路径下的一个节点中。之前分析过input按键的传递流程,此处的处理方式是一样的。区别是PhoneWindowManager接收到蓝牙的按键信息之后,会发送MSG_DISPATCH_MEDIA_KEY_WITH_WAKE_LOCK进行处理,接收到这个msg之后,就会调用AudioService进行处理。AudioService就会调用Media

2020-05-25 10:30:28 225

原创 蓝牙基本概念以及Android中蓝牙enable/discover流程分析

蓝牙基本概念两种蓝牙技术:Basic Rate (BR)和Low Energy(LE)这两种技术是不能互通的,也就是不能相互兼容。如果要确保和所有的蓝牙设备互通,只能同时实现这两种技术。BRBasic Rage是正宗的蓝牙技术,包括可选的(optional)的EDR(Enhanced Data Rate)技术,以及Alternate(交替使用的)MAC层和PHY层扩展(简称AMP)。LE...

2020-04-26 17:26:05 1418

原创 蓝牙梳理

根据目前对蓝牙的梳理情况,将蓝牙的大体结构梳理如上图。后面在此基础上分析蓝牙的结构。

2019-09-30 16:48:07 153

原创 InputManagerService分析(2)

这篇文章补充了之前文章中没有的view初始化的流程分析。本文详细的分析了input event是通过何种方式传递到activity以及从驱动中读取到event后,jni是如何对按键进行上报的过程。通过本文的分析,能够基本上了解按键的整个传递过程。View的初始化在启动一个activity时将会调用ViewRootImpl.setView()函数。下面将这个函数中的主要部分给出:public ...

2019-08-13 15:16:06 225

原创 Android Vold学习笔记

2019-06-10 16:32:38 174

原创 Android Log原理分析

在android开发的过程中,需要查看log信息来帮助分析。那么知晓log的原理就是比较重要的了。Framework 中的LogFramework中的Log比较简单,主要就是封装接口,在接口中调用println_native函数。下面只以其中的一个进行分析。public static int v(String tag, String msg) { if (tag == null) {...

2019-05-31 17:46:49 2569 2

原创 Android Activity 接收按键原理分析(2)

按键传递过程接收按键的传递流程EventHub用来读取驱动中的event。InputReader负责将EventHub中的消息读取出来,之后InputDispatcher将event发送出来。具体代码如下InputReader.cppvoid InputReader::loopOnce() { ··· size_t count = mEventHub->getEvents(ti...

2019-05-27 10:45:53 668

原创 Android Activity 接收按键原理分析(1)

之所以Activity能够接收到来自底层的Keyevent是因为在显示时创建了一个InputChannel。当底层有按键事件时就会通过这个InputChannel传递上来。View的初始化在启动一个activity时将会调用ViewRootImpl.setView()函数。下面将这个函数中的主要部分给出:public void setView(View view, WindowManager...

2019-05-24 16:13:22 557

原创 Android Input keycode &scanCode

键值对接涉及到的文件:frameworks/native/include/input/KeycodeLabels.hexternal/kernel-headers/original/linux/input.hScanCode &KeyCode的对应关系主要log如下:D/InputReader( 3795): deviceId 1D/InputReader( 3795):...

2019-04-28 16:54:26 2206

原创 Android.mk转换Android.bp方法

1.整体编译SourceCode。会在out/soong/host/linux-x86/bin/中生成androidmk 文件。利用这个bin文件能够将Android.mk文件转换成Android.bp文件。例如,想要添加一个第三方的jar包。内容如下:LOCAL_PATH := $(call my-dir)include $(CLEAR_VARS)LOCAL_MODULE = com.a...

2019-01-18 16:05:59 6573 1

原创 Android 9.0 cmds

之前Android中的cmd都是bin文件,例如svc/settings等。这些命令的源码都是存放在android/framework/base/cmds目录下。在android 9.0中也是在这个位置,但是实现方式进行了改动。下面就来说说Android 9.0中是如何实现的。cmds的实现方式通过查看Android源码发现,在framework/base/cmds目录下面依旧存在这些目录结构...

2019-01-02 17:43:34 1031

原创 Android6.0&9.0 Wifi

在介绍Android9.0中wifi的架构之前,先介绍一下Android Treble项目。Android系统架构1.应用框架。 应用框架最常被应用开发者使用。作为硬件开发者,您应该非常了解开发者 API,因为很多此类 API 都可以直接映射到底层 HAL 接口,并可提供与实现驱动程序相关的实用信息。2.Binder IPC。 Binder 进程间通信 (IPC) 机制允许应用框架跨越进程...

2018-12-19 14:53:17 2549

原创 Android 9.0 Wifi启动分析

2018-12-04 15:59:05 2288

原创 本地Android代码库的搭建

在android系统开发的过程中,source code是由git来做代码管理的。在android source code中有很多的git仓库,如果单个去管理的话会比较麻烦。这就引入了repo。repo是用python写的一个脚本,用来封装git的操作。下面就以android源码为例,介绍repo+git的搭建。repo工具的安装对于普通用户安装repo的方法如下1.新建~/bin,并...

2018-11-08 11:18:37 1156

原创 wpa_cli工具的使用方法及分析

wpa_cli 的使用方法在Android中有wpa_cli工具能够直接可wpa_supplicant通讯。能够查看一些wifi的信息。使用方法:wpa_cli -i wlan0 -p /data/misc/wifi/socketswpa_cli源码分析int main(int argc, char *argv[]){··· for (;;) { c = getopt(argc,...

2018-10-18 14:19:15 6067

原创 Wpa_supplicant启动流程草图

之前关于Wifi启动流程中有提到Wpa_supplicant的启动方式。究竟supplicant启动过程是如何的,supplicant是如何与client端,与netlink是如何进行交互的呢。首先看一下官方关于supplicant的框图:从官方的这张图中可以看到,所有的事件都是围绕event loop进行处理的。下面这张草图是自己分析supplicant时分析的草图。从上至下就是按照...

2018-10-18 13:37:22 1584

原创 StateMachine原理分析

Wifi的消息处理大多数是在WifiStateMachine、或者其他的StateMachine中进行处理的。初始化StateMachine主要的工作就是初始化一个handler(SmHandler)。mSmHandler = new SmHandler(looper, this);在父类中的初始化函数中默认添加两个状态addState(mHaltingState, null);add...

2018-10-17 14:59:44 973

原创 Android Wifi 启动过程分析

WifiService的启动Android中的Service启动都是从SystemServer中启动的。WifiService也不例外。在开机时,如果Wifi的状态是on的话,是如何启动的,下面进行分析首先看WifiService在SystemServer中是怎么启动的private static final String WIFI_SERVICE_CLASS = ...

2018-10-17 14:43:41 2054

原创 高通开机动画生成方法

在高通平台有生成开机动画的脚本:地址:device/qcom/common/display/logo/logo_gen.py生成方式:1 The steps to generate a splash.img:2 1 sudo apt-get install python-imaging3 2 python ./logo_gen.py snapdragon.png...

2018-09-28 15:19:05 1118

原创 InputManagerService分析(1)

title: InputManagerServicetags: 新建,模板,小书匠grammar_cjkRuby: true初始化在SystemServer中实例化InputManagerService,注册WMS.callback,之后就启动InputManagerService。SystemServerInputManagerServiceWindowManaActivityMan...

2018-09-28 15:12:19 248

原创 Recovery UI更新分析

文章目录1.Recovery流程2.Recovery UI初始化流程分析3.字体加载函数`gr_init`4.下面看一下图片加载函数`LoadBitmap`5.Recovery按键事件的监听6.Recovery 中图片的显示7.Recovery UI 更新1.Recovery流程2.Recovery UI初始化流程分析之前讲过Recovery 的流程。那么在定制化的过程当中,可能涉及到Re...

2018-09-28 15:10:52 1674

原创 Recovery流程梳理

文章目录1. Recovery介绍2. Framework recovery 分析2.1 Framework Recovery流程2.2 Framework Recovery 分析3. Recovery分析3.1 Recovery流程3.2 Recovery源码分析4. 升级的执行者 Updater分析5. OTA 目录结构6. 涉及到的其它内容1. Recovery介绍1.进入方式:rese...

2018-09-28 15:08:35 2832

原创 Aboot启动流程分析

位置:bootloader/lk/app/aboot/aboot.c在文件结尾有如下代码:APP_START(aboot) .init = aboot_init,APP_END看一下宏APP_START的定义#define APP_START(appname) struct app_descriptor _app_##appname __SECTION(".apps") = { ....

2018-09-28 15:07:15 2916

原创 Android Tel 拨打电话及来电流程分析

打电话流程接下来分析一下打电话的流程。输入电话号码的流程这里忽略。输入电话号码之后会点击拨打图标。之后就会走拨打电话的流程了。这部分是在packages/apps/Dialer/src/com/android/dialer/DialtactsActivity.java中实现的。下面分析源码分析 public void onClick(View view) { switc...

2018-09-28 15:05:34 2061

原创 Android Telephone初始化流程分析

Telephone 系统框图Tel系统中的服务从功能方面进行区分,Tel可以分为以下几部分:1.TelecomLoaderService。这部分主要是处理上层app的关系2.TelephonyRegistry。这部分主要是处理Phone状态的通知。3.PhoneAPP 这部分是系统core app4.lib库下面对前三部分进行分析各个服务的启动在Android中,系统服务的起...

2018-09-28 15:03:33 2726

原创 Handler典型使用方法代码分析

典型的Handler的使用方法Looper.prepared();Handler handler = new Handler();Looper.loop(); Handler 初始化和消息处理流程Looper的初始化Class Looper {static final ThreadLocal<Looper> sThreadLocal = new Thread...

2018-09-28 13:53:04 461

Android iptables 使用及源码分析

Android iptables 使用及源码分析

2017-07-06

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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