11 2012 档案
摘要:> 系统分区# adb shell# mountrootfs / rootfs ro 0 0tmpfs /dev tmpfs rw,mode=755 0 0devpts /dev/pts devpts rw,mode=600 0 0proc /proc proc rw 0 0sysfs /sys sysfs rw 0 0none /acct cgroup rw,cpuacct 0 0tmpfs /mnt/asec tmpfs rw,mode=755,gid=1000 0 0none /dev/cpuctl cgroup rw,cpu 0 0/dev/block/mtdblock0 /sy
阅读全文
摘要:编译C文件用GCC编译C++文件(包括.C/C++文件)用G++看看编译C++文件常用方法:单个文件: g++ file.cpp 这是最简单形式,缺省输出为a.out,可以用-o命令指定输出文件,比如g++ file.cpp f.out 多个文件: g++ -c 1.cpp -o 1.o g++ -c 2.cpp -o 2.o g++ 1.o 2.o -o prog.out 链接成可执行文件:一般用g++ -o file file.cpp 多个文件是g++ -o file file1.cpp file2.cpp ... 编译C++...
阅读全文
摘要:一 TelephonyManager TelephonyManager类主要提供了一系列用于访问与手机通讯相关的状态和信息的get方法。其中包括手机SIM的状态和信息、电信网络的状态及手机用户的信息。在应用程序中可以使用这些get方法获取相关数据。 TelephonyManager类的对象可以通过:Context.getSystemService(Context.TELEPHONY_SERVICE)方法来获得,需要注意的是有些通讯信息的获取对应用程序的权限有一定的限制,在开发的时候需要为其添加相应的权限。 TelephonyManager不是一个Framework层Service,属于Co..
阅读全文
摘要:一 监听手机Phone状态在手机里面监听Phone的状态有两种方法:1 注册接收广播 AndroidMenifest.xml: <receiver android:name="CallListener" > <intent-filter> <action android:name="android.intent.action.PHONE_STATE" /> <action android:name="android.intent.action.NEW_OUTGOING_CALL" />
阅读全文
摘要:Framework层Ril控制流程分析RIL Native层分析:http://www.cnblogs.com/bastard/archive/2012/11/05/2754891.html一 RIL整体框架看一下整个RIL部分框架图: 实际上Framework部分比较复杂的,包含了很多类;但其核心的两个类是GSMPhone/,RIL.Java. 还包括围绕这两个类构成的状态管理,命令交互的类。二 PhoneApp 启动过程在AndroidManifest.xml文件中: <application android:name="PhoneApp" android:per
阅读全文
摘要:系统启动过程图: Framework层所有的Service都是运行在SystemServer进程中;SystemServer进程是由Zygote进程创建。SystemServer进程启动分两个过程init1创建Service和进程状态对象;init2创建Framework层的Service,将其加入到ServiceManager中,最后启动launcher;Android提供了Watchdog类,用来监测Service是否处于正常工作中,是在SystemServer中启动的。 下面看一下SystemServer中Watchdog这个过程。SystemServer.java:public v..
阅读全文
摘要:一 Media Service进程启动Init.rc中描述的service对应linux 的进程:Media进程定义:service media /system/bin/mediaserver class main user media group audio camera inet net_bt net_bt_admin net_bw_acct drmrpc ioprio rt 4servicemanager 进程定义:service servicemanager /system/bin/servicemanager class core user sys...
阅读全文
摘要:通过对Ril部分代码的流程大致分析,其中的设计思路还是很值得学习:在RIL_JAVA层:通过RILSender与RILReceiver两个线程提高程序并发处理能力:发送 和接收;RILSender消息循环可以同时为多个请求服务;RILRequest将请求与响应绑定;在RIL_CPP层:Event机制:通过事件机制动态的对外部请求调度和处理,异步请求/处理模式,提高程序并发处理能力;消息映射表:采用消息数组的形式减少代码中存在较多的分支;模块间通信:迪米特法则,采用简单一致的接口,注册回调的方式; Ril.cpp Reference-ril.c Atchannel.c之间
阅读全文
摘要:从modem传递来的网络端事件,通过readLoop线程处理: readLoop读取数据过程:static void *readerLoop(void *arg){ for (;;) { //从与modem通信设备端口读取数据 line = readline(); if (line == NULL) { break; } //处理数据 processLine(line); } onReaderClosed(); return NULL;}static void pr...
阅读全文
摘要:Ril与modem的交互一 客户端的请求处理客户端请求从EventLoop通过dispatch传递到reference-ril.c中调用onRequest接口。 处理客户端请求:static void onRequest (int request, void *data, size_t datalen, RIL_Token t){ switch (request) { case RIL_REQUEST_DIAL: requestDial(data, datalen, t); break; ...
阅读全文
摘要:客户端请求处理和Event事件处理机制一 事件机制//ril_event.cppevent事件数据结构: struct ril_event { struct ril_event *next; struct ril_event *prev; int fd; //事件对应的设备文件句柄 int index; bool persist; struct timeval timeout; //事件超时处理时间 ril_event_cb func; //事件处理回调函数 void *param; //回调函数参数};相关对象: fd_set rea...
阅读全文
摘要:rild进程rild进程 init.rc中描述: service ril-daemon /system/bin/rild class main socket rild stream 660 root radio socket rild-debug stream 660 radio system user root进程rild.c中:int main(int argc, char **argv){ const char * rilLibPath = NULL; const RIL_RadioFunctions *(*rilInit)(const stru...
阅读全文