随笔分类 -  Android系统

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 拉风摊主 阅读(209) 评论(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 拉风摊主 阅读(174) 评论(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 拉风摊主 阅读(151) 评论(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 拉风摊主 阅读(219) 评论(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 拉风摊主 阅读(266) 评论(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 拉风摊主 阅读(216) 评论(0) 推荐(0)

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

posted @ 2018-06-07 17:58 拉风摊主 阅读(284) 评论(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 拉风摊主 阅读(607) 评论(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 拉风摊主 阅读(163) 评论(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 拉风摊主 阅读(182) 评论(0) 推荐(0)

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

posted @ 2018-06-05 17:54 拉风摊主 阅读(202) 评论(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 拉风摊主 阅读(452) 评论(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 拉风摊主 阅读(332) 评论(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 拉风摊主 阅读(204) 评论(0) 推荐(0)

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

posted @ 2018-06-03 21:46 拉风摊主 阅读(174) 评论(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 拉风摊主 阅读(332) 评论(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 拉风摊主 阅读(501) 评论(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 拉风摊主 阅读(769) 评论(0) 推荐(0)

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

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

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

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

导航