android
文章平均质量分 81
citycity222
这个作者很懒,什么都没留下…
展开
-
Andriod编译内核模块*.ko
在单独编译Android的内核模块之前,必须要成功配置编译过整个Android系统(至少要编译成功boot.img),生成正确的out目录。1.编写Makefile。按照以下格式编写Makefile。 1 obj-m += aaa.o 2 #obj-m += abc.o 3 #abc-objs := aaa.o bbb.o ccc.o 4 5 K转载 2012-10-17 22:36:46 · 497 阅读 · 0 评论 -
StageFright框架流程解读
1、 StageFright介绍 Android froyo版本多媒体引擎做了变动,新添加了stagefright框架,并且默认情况android选择stagefright,并没有完全抛弃opencore,主要是做了一个OMX层,仅仅是对 opencore的omx-component部分做了引用。stagefright是在MediaPlayerService这一层加入的,和open转载 2011-12-14 16:45:24 · 448 阅读 · 0 评论 -
android jni 输出log
我们设置 Jni 调用c的接口,没有办法进行调试,我们可以设置输出log信息来查看,目前有2种方法:1. Android 自带的Log类.在.c的头文件中加入如下代码#include #define LOG_TAG "cqEmbed"#define LOGI(...) __android_log_print(ANDROID_LOG_INFO,LOG_TAG,__VA_AR转载 2011-12-15 09:29:05 · 751 阅读 · 0 评论 -
Android Mediaplayer解读
1、 Gallery应用端表现 Gallery仅仅提供一个呈现框架,Gallery用来管理所有的视频和图片文件,具有播放、查看、删除等功能。自动搜索本地sdcard存有的picture和video,并分类将同性质文件picture和video集中在一起,播放时呈现。Gallery内部实现的播放主用是同MediaPlayer,主要包含了Audio和video的播放功能。转载 2011-12-14 16:38:26 · 534 阅读 · 0 评论 -
android进程间通信:使用AIDL
欢迎阅读本文,你能关注本文,你知道你需要进程间通信、需要AIDL(以及Binder),那么可以默认你对这些概念已经有了一些了解,你(大致)知道它们是什么,它们有什么用,所以为了节约大家的眼力和时间,在此我不复制粘贴网上泛滥的博客或者翻译冗长的android文档。 关于AIDL的介绍在文档:docs/guide/developing/tools/aidl.html 关于I转载 2011-10-22 23:51:16 · 423 阅读 · 0 评论 -
JNI Examples for Android
原文地址:http://android.wooyd.org/JNIExample/#NWD1sCYeT-CImportant noticeThe instructions in these document are applicable to older Androidfirmwares. Starting with firmware version 1.5 the Android转载 2011-12-21 18:33:42 · 895 阅读 · 0 评论 -
15个Android很有用的代码片段
1:查看是否有存储卡插入String status=Environment.getExternalStorageState();if(status.equals(Enviroment.MEDIA_MOUNTED)){ 说明有SD卡插入}2:让某个Activity透明OnCreate 中不设Layoutthis.setTheme(R.style.Theme_Tra转载 2011-12-17 16:14:37 · 655 阅读 · 0 评论 -
android 智能指针
Android手机操作系统既然是开源的操作系统。那么在具体的文件夹中就会存放着各种相关功能的开源代码。我们在使用的时候可以根据这些源代码进行相应的修改就能轻松的完成我们所需的功能。在这里大家就一起来看看Android智能指针的相关源码解读以及应用方法。在Android的源代码中,经常会看到形如:sp、wp这样的类型定义,这其实是Android中的智能指针。智能指针是C++中的一个概念,通过基于转载 2011-12-20 17:43:23 · 394 阅读 · 0 评论 -
Android JNI简单实例(android 调用C/C++代码)
Android的jni实例 android 的应用程序(Dalvik VM)中使用JNI(Java Native Interface)调用C/C++开发的共享库。 c/c++中调用java程序的方法以后再发。 开发环境 (eclipse + android ADT) WindowsXP SP3 JDK 1.6.0.12 VMWARE+Ub转载 2011-12-12 15:06:53 · 393 阅读 · 0 评论 -
Android 深入研究JNI
Java Native Interface (JNI)标准是java平台的一部分,它允许Java代码和其他语言写的代码进行交互。JNI 是本地编程接口,它使得在 Java 虚拟机 (VM) 内部运行的 Java 代码能够与用其它编程语言(如 C、C++ 和汇编语言)编写的应用程序和库进行交互操作。 1.从如何载入.so档案谈起 由于Android的应用层的类都是以Java写的,转载 2011-12-12 17:08:53 · 484 阅读 · 0 评论 -
Mms源码结构
从软件的功能角度来讲,Mms分为对话列表,消息列表,短信编辑,彩信编辑,短信显示,彩信显示和配置。从实现的角度来看,它分为GUI展示层,发送/接收,彩信解析,彩信附件,信息数据等,这些分类对应着源码中的各种包。源码导航Mms的源码的位置在于android/packages/apps/Mms其中Mms/src/com/android/mms里面都是Mms相关的代码,而Mms/src/转载 2011-12-20 16:02:39 · 1467 阅读 · 0 评论 -
Android NDK开发指南---Android.mk文件
这篇文档是用来描述你的C或C++源文件中Android.mk编译文件的语法的,为了理解她们我们需要您先看完docs/OVERVIEW.html(http://hualang.iteye.com/blog/1135105)文件来了解它的作用概览:------------Android.mk文件是用来描述build system(编译系统)的,更准确的说:--该文件是一个微转载 2011-12-12 15:19:50 · 366 阅读 · 0 评论 -
Android系统的Binder机制之三——服务代理对象(2)
上文《Android系统的Binder机制之二——服务代理对象(1)》我们学习了进程的C/C++层面的服务代理对象BpBinder,和Binder底层处理方式。本文我们将深入分析一下在进程的Java层面服务代理对象的创建和使用。Android进程的C/C++层面和Java层 Android中程序大部分都是java开发,底层通过JNI调用C/C++的代码。这样一个程序就分为了两个层面C转载 2011-12-17 17:32:14 · 414 阅读 · 0 评论 -
Android系统的Binder机制之二——服务代理对象(1)
上文《Android系统的Binder机制之一——Service Manager》我们学习了Service Manager在Android Binder中的作用——服务(Service)注册,服务(Service)查询的功能。本文我们一起学习服务(Service)在客户端中的代理机制。重点介绍其核心对象BpBinder。1、服务代理的原理 如下是客户端请求service服务的场景转载 2011-12-17 17:18:37 · 458 阅读 · 0 评论 -
Android系统的Binder机制之一——Service Manager
Android虽然构建在Linux上面,但是在IPC(进程间)机制方面,没有利用Linux提供IPC机制,而是自己实现了一套轻量级的IPC机制——binder机制。并且Android Binder机制之上,Android框架提供了一套封装,可以实现对象代理(在本地进程中代理远程进程的对象)。本文简单分析一下Android Binder机制。Binder情景分析 一个IPC通讯我们可以转载 2011-12-17 16:56:51 · 426 阅读 · 0 评论 -
Android Binder设计(五)
每个进程都有一棵红黑树用于存放创建好的节点,以Binder在用户空间的指针作为索引。每当在传输数据中侦测到一个代表Binder实体的 flat_binder_object,先以该结构的binder指针为索引搜索红黑树;如果没找到就创建一个新节点添加到树中。由于对于同一个进程来说 内存地址是唯一的,所以不会重复建设造成混乱。 5.3.2 Binder 引用在驱动中的表述转载 2011-12-17 17:12:15 · 444 阅读 · 0 评论 -
Android开发——MediaPlayer源码不完整分析
seekTo在MediaPlayer的调用流程如下图:在MediaPlayer.java中的seekTo是一个native修饰的方法 1: /** 2: * Seeks to specified time position. 3: * 4: * @param msec the offset in milliseconds from转载 2011-12-14 18:33:12 · 967 阅读 · 0 评论 -
android源码分析流程-init.c
工具:Source Insight 最好也打开源码,一步一步的跟,并仔细看后面的注释。一、linux内核起来后,android的第一个用户进程:init 1.那么来看看init.c中的main函数,它做了什么? Init.c system\core\Init打开source Insigt 可以看到: ... open_devnull转载 2012-01-04 19:27:02 · 1361 阅读 · 0 评论 -
Android消息处理机制
一、 角色描述1.Looper: 一个线程可以产生一个Looper对象,由它来管理此线程里的Message Queue(消息队列)。2.Handler: 你可以构造Handler对象来与Looper沟通,以便push新消息到Message Queue里;或者接收Looper(从Message Queue取出)所送来的消息。3. Message Queue(消息队列):用来存放线程转载 2011-09-09 16:49:01 · 458 阅读 · 0 评论 -
通过文件名获取uri
private Uri parsePath(String path) { String fullPath = "silent"; if (!"".equals(path) && !"silent".equalsIgnoreCase(path)) { fullPath = Environment.getCustpackDirectory()原创 2012-06-29 16:37:50 · 813 阅读 · 0 评论 -
Android中内容观察者的使用---- ContentObserver类详解
前言: 工作中,需要开启一个线程大量的查询某个数据库值发送了变化,导致的开销很大,后来在老大的指点下,利用了ContentObserver完美的解决了该问题,感到很兴奋,做完之后自己也对ContentObserver做下总结。ContentObserver——内容观察者,目的是观察(捕捉)特定Uri引起的数据库的变化,继而做一些相应的处理,它类似于 数据库技术中的触发器(Trigger转载 2012-03-06 15:00:00 · 600 阅读 · 0 评论 -
判断当前进程是否是Gallery3D
static bool isGalleryProcess(){ char cmdline[128]; sprintf(cmdline, "/proc/%d/cmdline", getpid()); char processName[1000]; memset(processName, 0, sizeof(processName)); int fd = op原创 2012-02-29 10:04:31 · 471 阅读 · 0 评论 -
为 Android 添加 Java 层服务(三)
每一个应用程序都有自己的进程,进程之间不能互相访问,这叫做应用程序沙漏(application sandboxing)为了能用使应用程序能互相访问,Android提供IPC(interprocess communication protocol)IPC protocol因为需要整理封装(marshaling/un marshaling数据)而变得复杂。因此.Android提供 AIDL原创 2012-02-17 09:53:08 · 501 阅读 · 0 评论 -
为 Android添加底层核心服务(一)
1. 为什么要写底层核心服务呢? 因为底层核心服务是 Android框架里最接近 Linux/Driver的部分。为了充分发挥硬件设备的差异化特性,核心服务是让上层 Java应用程序来使用 Driver/HW Device 特色的重要管道。例如 Media、 Telephone等底层硬件。 在开机过程中,就可以启动核心服务(汉字输入法服务等),让众多应转载 2012-01-11 14:51:04 · 711 阅读 · 1 评论 -
[Binder.4] Android系统进程间通信(IPC)机制Binder中的Client获得Server远程接口过程源代码分析
在上一篇文章中,我们分析了Android系统进程间通信机制Binder中的Server在启动过程使用Service Manager的addService接口把自己添加到Service Manager守护过程中接受管理。在这一篇文章中,我们将深入到Binder驱动程序源代码去分析Client是如何通过Service Manager的getService接口中来获得Server远程接口的。Client转载 2012-01-31 15:26:04 · 615 阅读 · 0 评论 -
[Binder.5] Android系统进程间通信Binder机制在应用程序框架层的Java接口源代码分析
在前面几篇文章中,我们详细介绍了Android系统进程间通信机制Binder的原理,并且深入分析了系统提供的Binder运行库和驱动程序的源代码。细心的读者会发现,这几篇文章分析的Binder接口都是基于C/C++语言来实现的,但是我们在编写应用程序都是基于Java语言的,那么,我们如何使用Java语言来使用系统的Binder机制来进行进程间通信呢?这就是本文要介绍的Android系统应用程序框架转载 2012-01-31 15:26:39 · 674 阅读 · 0 评论 -
[Binder.1] 浅谈Service Manager成为Android进程间通信(IPC)机制Binder守护进程之路
上一篇文章Android进程间通信(IPC)机制Binder简要介绍和学习计划简要介绍了Android系统进程间通信机制Binder的总体架构,它由Client、Server、Service Manager和驱动程序Binder四个组件构成。本文着重介绍组件Service Manager,它是整个Binder机制的守护进程,用来管理开发者创建的各种Server,并且向Client提供查询Ser转载 2012-01-31 15:23:28 · 576 阅读 · 0 评论 -
[Binder.3] Android系统进程间通信(IPC)机制Binder中的Server启动过程源代码分析
在前面一篇文章浅谈Android系统进程间通信(IPC)机制Binder中的Server和Client获得Service Manager接口之路中,介绍了在Android系统中Binder进程间通信机制中的Server角色是如何获得Service Manager远程接口的,即defaultServiceManager函数的实现。Server获得了Service Manager远程接口之后,就要转载 2012-01-31 15:25:11 · 529 阅读 · 0 评论 -
[Binder.2] 浅谈Android系统进程间通信(IPC)机制Binder中的Server和Client获得Service Manager接口之路
在前面一篇文章浅谈Service Manager成为Android进程间通信(IPC)机制Binder守护进程之路中,介绍了Service Manager是如何成为Binder机制的守护进程的。既然作为守护进程,Service Manager的职责当然就是为Server和Client服务了。那么,Server和Client如何获得Service Manager接口,进而享受它提供的服务呢?本文转载 2012-01-31 15:24:10 · 503 阅读 · 0 评论 -
Ubuntu Android 2.3的编译环境 Ubuntu 11.04 x64的版本
Ubuntu 10.10 x64的版本第一步:安装Java SDK 1.6 后续的版本估计都是要用JDK 1.6了吧这里给个地址,大家自助下载:http://www.oracle.com/technetwork/java/javase/downloads/index.html然后修改~/.profile 添加下边这两行:export PATH=$PATH:/opt/jdk转载 2011-12-29 23:02:47 · 1346 阅读 · 0 评论 -
[Binder.0] Android进程间通信(IPC)机制Binder简要介绍和学习计划
在Android系统中,每一个应用程序都是由一些Activity和Service组成的,一般Service运行在独立的进程中,而Activity有可能运行在同一个进程中,也有可能运行在不同的进程中。那么,不在同一个进程的Activity或者Service是如何通信的呢?这就是本文中要介绍的Binder进程间通信机制了。 我们知道,Android系统是基于Linux内核的,而Lin转载 2012-01-31 15:20:01 · 462 阅读 · 0 评论 -
学习init所用到的C语言知识
C语言库函数名: atoi 功 能: 把字符串转换成整型数. 名字来源:array to integer 的缩写. 原型: int atoi(const char *nptr); 函数说明: 参数nptr字符串,如果第一个非空格字符不存在或者不是数字也不是正负号则返回零,否则开始做类型转换,之后检测到非数字(包括结束符 \0) 字符时停止转换,返回整型数。 头文件:原创 2012-01-04 17:17:02 · 1280 阅读 · 0 评论 -
Android xml资源文件中@、@android:type、@*、?、@+含义和区别
一.@代表引用资源1.引用自定义资源。格式:@[package:]type/nameandroid:text="@string/hello" 2.引用系统资源。格式:@android:type/name android:textColor="@android:color/opaque_red" 注意:其实@android:type/name是转载 2012-01-16 13:36:40 · 428 阅读 · 0 评论 -
为 Android 添加 Java 层服务(二)
同前一篇文章类似,此文旨在简单介绍一下如何在 java层添加自己的服务,相关的理论网上已经有很多文章,在此不在详述。Java层服务顾名思义即为从 Java层提供的服务,它与 C++层的服务不同之处在于其服务进程的运行由系统( ServiceManager)统一维护。在文件 frameworks /base /services /java /com /android /server /Sys转载 2012-01-11 14:51:37 · 475 阅读 · 0 评论 -
Android Binder设计(四)
下表总结了当flat_binder_object结构穿过驱动时驱动所做的操作: 驱动对flat_binder_object的操作 Binder 类型( type 域) 在发送方的操作 在接收方的操作 BINDER_TYPE_BINDER BINDER_TYPE_WEAK_BINDER 只有实体所在的进程能发送该类型的Bi转载 2011-12-17 17:11:41 · 443 阅读 · 0 评论 -
Android Binder设计(三)
5.Binder 的表述 考察一次Binder通信的全过程会发现,Binder存在于系统以下几个部分中: 应用程序进程:又分为Server进程和Client进程 Binder驱动:Server和Client有不同表述形式 传输数据:由于Binder可以跨进程传递,需要在传输数据中予以表述 在系统不同部分,Binde转载 2011-12-17 17:11:02 · 434 阅读 · 0 评论 -
Android消息机制
一、 角色描述1.Looper: 一个线程可以产生一个Looper对象,由它来管理此线程里的Message Queue(消息队列)。2.Handler: 你可以构造Handler对象来与Looper沟通,以便push新消息到Message Queue里;或者接收Lo转载 2011-08-24 09:38:51 · 377 阅读 · 0 评论 -
Android 屏幕保护
首先,需要启动一个后台服务,用于注册一个BroadcastReceiver 这个BroadcastReceiver用于监听Intent.ACTION_SCREEN_OFF这样在发生这个事件Intent.ACTION_SCREEN_OFF 也就是用户锁屏或者屏幕上锁转载 2011-08-24 09:41:44 · 900 阅读 · 0 评论 -
apk逆向工程
“工欲善其事,必先利其器”,做逆向工程在一定程度上如同小偷,电脑的黑客,都是精细的活,往往离不开趁手的家伙。所以,首先列出所需的工具,概括起来,就是三大件:1、dex2jar:将apk中的class.dex文件反编译为jar包2、jd_gui:将jar反编译为.java文转载 2011-09-15 20:56:42 · 957 阅读 · 1 评论 -
常用的ACTION
❑ ACTION_ANSWER打开一个Activity来处理来电。目前,它是被本地的电话拨号工具处理。❑ ACTION_CALL启动电话拨号工具,并立即用数据URI中的号码初始化一个呼叫。一般来说,如果可能的话,它认为是比使用Dial_Action好的一种方式转载 2011-09-09 17:33:34 · 444 阅读 · 0 评论