
深入研究Android
古月印象星空
热爱生活,热爱工作
展开
-
Android键盘映射
对于按键事件,Android调用mDevices[i]->layoutMap->map进行映射。映射实际是由 KeyLayoutMap::map完成的,KeyLayoutMap类里读取配置文件qwerty.kl,由配置 文件 qwerty.kl 决定键值的映射关系。你可以通过修 改./development/emulator/keymaps/qwerty.kl来改变键值的映射关系。具体可以原创 2011-12-08 10:57:58 · 1519 阅读 · 0 评论 -
Logcat源码分析(三)
三、读取日志设备文件读取日志设备文件内容的readLogLines()函数也在logcat.cpp中,只是它是定义在Android命名空间中。所以要以Android::readLogLines(devices)方式调用。static void readLogLines(log_device_t* devices) { log_device_t* dev;翻译 2011-12-15 10:46:41 · 1897 阅读 · 0 评论 -
logcat源码分析(六)
继续看logcat.cpp的processBuffer函数,如果执行完Android_log_shouldPrintLine函数后,表明当前日志记录应当输出,则调用android_log_printLogLine函数来输出日志记录到文件fd中, 这个函数也是定义在system/core/liblog/logprint.c文件中:int Android_log_printLogLine(翻译 2011-12-15 10:48:44 · 2571 阅读 · 0 评论 -
Logger详解(一)
本文编辑整理自:http://www.linuxidc.com/Linux/2011-07/38987.htm一、简介Android为我们提供了一个轻量级的日志系统,在用户空间分别提供了Java接口和C/C++接口来使用这个日志系统。关于Android的日志系统,请先阅读《Android中LOG机制详解》,《在Android的c/c++域使用LOG》,《logcat命令详解》A翻译 2011-12-15 10:41:26 · 6513 阅读 · 0 评论 -
Logger详解(二)
本文编辑整理自:http://www.linuxidc.com/Linux/2011-07/38987.htm三、 Logger初始化过程分析。在kernel/drivers/staging/Android/logger.c文件,定义了四个日志设备:/* * Defines a log structure with name 'NAME' and a size of 'SIZ翻译 2011-12-15 10:42:13 · 4308 阅读 · 0 评论 -
Logcat源码分析(四)
继续看logcat.cpp的readLogLines()这个函数if (result == 0) { // we did our short timeout trick and there's nothing new // print everything we have and wait for more data sleep = true;翻译 2011-12-15 10:47:15 · 1488 阅读 · 0 评论 -
Android系统Binder机制之一(Service Manager篇)
本文转载整理自: http://my.unix-center.net/~Simon_fu/?p=875 一、前言Android虽然构建在Linux上面,但是在IPC(进程间)机制方面,没有利用Linux提供IPC机制,而是自己实现了一套轻量级的IPC机制——binder机制。并且Android Binder机制之上,Android框架提供了一套封装,可以实现对象代理(在本地进程转载 2012-03-13 18:06:18 · 1992 阅读 · 3 评论 -
Android系统Binder机制之二(服务代理对象 上篇)
本文转载整理自: http://my.unix-center.net/~Simon_fu/?p=894上文《Android系统Binder机制之一(Service Manager篇)》我们学习了Service Manager在Android Binder中的作用——服务(Service)注册,服务(Service)查询的功能。本文我们一起学习服务(Service)在客户端中的代理转载 2012-03-13 18:07:16 · 2788 阅读 · 0 评论 -
Android系统Binder机制之三(服务代理对象 下篇)
转载整理自: http://my.unix-center.net/~Simon_fu/?p=942 上文《Android系统的Binder机制之二——服务代理对象(1)》我们学习了进程的C/C++层面的服务代理对象BpBinder,和Binder底层处理方式。本文我们将深入分析一下在进程的Java层面服务代理对象的创建和使用。一、Android进程的C/C++层面和Java层转载 2012-03-13 18:08:06 · 3391 阅读 · 0 评论 -
Android系统的Binder机制之四(系统Service篇)
本文整理转载自:http://my.unix-center.net/~Simon_fu/?p=988 前面我们已经介绍了Android Binder机制的Service Manager,Service对象代理(上),Service对象代理(下)。本文将介绍一下Android机制的另外一个重要部分——系统Service。一、系统Service实例——Media server转载 2012-03-13 18:09:12 · 1552 阅读 · 0 评论 -
如何在Android中启动JAVA程序
本人博客原文:http://hubingforever.blog.163.com/blog/static/17104057920126166411775/在Android中启动JAVA程序其实有很多种方式,现总结如下一、在Android应用程序中发送Intent启动Android应用程序这个方式最简单,最常用。在此不在累述。关于Intent的更多内容请阅读《Intent技术简介原创 2012-07-17 08:05:56 · 14202 阅读 · 5 评论 -
基本Dalvik VM调用
中文原文: http://hi.baidu.com/seucrcr/item/ebd1b34879a168086cc2f078英文原文:http://www.netmite.com/android/mydroid/2.0/dalvik/docs/hello-world.html在android设备上,dalvik vm通常都被嵌入到android应用框架里执行,也可以直接运行vm,就像你要转载 2012-07-27 22:23:07 · 1549 阅读 · 0 评论 -
如何下载Android源码(window和Linux)
文章参照来源:http://source.android.com/source/downloading.html一、window平台关于在window平台下载Android源码,网上一般使用的是直接用git来下载。比如:http://wenku.baidu.com/view/a4f5f922482fb4daa58d4bb5.htmlhttp://hendyyou.iteye.c翻译 2011-12-17 15:36:52 · 6913 阅读 · 4 评论 -
如何得到包含隐藏API的Android类库
本人博客原文Android SDK的很多API是隐藏的,我无法直接使用。但是我们通过编译Android系统源码可以得到完整的API库。编译Android系统源码后可以在out\target\common\obj\JAVA_LIBRARIES目录中有它所有API库(java)。当然对于一般情况,out\target\common\obj\JAVA_LIBR原创 2011-12-11 10:39:30 · 2141 阅读 · 0 评论 -
Android中如何自己制作su
本文将介绍如何在Android中自己制作一个su原创 2014-05-08 10:07:32 · 18176 阅读 · 0 评论 -
Logcat源码分析(一)
本文编辑整理自:http://www.linuxidc.com/Linux/2011-07/38988.htmLogcat工具内置在Android系统中,可以在主机上通过adb logcat命令来查看模拟机上日志信息。如果你还不知道Logcat的使用,请参看《logcat命令详解》。Logcat工具的用法很丰富,因此,源代码也比较多,本文并不打算完整地介绍整个Logcat工具的源代码,主要是介翻译 2011-12-15 10:44:55 · 5796 阅读 · 2 评论 -
Logger详解(三)
四、日志记录读取过程分析继续看kernel/drivers/staging/Android/logger.c 文件,注册的读取日志设备文件的方法为logger_read: /* * logger_read - our log's read() method * * Behavior: * * - O_NONBLOCK works * - If t翻译 2011-12-15 10:43:01 · 1944 阅读 · 0 评论 -
Android系统启动过程简介(下)
二、源码分析对Android-2.1版本中的如下源码文件进行分析:(1) init.c:路径为system/core/init/init.c(2) parser.c:路径为system/core/init/ parser.c(3) builtins.c:路径为system/core/init/ builtins.c(4) property_service.c:路径为system转载 2011-12-15 11:38:49 · 1459 阅读 · 0 评论 -
Android电源管理简介(上)
文章转载自:http://blog.youkuaiyun.com/hzdysymbol/archive/2009/03/19/4004791.aspx Android Power Management 总体上来说Android的电源管理还是比较简单的, 主要就是通过锁和定时器来切换系统的状态,使系统转载 2011-12-10 09:10:54 · 2667 阅读 · 0 评论 -
PowerManager源码
http://hi-android.info/src/android/os/PowerManager.java.htmlPowerManager类为对Android电源进行管理提供了接口。它位于android/os/PowerManager.java,但是它本身实现的东西很少,主要是调用了些更底层(C/C++)的函数.关于如何通过PowerManager类来对Android电源进行管理请参原创 2011-12-10 09:15:05 · 3257 阅读 · 0 评论 -
PowerManager简介
文章参照:http://developer.android.com/reference/android/os/PowerManager.html#userActivity%28long,%20boolean%29android.os.PowerManager通过PowerManager类我们可以对设备的电源进行管理。对该类API的使用将影响到电池寿命。只有在必须使用WakeLocks的翻译 2011-12-09 10:48:27 · 11447 阅读 · 1 评论 -
PowerManager使用实例1(上)
文件1 MainActivity.java:import android.app.Activity;import android.content.Context;import android.content.res.Resources;import android.os.Bundle;import android.os.Handler;import androi原创 2011-12-09 10:50:06 · 3161 阅读 · 0 评论 -
PowerManager使用实例1(下)
文件2 layout\main.xml: android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > android:id="@+id/Button0" androi原创 2011-12-09 10:51:04 · 1132 阅读 · 0 评论 -
Android电源管理简介(下)
文章转载自:http://blog.youkuaiyun.com/hzdysymbol/archive/2009/03/19/4004791.aspxKernel层其主要代码在下列位置:drivers/android/power.c其对Kernel提供的接口函数有EXPORT_SYMBOL(android_init_suspend_lock); //初始化Suspe转载 2011-12-10 09:12:02 · 6157 阅读 · 0 评论 -
Android LOG机制流程图
以下只是Android LOG机制流程图,关于Android LOG机制的更多详细内容请参阅《Android LOG机制详解》 结束。原创 2011-12-15 10:31:23 · 1693 阅读 · 0 评论 -
在Android的c/c++代码中使用LOG
在Android中,Java代码通过android.util.Log输出Log信息,同样的本地c/c++代码也提供了相对应而且是更多的接口。Android直接在头文件(system/core/include/cutils/log.h)里定义了一些日志输出的宏,这些宏比android.util.Log提供了更多的日志输出接口。因此,使用这些宏,就可以进行和java代码中一样的日志输出。宏LOGD()原创 2011-12-15 10:34:42 · 2169 阅读 · 0 评论 -
Android中LOG机制详解(上)
本文整理编辑自:http://www.2cto.com/kf/201107/98203.html一、简介Android中LOG的实现架构如下图所示,这基本上也是Android的某个模块实现各个层次的经典架构。图1 Android应用程序通过Framework提供的Log类来进行日志的输出;而Log类其实是通过JNI函数来进行日志输出;JNI函数则是调用底层库函翻译 2011-12-15 10:39:50 · 1455 阅读 · 1 评论 -
Android中LOG机制详解(下)
2.2、类android.util.Log的JNI实现类android.util.Log有两个Native方法,它们通过JNI用c/c++中实现。public static native boolean isLoggable(String tag, int level);public static native int println_native(int bufID,int翻译 2011-12-15 10:40:31 · 2595 阅读 · 0 评论 -
Logger详解(四)
本文编辑整理自:http://www.linuxidc.com/Linux/2011-07/38987.htm五、日志记录写入过程分析继续看kernel/drivers/staging/Android/logger.c的文件注册的写入日志设备文件的方法为logger_aio_write: /* * logger_aio_write - our write method,翻译 2011-12-15 10:44:02 · 4663 阅读 · 0 评论 -
Logcat源码分析(二)
继续往下看logcat.cpp的main函数,它调用setupOutput()函数来初始化输出文件:Android::setupOutput(); setupOutput()函数定义如下:static void setupOutput() { if (g_outputFileName == NULL) { g_outFD翻译 2011-12-15 10:45:59 · 2173 阅读 · 0 评论 -
Logcat源码分析(五)
四、输出日志设备文件的内容 从前面的分析中看出,最终日志设备文件内容的输出是通过logcat.cpp文件的printNextEntry函数进行的:static void printNextEntry(log_device_t* dev) { maybePrintStart(dev); if (g_printBinary) {翻译 2011-12-15 10:48:04 · 3107 阅读 · 0 评论 -
Android系统启动过程简介(上)
本文转载整理自:http://www.linuxidc.com/Linux/2011-10/45067.htm一、 简介在Linux内核启动后,init 1(1号进程)将作为第一个用户空间,Linux虚拟内存的大小为32(在32位的x86机器上),内核将这4G字节的空间分为两部分。最高的1G字节供内核使用,称为“内核空间”。而较低的3G字节供各个进程使用,称为“用户空间”。)的进程来启转载 2011-12-15 11:38:07 · 1558 阅读 · 0 评论 -
Android中部署自己的su
本文将介绍如何把自己的su文件部署到Android中去原创 2014-05-08 10:13:43 · 5809 阅读 · 0 评论