Android
文章平均质量分 57
sauphy
这个作者很懒,什么都没留下…
展开
-
Android之UI显示的原理分析
注意,上面我们说Android系统不支持硬件加速的UI 绘制,针对的是Android应用程序2D UI绘制。对于3D UI,例如游戏,一直是支持硬件加速渲染的。此外,从前面Android应用程序与SurfaceFlinger服务的关系概述和学习计划、Android系统Surface机制的SurfaceFlinger服务简要介绍和学习计划和Android应用程序窗口(Activity)实现框架简要介转载 2016-01-12 23:40:37 · 701 阅读 · 0 评论 -
Android之Activity的框架原理分析
这一侧的Layer对象,而操作Layer对象的目的就是为了修改Activity组件的UI。 在前面Android应用程序与SurfaceFlinger服务的关系概述和学习计划和Android系统Surface机制的SurfaceFlinger服务简要介绍和学习计划这两个系列的文章中,我们已经分析在SurfaceFlinger服务这一侧的Layer类和SurfaceLayer类转载 2016-01-12 23:43:17 · 2864 阅读 · 0 评论 -
Android之View的过程分析
在前面一篇文章中,我们分析了Android应用程序窗口的绘图表面的创建过程。Android应用程序窗口的绘图表面在创建完成之后,我们就可以从上到下地绘制它里面的各个视图了,即各个UI元素了。不过在绘制这些UI元素之前,我们还需要从上到下地测量它们实际所需要的大小,以及对它们的位置进行合适的安排,即对它们进行合适的布局。在本文中,我们就将详细地分析Android应用程序窗口的测量、布局以及绘制过程。转载 2016-01-12 23:45:39 · 1484 阅读 · 0 评论 -
Java之虚拟机Dalvk原理简介
我们知道,Android应用程序是运行在Dalvik虚拟机里面的,并且每一个应用程序对应有一个单独的Dalvik虚拟机实例。除了指令集和类文件格式不同,Dalvik虚拟机与Java虚拟机共享有差不多的特性,例如,它们都是解释执行,并且支持即时编译(JIT)、垃圾收集(GC)、Java本地方法调用(JNI)和Java远程调试协议(JDWP)等。本文对Dalvik虚拟机进行简要介绍,以及制定学习计划。转载 2016-01-12 23:47:33 · 909 阅读 · 0 评论 -
Android之Dalvk与JNI注册过程介绍
在前面一文中,我们分析了Dalvik虚拟机的运行过程。从中可以知道,Dalvik虚拟机在调用一个成员函数的时候,如果发现该成员函数是一个JNI方法,那么就会直接跳到它的地址去执行。也就是说,JNI方法是直接在本地操作系统上执行的,而不是由Dalvik虚拟机解释器执行。由此也可看出,JNI方法是Android应用程序与本地操作系统直接进行通信的一个手段。在本文中,我们就详细分析JNI方法的注册过程。转载 2016-01-12 23:49:57 · 1060 阅读 · 0 评论 -
Android之Dalvik的进程/线程创建的过程
我们知道,在Android系统中,Dalvik虚拟机是运行Linux内核之上的。如果我们把Dalvik虚拟机看作是一台机器,那么它也有进程和线程的概念。事实上,我们的确是可以在Java代码中创建进程和线程,也就是Dalvik虚拟机进程和线程。那么,这些Dalvik虚拟机所创建的进程和线程与其宿主Linux内核的进程和线程有什么关系呢?本文将通过Dalvik虚拟机进程和线程的创建过程来回答这个问题。转载 2016-01-12 23:51:47 · 1242 阅读 · 0 评论 -
Android之Dalvik运行过程分析
在前面一篇文章中,我们分析了Dalvik虚拟机在Zygote进程中的启动过程。Dalvik虚拟机启动完成之后,也就是在各个子模块初始化完成以及加载了相应的Java核心类库之后,就是可以执行Java代码了。当然,Dalvik虚拟机除了可以执行Java代码之外,还可以执行Native代码,也就是C和C++代码。在本文中,我们就将继续以Zygote进程的启动过程为例,来分析Dalvik虚拟机的运行过程。转载 2016-01-12 23:53:06 · 381 阅读 · 0 评论 -
Ubuntu上为Android编写驱动程序
在智能手机时代,每个品牌的手机都有自己的个性特点。正是依靠这种与众不同的个性来吸引用户,营造品牌凝聚力和用户忠城度,典型的代表非iphone莫属了。据统计,截止2011年5月,AppStore的应用软件数量达381062个,位居第一,而Android Market的应用软件数量达294738,紧随AppStore后面,并有望在8月份越过AppStore。随着Android系统逐步扩大市场占有率,终转载 2016-01-12 23:55:12 · 617 阅读 · 0 评论 -
Android之编写C程序访问Android之驱动程序
在前一篇文章中,我们介绍了如何在Ubuntu上为Android系统编写Linux内核驱动程序。在这个名为hello的Linux内核驱动程序中,创建三个不同的文件节点来供用户空间访问,分别是传统的设备文件/dev/hello、proc系统文件/proc/hello和devfs系统属性文件/sys/class/hello/hello/val。进一步,还通过cat命令来直接访问/proc/hello和/转载 2016-01-12 23:58:25 · 764 阅读 · 0 评论 -
Android之测试Jave接口访问硬件服务
我们在Android系统增加硬件服务的目的是为了让应用层的APP能够通过Java接口来访问硬件服务。那么, APP如何通过Java接口来访问Application Frameworks层提供的硬件服务呢?在这一篇文章中,我们将在Android系统的应用层增加一个内置的应用程序,这个内置的应用程序通过ServiceManager接口获取指定的服务,然后通过这个服务来获得硬件服务。转载 2016-01-13 00:00:17 · 392 阅读 · 0 评论 -
Android之HAL层编写JNI供Java接口访问
在上两篇文章中,我们介绍了如何为Android系统的硬件编写驱动程序,包括如何在Linux内核空间实现内核驱动程序和在用户空间实现硬件抽象层接口。实现这两者的目的是为了向更上一层提供硬件访问接口,即为Android的Application Frameworks层提供硬件服务。我们知道,Android系统的应用程序是用Java语言编写的,而硬件驱动程序是用C语言来实现的,那么,Java接口如何去访问转载 2016-01-13 00:01:32 · 827 阅读 · 0 评论 -
Android之如何单独编译Android中的模块
第一次下载好Android源代码工程后,我们通常是在Android源代码工程目录下执行make命令,经过漫长的等待之后,就可以得到Android系统镜像system.img了。以后如果我们修改了Android源代码中的某个模块或者在Android源代码工程新增一个自己的模块,是不是还是执行make命令呢?答案是否定的,Google为我们准备了另外的命令来支持编译单独的模块,以及重新打包system转载 2016-01-13 00:02:41 · 288 阅读 · 0 评论 -
Android之external部分目录功能说明整理
目录说明aesAES加密apache-http网页服务器astlAndroid STLbison自动生成语法分析器blktrace跟踪机制?bluetooth蓝牙相关、协议栈bsdiffdiff工具bzip2压缩工具clearsilverhtml模板系原创 2016-02-21 19:29:30 · 7460 阅读 · 1 评论 -
Android之Intent用途理解
原创 2016-02-21 21:06:32 · 514 阅读 · 0 评论 -
Android之编译系统初始化过程
Android源代码在编译之前,要先对编译环境进行初始化,其中最主要就是指定编译的类型和目标设备的型号。Android的编译类型主要有eng、userdebug和user三种,而支持的目标设备型号则是不确定的,它们由当前的源码配置情况所决定。为了确定源码支持的所有目标设备型号,Android编译系统在初始化的过程中,需要在特定的目录中加载特定的配置文件。接下来本文就对上述的初始化过程进行详细分析。转载 2016-01-12 23:35:02 · 550 阅读 · 0 评论 -
Android之Service Manager的Binder守护进程
上一篇文章Android进程间通信(IPC)机制Binder简要介绍和学习计划简要介绍了Android系统进程间通信机制Binder的总体架构,它由Client、Server、Service Manager和驱动程序Binder四个组件构成。本文着重介绍组件Service Manager,它是整个Binder机制的守护进程,用来管理开发者创建的各种Server,并且向Client提供查询Ser转载 2016-01-12 23:33:03 · 458 阅读 · 0 评论 -
Android之Binder通信原理
在Android系统中,每一个应用程序都是由一些Activity和Service组成的,这些Activity和Service有可能运行在同一个进程中,也有可能运行在不同的进程中。那么,不在同一个进程的Activity或者Service是如何通信的呢?这就是本文中要介绍的Binder进程间通信机制了。 我们知道,Android系统是基于Linux内核的,而Linux内核继承和兼转载 2016-01-12 23:30:01 · 568 阅读 · 0 评论 -
Android之项目基本目录结构初识
项目名称1、Android 4.42、src(自定义逻辑-类列表) |-com.fhf.myqq (表示src级别下的目录结构) |3、gen |-BuildConfig.java 编译配置? |-R.java 界面?4、bin |-apk5、res |-AndroidMainfest.xml (文本视图、UI视图、特性开关) |-自定义图片资源(自己追加)6、l原创 2015-11-24 23:57:31 · 402 阅读 · 0 评论 -
Android之常用头文件列表
## 头文件列表【必须】▲Activityimport android.app.Activity;▲参数import android.os.Build;import android.os.Bundle;import android.content.Intent;import android.view.View;import android.content.Context;【原创 2015-11-25 00:06:21 · 3135 阅读 · 0 评论 -
Android之类定义的认识
●自定义Activitypublic class HomePageActivity extends Activity{ ImageButton titleBar; private List mlistInfo = new ArrayList(); private LoadingView main_imageview; //定义自己创建的View类(同级目录下直接使用即可) @Ov原创 2015-11-24 23:59:48 · 1071 阅读 · 0 评论 -
Android之常用代码片段收集
●创建独立线程执行某任务new Thread(){ @Override public void run() { main_imageview.startAnim(); }}.start();●控件显示图形this.setImageResource(imageIds[index]);postInvalidate(); //更新控件原创 2015-11-25 00:13:21 · 483 阅读 · 0 评论 -
Android之原生控件列表
●Form Widgets>>Button、CheckBox、RadioBox>>Spinner、Switch>>RatingBar、SeekBar、ProgressBar●Text FiledsPlainText、PersonNamePassword(原点)、Password(数字)Emain、PhonePostal-AddressMultiLine-TextTime、Dat原创 2015-11-25 00:17:11 · 2526 阅读 · 0 评论 -
Android之Widget认识
【Button】【XML设计】<Button android:id="@+id/button" android:layout_width="wrap_content" android:layout_height="wrap_content">【代码设计】Button button = new Button(this);button.setText("OK");butto原创 2015-11-25 00:04:48 · 370 阅读 · 0 评论 -
Android之常见数据类型
●数组列表List mlistInfo = new ArrayList();mlistInfo.clear();●数组int[] imageIds = new int[6];int[] imageIds;●Bool类型private boolean isStop = false;●对象数组String[] data;data.lengthdata[i]●位图Bit原创 2015-11-25 00:16:10 · 905 阅读 · 0 评论 -
Android之NDK搭建
首先介绍一下背景,NDK即Native Development Kit,来看官方的解释:The NDK is a toolset that allows you to implement parts of your app using native-code languages such as C and C++.简而言之就是,有了NDK就可以用C++来写代码啦!下面介绍配置手顺。转载 2015-12-14 22:35:35 · 310 阅读 · 0 评论 -
Android之MediaPlayer的框架源码分析
本文主要介绍的是Android中很重要也最为复杂的媒体播放器(MediaPlayer)部分的架构。对于Android这样一个完整又相对复杂的系 统,一个MediaPlayer功能的实现不在其具体的功能,而是具体功能如何适应Android系统Android MediaPlayer的主要具体实现在OpenCore的Player中,这部分不是本文的关注点。本文关注的是MediaPlayer系统的架构,其转载 2016-01-08 12:02:18 · 502 阅读 · 0 评论 -
Java之JNI原理介绍
JNI其实是Java Native Interface的简称,也就是java本地接口。它提供了若干的API实现了和Java和其他语言的通信(主要是C&C++)。也许不少人觉得Java已经足够强大,为什么要需要JNI这种东西呢?我们知道Java是一种平台无关性的语言,平台对于上层的java代码来说是透明的,所以在多数时间我们是不需要JNI的,但是假如你遇到了如下的三种情况之一呢? 你转载 2016-01-12 23:20:07 · 482 阅读 · 0 评论 -
Java之创建JNI的案例
环境说明:ubuntu 10.4.2 LTS系统程序清单1:src/com/magc/jni/HelloWorld.java 1 /** 2 * 3 */ 4 package com.magc.jni; 5 6 /** 7 * @author magc 8 * 9 */10 public class HelloWorld {11转载 2016-01-12 23:20:56 · 309 阅读 · 0 评论 -
Java之JNI技术总结
昨天和一部zzz一起研究解决一个java调用第三方dll的问题,从零开始学习了jni技术的应用,现在总结如下。 事情的起因是一部的一个项目需要用到一个爱国者提供的基于U盘的加密技术。对方提供了U盘和一个dll动态链接库hiddenIO.dll。在U盘的隐藏区域内可以储存USB-Key信息,通过这个dll里的两个方法可以使用c/c++编写程序在U盘的隐藏区域读写信息,对方提供了示例代转载 2016-01-12 23:22:00 · 354 阅读 · 0 评论 -
Java之JNI应用场景
JNI一直以来都很少去关注,但却是我心中的一个结,最近这几天刚好手头有点时间,因此抽空看了一下这方面的东西,整理了一份文档,JNI技术的出现主要是基于三个方面的应用需求: 1. 解决性能问题Java具有平台无关性,这使人们在开发企业级应用的时候总是把它作为主要候选方案之一,但是性能方面的因素又大大削弱了它的竞争力。为此,提高Java的性能就显得十分重要。Sun公司及Java的支转载 2016-01-12 23:24:34 · 1724 阅读 · 0 评论 -
Java之JNI编程注意事项
整理项目文档时, 忽然发现当年的一篇以前公司里关于JNI编程 的标准化文档。做为收藏,就贴在这里吧。注:关于JNI, 现在好像有一个OpenSource项目jace可以帮助进行JNI的开发。另外, 推荐IBM Developerworks网站上的一个教程《用jni进行java编程》JNI编程注意事项:1、 JNI的函数声明:JNI函数声明方法为JAVA_Pac转载 2016-01-12 23:26:27 · 308 阅读 · 0 评论 -
Java之详细介绍jNI
JNI其实是Java Native Interface的简称,也就是java本地接口。它提供了若干的API实现了和Java和其他语言的通信(主要是C&C++)。也许不少人觉得Java已经足够强大,为什么要需要JNI这种东西呢?我们知道Java是一种平台无关性的语言,平台对于上层的java代码来说是透明的,所以在多数时间我们是不需要JNI的,但是假如你遇到了如下的三种情况之一呢? 你转载 2016-01-12 23:28:27 · 435 阅读 · 0 评论 -
Android之GlSurfaceView调度Skia
在java 层,使用glsurfaceview,创建opengl 环境,在 public void onSurfaceCreated(GL10 gl, EGLConfig config)函数中,创建GrContext和CurRenderTarget,如下void SkiaApp::windowChanged(int width,int height){LOGD("%s:(%d,转载 2016-02-26 14:18:23 · 844 阅读 · 0 评论