06 2018 档案

11.5 Android显示系统框架_Vsync机制_代码分析
摘要:5.5 surfaceflinger对vsync的处理buffer状态图画得不错:http://ju.outofmemory.cn/entry/146313 android设备可能连有多个显示器,APP也有多个surface对应各个layer 显示器可能断开或者连接,layer可能内容更新、属性变化 阅读全文

posted @ 2018-06-21 16:24 拉风摊主 阅读(638) 评论(0) 推荐(0) 编辑

11.5 Android显示系统框架_Vsync机制_黄油计划_三个方法改进显示系统
摘要:5. Vsync机制5.1 黄油计划_三个方法改进显示系统vsync, triple buffering, vsync虚拟化 参考文档:林学森 <深入理解Android内核设计思想>第2版 9.6节 Getting To Know Android 4.1, Part 3: Project Butte 阅读全文

posted @ 2018-06-18 21:27 拉风摊主 阅读(2508) 评论(0) 推荐(0) 编辑

11.4 Android显示系统框架_APP与SurfaceFlinger内部机制分析
摘要:4.1 APP跟SurfaceFlinger之间的重要数据结构 一个应用程序有一个或者多个surface(一般只有一个),一个surface有一个或者多个buffer,这些buffer需要应用向surfaceflinger申请; 在surfaceflinger中用client表示每一个应用程序,cl 阅读全文

posted @ 2018-06-15 10:43 拉风摊主 阅读(518) 评论(0) 推荐(0) 编辑

11.3 Android显示系统框架_最简单的surface测试程序
摘要:APP有一个surface(界面),其有多个buffer用来存放界面数据,这些buffer是向surfaceflinger申请的: 因此我们编写的surface测试程序步骤: (1)获得surfaceflinger服务 (2)创建surface (3)得到buffer (4)写buffer (5)提 阅读全文

posted @ 2018-06-14 20:28 拉风摊主 阅读(404) 评论(0) 推荐(0) 编辑

11.2 Android显示系统框架_android源码禁用hwc和GPU
摘要:2. 修改tiny4412_Android源码禁用hwc和gpu(厂家不会提供hwc和gpu的源代码,没有源代码就没法分析了,因此在这里禁用该功能并用软件库实现)最终源码: git clone https://github.com/weidongshan/SYS_0003_Patch_Disable 阅读全文

posted @ 2018-06-14 16:45 拉风摊主 阅读(1034) 评论(0) 推荐(0) 编辑

11.1 Android显示系统框架_framebuffer原理及改进
摘要:1. Android显示系统框架Android Graphic UI with GPU Hardware Accelerationhttps://community.nxp.com/docs/DOC-93612 a. 显示驱动framebuffer的原理及改进 只有一个FrameBuffer的缺点: 阅读全文

posted @ 2018-06-14 11:36 拉风摊主 阅读(2565) 评论(0) 推荐(0) 编辑

10.14 android输入系统_多点触摸驱动测试及Reader线程、InputStage分析
摘要:21. 多点触摸_电容屏驱动程序_实践_tiny4412 tiny4412触摸屏: 分辨率为800 x 480http://wiki.friendlyarm.com/wiki/index.php/LCD-S702/zh 测试:a. 先把原有的ft5x06_ts.c 驱动程序去掉 I2C驱动有i2c_ 阅读全文

posted @ 2018-06-13 19:18 拉风摊主 阅读(418) 评论(0) 推荐(0) 编辑

10.13 android输入系统_多点触摸驱动理论与框架
摘要:1、多点触摸驱动理论 驱动程序仅上报多个触点的位置就可以,是放大还是缩小由应用程序控制 对于多点触摸驱动在linux系统中有个输入子系统,其已经实现了open/read/write等接口 我们只需要实现硬件相关的升级,有数据时上报硬件相关数据给输入子系统 input.c//输入子系统核心文件 .op 阅读全文

posted @ 2018-06-12 18:00 拉风摊主 阅读(375) 评论(0) 推荐(0) 编辑

10.12 android输入系统_InputStage理论
摘要:android应用程序对输入系统的处理分为多个阶段,我们把这些阶段称为InputStage 理论处理流程: (1)activity发给window,如果window不能处理,再由activity处理; (2)window接受输入信息后,window发给decor,如果decor不能处理,再由wind 阅读全文

posted @ 2018-06-12 15:45 拉风摊主 阅读(486) 评论(0) 推荐(0) 编辑

10.11 android输入系统_补充知识_activity_window_decor_view关系
摘要:android里:1个application, 有1个或多个activity(比如支付宝有:首页、财富、口碑、朋友、我的,这些就是activity)1个activity, 有1个window(每个activity都有一个显示界面window)1个window, 有1个decor(装饰/样式:全屏、有 阅读全文

posted @ 2018-06-11 20:22 拉风摊主 阅读(134) 评论(0) 推荐(0) 编辑

10.10 android输入系统_APP获得并处理输入事件流程
摘要:APP对fd/InputChannel的注册过程: new WindowInputEventReceiver extends InputEventReceiver//InputEventReceiver类的dispatchInputEvent函数会调用onInputEvent onInputEven 阅读全文

posted @ 2018-06-11 19:57 拉风摊主 阅读(305) 评论(0) 推荐(0) 编辑

10.9 android输入系统_APP跟输入系统建立联系和Dispatcher线程_分发dispatch
摘要:12. 输入系统_APP跟输入系统建立联系_InputChannel和Connection核心: socketpair // 第9课第3节_输入系统_必备Linux编程知识_任意进程双向通信(scoketpair+binder) 对于每个APP在WindowManagerService中都有个Win 阅读全文

posted @ 2018-06-11 14:58 拉风摊主 阅读(261) 评论(0) 推荐(0) 编辑

10.8 android输入系统_实战_使用GlobalKey一键启动程序
摘要:11. 实战_使用GlobalKey一键启动程序参考文章:Android 两种注册(动态注册和静态注册)、发送广播的区别http://www.jianshu.com/p/ea5e233d9f43 【Android】动态注册广播接收器 http://blog.csdn.net/etzmico/arti 阅读全文

posted @ 2018-06-10 23:39 拉风摊主 阅读(444) 评论(0) 推荐(0) 编辑

10.7 android输入系统_Dispatcher线程情景分析_Reader线程传递事件和dispatch前处理
摘要:android输入系统C++最上层文件是com_android_serve_input_InputManagerService.cpp global key:按下按键,启动某个APP可以自己指定,修改frameworks\base\core\res\res\xml\Global_keys.xml假设 阅读全文

posted @ 2018-06-10 22:06 拉风摊主 阅读(394) 评论(0) 推荐(0) 编辑

10.6 android输入系统_Dispatcher线程_总体框架
摘要:图解Android - Android GUI 系统 (5) - Android的Event Input System - 漫天尘沙 - 博客园.htm // 关注里面的Dispatcher处理流程http://www.cnblogs.com/samchen2009/p/3368158.html D 阅读全文

posted @ 2018-06-10 18:57 拉风摊主 阅读(125) 评论(0) 推荐(0) 编辑

10.5 android输入系统_Reader线程_使用EventHub读取事件和核心类及配置文件_实验_分析
摘要:4. Reader线程_使用EventHub读取事件 使用inotify监测/dev/input下文件的创建和删除 使用epoll监测有无数据上报 细节: a、fd1 = inotify_init("/dev/input") b、假设input下已经有了event0和event1 fd2 = ope 阅读全文

posted @ 2018-06-10 18:33 拉风摊主 阅读(456) 评论(0) 推荐(0) 编辑

10.4 android输入系统_框架、编写一个万能模拟输入驱动程序、reader/dispatcher线程启动过程源码分析
摘要:1. 输入系统框架 android输入系统官方文档 // 需FQhttp://source.android.com/devices/input/index.html 《深入理解Android 卷III》第五章 深入理解Android输入系统 // 主要讲EventHubhttp://blog.csd 阅读全文

posted @ 2018-06-09 23:51 拉风摊主 阅读(314) 评论(0) 推荐(0) 编辑

10.3、android输入系统_必备Linux编程知识_任意进程双向通信(scoketpair+binder)
摘要:3. 任意进程间通信(socketpair_binder) 进程每执行一次open打开文件,都会在内核中有一个file结构体表示它; 对每一个进程在内核中都会有一个task_struct表示进程,这个结构体内部有个files_struct结构体,这个结构体里面有个fdtble结构体,这个结构体里有个 阅读全文

posted @ 2018-06-09 22:06 拉风摊主 阅读(326) 评论(0) 推荐(0) 编辑

10.2、android输入系统_必备Linux编程知识_双向通信(scoketpair)
摘要:2. 双向通信(socketpair) 输入系统肯定涉及进程通讯:进程A读取/分发输入事件,APP处理输入事件,进程A给APP发送输入事件,APP处理完事件回复信息给进程A,APP关闭的时候也要发信息给进程A binder用在进程间双向通信的时候的确定:每次请求只能由client单方发起 因此如果使 阅读全文

posted @ 2018-06-09 21:32 拉风摊主 阅读(234) 评论(0) 推荐(0) 编辑

10.1、android输入系统_必备Linux编程知识_inotify和epoll
摘要:1. inotify和epoll 怎么监测键盘接入与拔出? (1)hotplug机制:内核发现键盘接入/拔出==>启动hotplug进程==>发消息给输入系统 (2)inotify机制:输入系统使用inotify来监测目录/dev/input android使用inofity机制 当插入多个键盘时, 阅读全文

posted @ 2018-06-09 19:55 拉风摊主 阅读(289) 评论(0) 推荐(0) 编辑

9.13 Binder系统_Java实现_内部机制_Server端
摘要:logcat TestServer:* TestClient:* HelloService:* *:S &CLASSPATH=/mnt/android_fs/TestServer.jar app_process / TestServer &CLASSPATH=/mnt/android_fs/Test 阅读全文

posted @ 2018-06-09 15:37 拉风摊主 阅读(229) 评论(0) 推荐(0) 编辑

9.12 Binder系统_Java实现_内部机制_Client端
摘要:Java实现中client端的RPC层(java实现)如何通过JNI来调用IPC层(C++实现)发送数据 TestServer通过addService向Service_manager注册的时候TestServer是Client端,Service_manager是Server端; TestClient 阅读全文

posted @ 2018-06-08 23:36 拉风摊主 阅读(199) 评论(0) 推荐(0) 编辑

9.11 Binder系统_分层
摘要:1、Binder系统过程分析,情景分析 server提供服务 (1)addService(服务名称,xxx)执行后会导致binder驱动在server的内核空间为服务创建一个binder_node结构体,并且会在service_manager内核空间创建一个binder_ref,其node参数指向s 阅读全文

posted @ 2018-06-08 19:59 拉风摊主 阅读(162) 评论(0) 推荐(0) 编辑

9.10 Binder系统_Java实现_hello服务
摘要:怎么做?2.1 定义接口: 写IHelloService.aidl文件, 上传, 编译, 得到IHelloService.java 里面有Stub : onTransact, 它会分辨收到数据然后调用sayhello, sayhello_to有Proxy : 提供有sayhello, sayhell 阅读全文

posted @ 2018-06-08 17:32 拉风摊主 阅读(147) 评论(0) 推荐(0) 编辑

9.9 Binder系统_Java实现_Android里java程序的编译启动
摘要:如果知道了进程号:通过ls /proc/进程号/task 可以看到所有线程 cat /proc/进程号/task/线程号/comm 可以达到线程名字(主线程是main,主线程号就是进程号) dalvikvm //android上运行的虚拟机,其接受的是dex格式的文件,所以在android上运行的时 阅读全文

posted @ 2018-06-08 14:18 拉风摊主 阅读(213) 评论(0) 推荐(0) 编辑

9.8 Binder系统_c++实现_内部机制1
摘要:1. 内部机制_回顾binder框架关键点 binder进程通讯过程情景举例: test_server通过addservice向service_manager注册服务 test_client通过getservice向service_manager获取服务 然后test_client使用服务和test 阅读全文

posted @ 2018-06-08 11:45 拉风摊主 阅读(241) 评论(0) 推荐(0) 编辑

9.7 Binder系统_c++实现_编写程序
摘要:参考文件:frameworks\av\include\media\IMediaPlayerService.h (IMediaPlayerService,BnMediaPlayerService)frameworks\av\media\libmedia\IMediaPlayerService.cpp 阅读全文

posted @ 2018-06-07 20:54 拉风摊主 阅读(204) 评论(0) 推荐(0) 编辑

9.6 Binder系统_驱动情景分析_server的多线程实现
摘要:当多个client对server发出请求的时候,如果server忙不过来的时候会创建多线程来处理请求 那么忙不过来由谁来判断? server进程有个binder_proc结构体,其里面有todo链表(放有client发过来的数据),并且会唤醒等待在binder_proc.wait上的线程,如果有线程 阅读全文

posted @ 2018-06-07 17:58 拉风摊主 阅读(273) 评论(0) 推荐(0) 编辑

9.5 Binder系统_驱动情景分析_transaction_stack机制
摘要:参考文章:http://www.cnblogs.com/samchen2009/p/3316001.html test_server服务进程可能有多个线程,而在发送数据的时候handle只表示了那个进程 (1)发给谁?handle只表示了那个进程,数据是发给进程还是某个线程 一般数据放在binder 阅读全文

posted @ 2018-06-07 17:11 拉风摊主 阅读(557) 评论(0) 推荐(0) 编辑

9.4 Binder系统_驱动情景分析_服务使用过程
摘要:5. 服务使用过程 test_client进程: 用户态: (1)已结获得了“hello”服务,handle=1; (2)构造数据:code(那个函数)和函数参数 (3)发送ioctl后进入内核态,先写后读 (15)取出返回值 内核态: (4)binder_ioctl被调用,根据handle在bin 阅读全文

posted @ 2018-06-07 11:24 拉风摊主 阅读(155) 评论(0) 推荐(0) 编辑

9.3 Binder系统_驱动情景分析_服务获取过程
摘要:4. 服务获取过程 test_client客户端: (1)在用户态先构造name=“hello”的数据(服务的名字是hello),调用ioctl发送数据给service_manager(handle=0) (2)进入内核态后根据handle=0找到service_manger,把数据放入它的todo 阅读全文

posted @ 2018-06-07 09:12 拉风摊主 阅读(169) 评论(0) 推荐(0) 编辑

9.2 Binder系统_驱动情景分析_服务注册过程
摘要:1. 几个重要结构体的引入给test_server添加一个goodbye服务, 由此引入以下概念: 进程间通信其实质也是需要三要素:源、目的、数据,源是自己,目的用handle表示;通讯的过程是源向实现进程的“服务”发数据,handle是对“服务”的引用,在不同的进程里面handle不一样,即使多个 阅读全文

posted @ 2018-06-05 17:54 拉风摊主 阅读(169) 评论(0) 推荐(0) 编辑

9.1 Binder系统_C程序示例_框架分析和编写程序
摘要:IPC : Inter-Process Communication, 进程间通信 A进程把数据原原本本的发给B,这就是IPC RPC : Remote Procedure Call, 远程过程调用 A进程如果想调用其无权限调用的led_open函数,而B进程可以调用:A进程封装数据发送给B;B进程取 阅读全文

posted @ 2018-06-04 17:08 拉风摊主 阅读(404) 评论(0) 推荐(0) 编辑

8.6 Android灯光系统_源码分析_背光灯
摘要:Change system screen brightness, using android.provider.Settings.System.SCREEN_BRIGHTNESSandroid-er.blogspot.com/2011/02/change-system-screen-brightne 阅读全文

posted @ 2018-06-03 23:36 拉风摊主 阅读(310) 评论(0) 推荐(0) 编辑

8.5 Android灯光系统_源码分析_通知灯
摘要:参考文章(应用程序举例)how to use the LED with Android phonehttp://androidblogger.blogspot.jp/2009/09/tutorial-how-to-use-led-with-android.html 通知的种类有声音、震动、闪灯 Ap 阅读全文

posted @ 2018-06-03 23:27 拉风摊主 阅读(196) 评论(0) 推荐(0) 编辑

8.4 Android灯光系统_源码分析_电池灯
摘要:电池灯的Java代码在batteryservice.java中 电池的状态电量等信息由驱动获得,但驱动不会主动做这些事情,因此肯定有个App调用驱动程序读取电池信息,称这个App为A应用。 还有个App应用B,根据电量低的情况提示对话框:提示充电、对话框:将在30S内自动关机,应用A会发出一些通知 阅读全文

posted @ 2018-06-03 21:46 拉风摊主 阅读(167) 评论(0) 推荐(0) 编辑

8.3 Android灯光系统_编写HAL_lights.c
摘要:注意在led-classes.c中定义的led_class_attrs[]所建立的文件的属性应该改为0666,否则应用程序无权操作它 同时ledtrig-time.c里面对应新建的那几个delay_on/delay_off也要改为0666,这样才能写它 Java: frameworks/base/s 阅读全文

posted @ 2018-06-03 18:17 拉风摊主 阅读(306) 评论(0) 推荐(0) 编辑

8.2 Android灯光系统_led_class驱动
摘要:android-5.0.2\hardware\libhardware\include\hardware\lights.h //系统一些宏定义 android源码只带的灯光驱动在linux内核的driver/leds/led-class.c中,其是led驱动的顶层框架文件 该驱动的提供的功能在leds 阅读全文

posted @ 2018-06-03 14:15 拉风摊主 阅读(476) 评论(0) 推荐(0) 编辑

8.1 Android灯光系统_总体框架
摘要:1、框架 APP(java语言实现) JNI(c++语言实现) 向上提供Java执行c函数的接口 向下访问HAL HAL(c或c++语言实现) 封装硬件操作细节 Driver(c语言实现) 操作硬件 如果JNI是自己写的,那么其接口就只有自己知道,应用程序只能自己写,因此必须使用android现有的 阅读全文

posted @ 2018-06-03 09:51 拉风摊主 阅读(739) 评论(0) 推荐(0) 编辑

7.2 基础知识ArrayMap
摘要:1、android源码中维护有键值对,通过键可以找到值 Java中Object是所有类的父类,对于键值对的保存如果使用个ObjectArray数组,比如N个位置存放键,N+1的位置就存放值,那么如果键值对很多是,查找效率不高。 在android源码中可以查看ArrayMap.java文件,其维护了键 阅读全文

posted @ 2018-06-03 09:06 拉风摊主 阅读(191) 评论(0) 推荐(0) 编辑

7.1 基础知识Android消息处理机制
摘要:1. Android消息处理机制: Handler, MessageQueue, Looper, Thread 线程概念 : 一个应用程序运行时它的主体被称为进程, 一个进程内部可以有多个线程, 线程共享进程的资源 线程间通信 在android系统中是怎么封装通讯的,假如存在两个线程A和B,如果A线 阅读全文

posted @ 2018-06-02 23:31 拉风摊主 阅读(182) 评论(0) 推荐(0) 编辑

6.5 Android硬件访问服务使用反射
摘要:1、前面的例子中App为了能够范问ILedService接口,把classes.jar导入到应用程序中,但是我们不想把classes编进apk包里面去,这样导致我们的apk程序会很大(解压缩apk会发现里面有classes.dex和classes2.dex这两个优化后的包) 因此这里修改编译选项: 阅读全文

posted @ 2018-06-02 20:34 拉风摊主 阅读(450) 评论(0) 推荐(0) 编辑

6.4 Android硬件访问服务编写HAL代码
摘要:JNI向上提供本地函数,向下加载HAL文件,并调用HAL的函数; HAL负责访问驱动程序执行硬件操作 JNI和HAL都是用c语言或者C++语言编写的,JNI加载HAL的实质就是使用dlopen加载动态库文件 安多人源代码中第dlopen做了一层封装,在JNI中是通过hw_get_module来加载动 阅读全文

posted @ 2018-06-02 16:40 拉风摊主 阅读(416) 评论(0) 推荐(0) 编辑

6.3 Android硬件访问服务APP代码
摘要:以下步骤是操作MainActivity类 1、导入包 import android.os.ILedService 2、添加成员变量 private ILedService iLedService = null; 3、在OnCreate中对上面新增加的成员变量赋值 iLedService =ILedS 阅读全文

posted @ 2018-06-02 16:06 拉风摊主 阅读(388) 评论(0) 推荐(0) 编辑

6.2、Android硬件访问服务编写系统代码
摘要:1、实现接口文件给App使用,接口文件是应用程序查询获得服务时获得 使用AIDL(Android接口定义语言)来实现ILedService.java接口 定义ILedService.aidl interface ILedService { int IedCtrl(int which,int stat 阅读全文

posted @ 2018-06-02 11:57 拉风摊主 阅读(226) 评论(0) 推荐(0) 编辑

6.1、Android硬件访问服务之框架
摘要:1、通过前面led点亮的例子,其流程如下 Android app(java)(通过loadLibrary)——>C library(C库做如下事情)——>1、JNI_Onload 2、jniRegisterNativeMethods 3、ledOpen、ledClose、ledCtrol 4、ope 阅读全文

posted @ 2018-06-02 10:42 拉风摊主 阅读(287) 评论(0) 推荐(0) 编辑

5、Android系统举例led
摘要:1 阅读全文

posted @ 2018-06-02 10:31 拉风摊主 阅读(91) 评论(0) 推荐(0) 编辑

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示