
Android深入研究
文章平均质量分 90
Eliot_shao
年轻人有先见之明。。。。。
展开
-
Android用surface直接显示yuv数据
上一篇文章主要是参照AwesomePlayer直接用SoftwareRenderer类来显示yuv,为了能用到这个类,不惜依赖了libstagefright、libstagefright_color_conversion等动态静态库,从而造成程序具有很高的耦合度,也不便于我们理解yuv数据直接显示的深层次原因。于是我开始研究SoftwareRenderer的具体实现,我们来提取So...转载 2019-11-12 14:42:04 · 934 阅读 · 0 评论 -
Android 7.1 竖屏转横屏全过程实现-基于高通平台
背景:调试使用一款800x1280分辨率的屏,客户希望横屏使用(1280x800),且没有旋转过程,看起来就是横屏显示一样。修改主要涉及几个方面,第一是LK阶段的图片,第二是开机动画的显示(/system/bin/bootanimation),第三是最终进入系统后的显示,且所有的显示过程无缝连接。涉及的库文件:/system/lib64/libsurfaceflinger.so/s原创 2017-04-25 19:39:33 · 13623 阅读 · 5 评论 -
高通Android平台-应用空间操作framebuffer dump LCD总结
高通Android平台 dump LCD总结转载请注明出处,谢谢!项目终于到一个比较奇葩的客户,希望可以中断Android系统界面,显示发送过来的图片。想在高通msm8937平台,720x1280 HD 显示屏上dump点东西,原创 2017-07-10 17:21:56 · 3553 阅读 · 0 评论 -
使用pinctrl子系统实现引脚功能动态切换
使用pinctrl子系统实现动态切换引脚功能 设备dts (msm8909-pinctrl.dtsi)&soc { tlmm_pinmux:pinctrl@1000000 { compatible= "qcom,msm-tlmm-8916"; reg= ;原创 2017-07-11 10:41:17 · 5020 阅读 · 0 评论 -
Android Input Framework-InputReader&InputDispatcher
原文转自http://blog.sina.com.cn/s/blog_89f592f501013969.html 1 InputReader处理Input消息在InputReaderThread继承于Thread中,读取RawEvent数据流程如下:1) Thread::_threadLoop()2) InputReaderThread::t转载 2017-07-11 17:31:50 · 688 阅读 · 0 评论 -
android 双触摸屏(touchscreen)实现--kernel driver
背景本文主要实现一个Android系统,调试两个相同的TP设备,使用同一个TP的驱动。最终实现结果,两个TP都可以控制Android,正常报点。实现过程:硬件连接介绍:软件实现:在dtsi文件添加两个TP设备(名字不一样):LA.UM.5.6\kernel\msm-3.18\arch\arm\boot\dts\qcom\msm8937-pmi8937...原创 2020-07-28 17:04:58 · 7177 阅读 · 4 评论 -
调整android输出分辨率,适配更大分辨率的屏
有时我们希望实现在大分辨率的屏上显示小分辨率的android界面。实际代码修改如下:--- a/kernel/msm-3.18/drivers/video/msm/mdss/mdss_fb.c+++ b/kernel/msm-3.18/drivers/video/msm/mdss/mdss_fb.c@@ -2501,8 +2501,8 @@ static int mdss_fb原创 2017-10-25 10:18:59 · 8820 阅读 · 1 评论 -
dumpsys实现原理
概述dumpsys是一个android手机里面的可执行文件。从名字就可以看出,主要是用于dump 当前android system的一些信息。比如activity(当前系统中所有activity的堆栈关系) alarm(当前系统中所有的Alarms)等等,是一项分析手机问题,运行状态,使用情况等十分有效的手段。查看所支持的dump选项adb shell dumpsys -l会列出所有可以d转载 2017-11-16 11:21:14 · 2523 阅读 · 1 评论 -
ELF文件和加载和动态链接的具有实现
本文的目的:大家对于Hello World程序应该非常熟悉,随便使用哪一种语言,即使还不熟悉的语言,写出一个Hello World程序应该毫不费力,但是如果让大家详细的说明这个程序加载和链接的过程,以及后续的符号动态解析过程,可能还会有点困难。本文就是以一个最基本的C语言版本Hello World程序为基础,了解Linux下ELF文件的格式,分析并验证ELF文件和加载和动态链接的具有实现。转载 2017-11-16 11:26:16 · 1553 阅读 · 0 评论 -
android minui fb显示相关函数
int gr_init(void); /* 初始化图形显示,主要是打开设备、分配内存、初始化一些参数 */ void gr_exit(void); /* 注销图形显示,关闭设备并释放内存 */ int gr_fb_width(void); /* 获取屏幕的宽度 */ int gr_fb_height(void)转载 2017-11-21 22:02:57 · 1733 阅读 · 0 评论 -
android Pixelflinger
1 Pixelflinger1.1 Pixelflinger 简介Pixelflinger是Android系统中为OpenGLES引擎提供的一套软件渲染器(renderer)。OpenGLES引擎提供了一系列基础绘图功能。这些功能包括定义各种颜色格式像素位置、画点画线、绘制矩形及三角形、填充纹理等等。由于OpenGLES相当于一个状态机,配置OpenGLEs状态的函数也均由转载 2017-11-21 23:04:42 · 716 阅读 · 0 评论 -
编译frameworks\native\services\surfaceflinger\tests\resize
mmm frameworks/native/services/surfaceflinger/tests/resize/遇到几个错误,这里面讲一下解决过程,有一部分参考网络。感谢。1、问题:frameworks/native/services/surfaceflinger/tests/resize/resize.cpp:50:26: error: aggregate 'ANative原创 2017-08-14 15:14:12 · 2344 阅读 · 0 评论 -
android的surfaceflinger原理讲解
SurfaceFlinger是Android multimedia的一个部分,在Android的实现中它是一个service,提供系统范围内的surface composer功能,它能够将各种应用程序的2D、3D surface进行组合。在具体讲SurfaceFlinger之前,我们先来看一下有关显示方面的一些基础知识。 1、原理分析让我们首先看一下下面的屏幕简略图:转载 2017-12-05 20:26:50 · 1175 阅读 · 0 评论 -
surfaceflinger增加hdmi显示设备
转载地址:http://blog.youkuaiyun.com/u010865783/article/category/66778191:当hdmi插入的时候,hdmi驱动会上报一个中断上来,在驱动中会发送一个Uevent给上层。 “/sys/class/switch/hdmi/state” 这个节点会由0变成12:在HWC中,启动的时候就开启一个hdmi状态监听的线程,当这个节点有变化的转载 2017-12-24 22:33:16 · 1009 阅读 · 0 评论 -
android build 系统
1、For config 这类文件主要来配置product,board,以及根据你的Host和Target选择相应的工具以及设定相应的通用编译选项: build/core/config.mk summary of config build/core/envsetup.mk generate dir config and so on原创 2018-01-21 16:57:27 · 888 阅读 · 0 评论 -
android屏幕旋转显示流程
PAD默认屏幕显示方向是竖着显示,改成默认横屏显示需要将屏幕的默认显示方向顺时针旋转90度.android显示系统的核心是surfaceflinger,它为所有的应用程序提供显示服务,它能够将各种应用程序的2D,3D surface进行组合,合并最终得到的一个main surface数据送入framebuffer,显示的翻转和旋转也是由surfaceflinger完成的,我们大致分析下surfac...转载 2018-06-01 15:10:08 · 3675 阅读 · 0 评论 -
Android 5.0 修改背光自动调节最低亮度值
项目中遇到一个BUG:开启自动调节后,如果把light and proximity sensor传感器遮住,此时的光感数据为0.背光等一会会变的很黑,看不到文字和图片。测试人员认为是屏幕休眠了。 解决办法:修改自动调节背光的最低值。修改文件:frameworks/base/core/res/res/values/config.xml8原来是1,修改成8。编译:m原创 2016-11-15 16:14:37 · 6494 阅读 · 2 评论 -
Init.rc妙用及语法说明
参考:system\core\init\readme.txtActions take the form of:on < trigger> < command> < command> < command> Services take the form of:service < name> < pathname> [ < argument> ]* < optio原创 2016-11-14 20:00:21 · 11263 阅读 · 0 评论 -
Android aidl Binder框架浅析
转载请标明出处:http://blog.youkuaiyun.com/lmj623565791/article/details/38461079 ,本文出自【张鸿洋的博客】1、概述Binder能干什么?Binder可以提供系统中任何程序都可以访问的全局服务。这个功能当然是任何系统都应该提供的,下面我们简单看一下Android的Binder的框架Android Binder框架分为服务器转载 2016-05-16 20:49:03 · 2806 阅读 · 0 评论 -
Android Service與JNI Native Code之關係
l 前言 到底甚麼是Android Service呢? 幾乎人人所談都不盡相同。有人依據Java的套件而分,例如Android 2.1裡,SensorService.java和ActivityManagerService.java屬於不同的套件,有人說SensorService是一項Android Service;而ActivityManagerService則不是。另有人說兩者转载 2016-05-04 13:50:23 · 1486 阅读 · 0 评论 -
ServiceManager add_service SELinux Permission Denied
问题点:在systemserver.java中添加如下代码,向servicemanager进程中添加一个service try { Slog.i(TAG, "Hello Service"); ServiceManager.addService("hello", new HelloService());// } catch (Throwable e) {原创 2016-06-27 19:17:55 · 10690 阅读 · 0 评论 -
Android架构实例分析之注册hello HAL的JNI方法表
Android架构实例分析之注册hello HAL的JNI方法表摘要:Android JNI是一种技术,提供Java调用Android native代码或者native调用Java代码的一种机制,并不提供策略。本文实现了基于前面两篇文章:Android标准架构实例分析之编写最简单的hello驱动 http://blog.youkuaiyun.com/eliot_shao/article/details/518原创 2016-07-09 00:50:13 · 2751 阅读 · 0 评论 -
Android架构实例分析之编写hello驱动的系统硬件服务
摘要:在上一文中介绍了hello驱动的JNI方法,最终更新在android runtime中的java-native函数表。本文将介绍java的世界中如何通过调用JNI定义的java函数实现hello系统服务进程,为应用程序提供系统服务。通信代理AIDLjava的世界,硬件服务一般是运行在一个独立的进程中为各种应用程序提供服务。因此,调用这些硬件服务的应用程序与这些硬件服务之间的通原创 2016-07-12 12:52:37 · 1546 阅读 · 0 评论 -
ADB Android 调试利器之常用ADB指令分享
adb start-server 启动adb server 如果他还没有启动adb kill-server 终结adb serveradb devices 检查并打印出来插到你电脑上的adb设备(请把设备的USB debuging打开!)adb install 'apk file' 给你的设备安装apk包ad原创 2016-06-30 20:36:58 · 947 阅读 · 0 评论 -
Android白话启动篇(Android booting process)
今天我们将深入Android的启动流程,从用户按下开机键到Android界面的过程。在谷歌上搜索“Android boot process”会得到很多很好英文文章,讲解Android启动这一过程,每个人讲述的角度不一样,通过阅读,对于Android的理解将会更加深刻。下面是链接,打不开的请翻墙!谢谢!https://www.google.com.hk/search?q=The+Android+原创 2016-07-01 12:41:37 · 8164 阅读 · 1 评论 -
解决avc-denied之设置SELinux策略
android KK 4.4 版本后,Google 默认启用了SELinux, 并会把SELinux 审查异常打印在kernel log 或者 android log(L 版本)中,对应的关键字是: “avc: denied” 或者”avc: denied”原创 2016-07-08 10:51:26 · 28171 阅读 · 0 评论 -
Android标准架构实例分析之编写最简单的hello驱动
Android标准架构实例分析之编写最简单的hello驱动摘要:本文主要实现了一个虚拟的字符设备驱动–hello_device 。这个设备驱动会创建相关的cdev数据结构和file_operations,并通过class_create和device_create在sys文件系统上创建相关的目录和文件,为udev创建相关的设备文件提供资源。最终会在/dev/下面创建/dev/hello这个文件节点。并原创 2016-07-08 13:34:46 · 4741 阅读 · 2 评论 -
Hello Stub failed to open hello Permission denied
Hello Stub:failed to open /dev/hello – Permission deniedAndroid 6.0中 在HAL层的代码要访问/dev/hello的时候出现了Hello Stub:failed to open /dev/hello !– Permission denied的错误! 查阅了Google中类似的问题,解决办法: 1、添加文件权限 2、修改SELin原创 2016-07-08 14:49:15 · 1748 阅读 · 0 评论 -
Android架构实例分析之编写hello驱动的HAL层代码
Android架构实例分析之编写hello驱动的HAL层代码摘要:HAL层中文名称又叫硬件抽象层,可以理解我Linux驱动的应用层。本文实现了一个简单的hello HAL的代码,衔接hello驱动和hello JNI:http://blog.youkuaiyun.com/eliot_shao/article/details/51860229Android标准架构实例分析之编写最简单的hello驱动HAL层的代码原创 2016-07-08 16:20:50 · 7415 阅读 · 2 评论 -
MIPI-DSI转HDMI
MIPI-DSI转HDMI驱动调试(lt8912)Overview屏的接口种类非常多,常见的包括RGB、HDMI、VGA、LVDS、EDP、MIPI等接口。其中,在Android移动设备上,大多采用的是MIPI接口。某些时候,由于某种需求,需要将 Android设备上的MIPI数据显示到其他接口的屏上,此时,则需要利用相关转换芯片将MIPI接口的数据转换成其他接口的数据。 比如家庭中常用的TV多数都原创 2016-09-08 09:40:35 · 25958 阅读 · 13 评论 -
MIPI-DSI 三种 Video Mode 理解
D- PHY的物理层支持HS(High Speed)和LP(Low Power)两种工作模式HS模式:低压查分信号 功耗大 高速率(80M -1Gbps) 信号幅值(100mv-300mv)LP模式:单端信号 功耗小,速率低(在高速模式下,通道状态是差分的0或1,定义P比N高时定义为1,P比N低时定义为0,此时线上典型电压为差分200mv在LP模式下,只用lane0原创 2016-09-08 19:31:56 · 98909 阅读 · 14 评论 -
Qcom android L ro.sf.lcd_density属性修改
Qcom android L ro.sf.lcd_density属性修改在kernel里面kernel/drivers/video/fbsysfs.c会导出数据/sys/class/graphics/fb0/virtual_size在Y:\LA.BR.1.2.4-05310-8x16.0\device\qcom\common\init\init_msm891原创 2016-09-26 17:51:01 · 15454 阅读 · 1 评论 -
android 在init.rc中配置socket及其使用
android 在init.rc中配置socket及其使用一般的native和framework的通信是通过jni,但是这一般只是framework调用native,native如果有消息要怎样通知上层呢?android中GSP模块提供一种解决思路,但是实现有些复杂,这里介绍一种使用socket通信的方法可以使native和framework自由通信,具体实现如下:android中使用转载 2016-11-14 16:06:40 · 3804 阅读 · 0 评论 -
SystemServer vs ServiceManager
背景在Android系统中有很多内置的软件,例如,当手机接到来电时,会显示对方的电话号。也可以根据周围的环境将手机设置成震动或静音。如果想把这些功能加到自己的软件中应该怎么办呢?答案就是“系统服务”。在Android系统中提供了很多这种服务,通过这些服务,就可以像Android系统的内置软件一样随心所欲地控制Android系统了。系统服务(System Services)并非Andro转载 2016-05-27 11:52:59 · 5468 阅读 · 0 评论