自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

农场老马的专栏

老码农一枚!

  • 博客(203)
  • 资源 (10)
  • 收藏
  • 关注

原创 Android中的本地存储路径

Context.getCacheDir()/data/data/cacheThese files will be ones that get deleted first when the device runs low on storage. There is no guarantee when these files will be deleted.但是,最好不要依赖系统来管理,应该

2012-10-19 10:31:08 18587

原创 Android系统设计中的设计模式分析之四

UML中,不同的对象之间的关系有Generation,Implementation,Dependence,Association,Aggregation,Composition这六种关系。其中,Generation,Implementation,Dependence这个比较容易理解,代表了程序中的类继承、接口实现、参数传递。但其它几个就比较不好理解了。下面是找到的两篇说得比较清楚明白的

2012-10-17 17:01:28 2604

原创 Android系统设计中的设计模式分析之三

Visitor先贴一个有代码例子,且好理解的文章:http://www.cnblogs.com/shanghaif/archive/2008/12/08/1350417.html再转发一个我认为最形象的解释。如果有一棵继承树,你要使用某个独立的对象遍历这棵树,并且呼叫树上某一个共同的方法,那么你使用iterator。比如这是一棵苹果树,你使用一个摘苹果的杆子把苹果一个一个摘下来,这

2012-10-17 16:37:00 1743

翻译 JNI官方规范中文版——JNI程序设计总结

本章是JNI设计思想的一个概述,在讲的过程中,如果有必要的话,还会对底层实现技术的原理做说明。本章也可以看作是JNIEnv指针、局部和全局引用、字段和方法ID等这些JNI主要技术的规范。有些地方我们可能还会提到一些技术是怎么样去实现的,但我们不会专注于具体的实现方式,主要还是讨论一些实现策略。11.1 设计目标JNI最重要的设计目标就是在不同操作系统上的JVM之间提供二进制兼容,做到一个本

2012-10-14 09:50:41 6358 3

翻译 JNI官方规范中文版——使用JNI时容易出错的地方

本章总结了JNI实际应用中容易出错的一些情况供JNI程序员参考。10.1 错误检查编写本地方法时最常见的错误就是忘记检查是否发生了异常。我承认,JNI里面的异常检查确实比较麻烦,但是,这很重要。10.2 向JNI函数传递非法参数JNI不会检查参数是否正确,如果你自己不保证参数的正确有效,那么出现什么样的错误是未知的。通常,不检查参数的有效性在C/C++库中是比较常见的。10.3

2012-10-14 09:45:38 6284

翻译 JNI官方规范中文版——如何在JNI中使用己有的C/C++库

JNI的一个使用方式就是编写一些本地方法来使用己有的本地库。本章介绍了一种生成一个包含一系列本地函数的类库的经典的方式。本章首先用一对一映射这种(one-to-one mapping)最直接的方式来写封装类.接下来,我们会介绍一种叫做共享stubs(shared stubs)的技术来简化编写封装类的任务。然后,在本章的最后,我们会讨论怎么样使用peer classes来封装本地数据结构。本

2012-10-14 09:43:56 12091 3

翻译 JNI官方规范中文版——在程序中集成JVM需要注意的JNI特征

我们已经讨论了JNI在写本地代码和向本地应用程序中集成JVM时的特征。本章接下来的部分分介绍其它的JNI特征。8.1 JNI和线程JVM可以做到在相同的地址空间内执行多个线程。由于多个线程可能会在同时共享资源,所以,增加了程序的复杂性。要完全理解本章的东西,你需要对多线程编程比较熟悉,知道怎么样在JAVA中用多线程访问共享资源。8.1.1 约束限制如果你的本地代码要运行在多个线

2012-10-14 09:37:19 9320

翻译 JNI官方规范中文版——如何把一个JVM嵌入到本地程序中

本章讲述如何把一个JVM嵌入到你的本地程序当中去。一个JVM可以看作就是一个本地库。本地程序可以链接这个库,然后通过“调用接口”(invocation interface)来加载JVM。实际上,JDK中标准的启动器也就是一段简单的链接了JVM的C代码。启动器解析命令、加载JVM、并通过“调用接口”(invocation interface)运行JAVA程序。7.1 创建JVM我们用下面这段

2012-10-14 09:35:10 9255 5

翻译 JNI官方规范中文版——如何在JNI中抛出Java异常

很多情况下,本地代码做JNI调用后都要检查是否有错误发生,本章讲的就是怎么样检查错误和处理错误。我重点放在JNI函数调用引发的错误上面。如果一个本地方法中调用了一个JNI函数,它必须遵守下面几个步骤来检查和处理这个JNI函数调用时可能引发的错误。至于其它可能的错误,比如本地代码中调用了一个可能引发错误的系统方法,那只需要按照该系统方法的标准文档中规定的来处理就可以了。6.1 概述我们通

2012-10-14 09:32:10 21301

翻译 JNI官方规范中文版——如何使用JNI中的global reference和local reference

JNI提供了一些实例和数组类型(jobject、jclass、jstring、jarray等)作为不透明的引用供本地代码使用。本地代码永远不会直接操作引用指向的VM内部的数据内容。要进行这些操作,必须通过使用JNI操作一个不引用来间接操作数据内容。因为只操作引用,你不必担心特定JVM中对象的存储方式等信息。这样的话,你有必要了解一下JNI中的几种不同的引用:1、 JNI支持三种引用:局部引用、

2012-10-14 09:29:01 24937 4

翻译 JNI官方规范中文版——如何访问Java中的字段和方法

现在,你知道了如何通过JNI来访问JVM中的基本类型数据和字符串、数组这样的引用类型数据,下一步就是学习怎么样和JVM中任意对象的字段和方法进行交互。比如从本地代码中调用JAVA中的方法,也就是通常说的来自本地方法中的callbacks(回调)。我们从进行字段访问和方法回调时需要的JNI函数开始讲解。本章的稍后部分我们会讨论怎么样通过一些cache(缓存)技术来优化这些操作。在最后,我们还会讨

2012-10-14 09:26:41 17731 6

翻译 JNI官方规范中文版——基本类型、字符串、数组

开发者使用JNI时最常问到的是JAVA和C/C++之间如何传递数据,以及数据类型之间如何互相映射。本章我们从整数等基本类型和数组、字符串等普通的对象类型开始讲述。至于如何传递任意对象,我们将在下一章中进行讲述。3.1 一个简单的本地方法JAVA端源代码如下:class Prompt {     // native method that prints a prompt an

2012-10-14 09:23:13 25608 3

翻译 JNI官方规范中文版——从一个简单的例子开始

本章通过一个简单的例子来示例如何使用JNI。我们写一个JAVA程序,并用它调用一个C函数来打印“Hello World!”。2.1 概述图2.1演示了如何使用JAVA程序调用C函数来打印“Hello World!”。这个过程包含下面几步:1、 创建一个类(HelloWorld.java)声明本地方法。2、 使用javac编译源文件HollowWorld.java,产生Hel

2012-10-14 09:20:48 5524

翻译 JNI官方规范中文版——简介

JNI是JAVA平台的一个重要特征,使用它我们可以重用以前用C/C++写的大量代码。本书既是一个编程指南也是一个JNI手册。本书共包括三部分:1、 第二章通过一个简单的例子介绍了JNI。它的对象是对JNI不熟悉的初学者。2、 3~10章对JNI的特征进行了系统的介绍。我们会举大量的例子来说明JNI的各个特征,这些特征都是JNI中重要且常用的。3、 11~13章是关于JNI的技术规范。可

2012-10-14 09:17:31 11895

翻译 JNI官方规范中文版——序

这四种情况下你会用到本书:1、 在Java程序中复用以前写过的C/C++代码。2、 自己实现一个java虚拟机3、 学习不同语言如何进行协作,尤其是如何实现垃圾回收和多线程。4、 把一个虚拟机实现整合到用C/C++写的程序中。本书是写给开发者的。JNI在1997年第一次发布,本书总结了SUN工程师和大量开发者两年来积累的经验。本书介绍了JNI的设计思想,对这种思想的理解是使

2012-10-14 09:11:59 3146

原创 Android系统设计中的设计模式分析之二

Factory:标准设计模式中存在两种工厂模式,可以参见下面这两个地址,里面有详细的介绍。Factoryhttp://blog.csdn.net/cjjky/article/details/7314118Abstract Factoryhttp://blog.csdn.net/cjjky/article/details/7346893其要点都在于Client只关心抽象工厂和

2012-10-10 19:18:11 2539

原创 Bitmap recycle方法与制作Bitmap的内存缓存

recycle方法不是必须调用,就算调了GC也不会立即回收Java层的Bitmap对象。这个跟把一个对象手动置空一个道理。可以看一下API说明:This operation cannot be reversed, so it should only be called if you are sure there are no further uses for the bitmap. This

2012-09-10 13:32:23 9351 3

原创 Android系统设计中的设计模式分析之一

1、 开闭(OCP)简介:要扩展,不要修改。比如我对外提供了一个接口。现在想更新的话,不要直接修改这个接口,而是提供另外一个接口,然后通知大家在什么时间之前切换到这个新接口。举例:这个设计模式无处不在,Android每次升级都会提供一些新的API,有一些较老的API就会置为deprecated。如从level  1就支持的Service.onStart,在level 5中,已经被Servi

2012-08-24 16:41:10 4896 1

原创 乐Pad问题汇总

Bitmap.getConfig这个会导致进程崩溃GLSurfaceView.surfaceDestroyed中如果使用queueEvent的话,最好在queueEvent之后休眠一下,因为queueEvent里面插入的Runnable可能不会被执行。

2012-05-18 16:27:33 1366

原创 Android layer type与WebView白屏以及WebView不随动画而动的问题

先说说这三个layer。LAYER_TYPE_SOFTWARE无论硬件加速是否打开,都会有一张Bitmap(software layer),并在上面对WebView进行软渲染。好处:在进行动画,使用software可以只画一次View树,很省。什么时候不要用:View树经常更新时不要用。尤其是在硬件加速打开时,每次更新消耗的时间更多。因为渲染完这张Bitmap后还需

2012-04-19 18:49:53 33764 10

原创 Android上使用NDK做3D特效时碰到的一些问题及解决办法

自己老老实实按3D的做法来做时,3.x和4.x平台上都好着,出来的效果和想像的一样。2.3上面,会有图层覆盖问题,把GLSurfaceView的背景设置透明后,也好了。2.2上面,直接白屏。试了一下,主要是贴图的图片宽高需要是2的N次方。有些引擎内部会去处理这个问题。比如你传入了一张48*59的图,引擎会帮你把它做成64*64的图,然后只渲染48*59的那一部分。补充于20

2012-04-05 19:03:00 1859

原创 Android EditText设置光标位置问题

EditText中有一些预置文本的时候,想把光标调到最前面,一开始是使用的setSelection(0),结果发现在三星P1000上面有问题。经过研究发现需要先调用EditText.requestFocus,再调用setSelection(0)。否则的话,在2.x的机器上有问题,但3.x上面是好着的。

2011-12-07 12:49:24 13815 1

原创 Android如何最优化的读取一张Bitmap

Drawable缓存问题,显示清晰度,Resource.getDrawable会根据ID返回Drawable,然后把这个Drawable缓存起来,看以下这个代码段:InputStream is = mAssets.openNonAsset( value.assetCookie, file, AssetManager.ACC

2011-11-22 10:23:41 8751 1

原创 三星P1000中出现的怪现象

布局中存在一个ImageSwitcher和一个ImageButton,按下ImageButton后释放Bitmap数组中的数据(其中有一张正被ImageSwitcher使用),再调用finish()结束Activity,如下:private void finishUserGuid() { for (int i = 0; i < bitmapBuffer.length; i++) {

2011-11-18 20:13:19 1689

原创 Android上面开发自己的Toast系统的思路

发现系统的Toast的cancel机制有问题,一旦把前一个cancel掉再显示新的Toast时,新的Toast会卡住一段时间显示不出来。建立一个自己的Toast系统需要注意的几个地方:1、建立Service专门负责显示、隐藏等2、在Service中使用WindowManager的addView和removeView实现显示、隐藏3、注意需要设置的flag、format和ty

2011-11-15 19:19:41 3237 2

原创 Android Widget开发的相关技术点记录

1、Widget的UI需要展示的数据以静态变量的形式存放在了Provider中。与同事讨论过其它两种方案的可行性:A、开启Service用来取数据,数据以静态变量形式存放在Service当中。B、存储在本地。这三种方案的好坏,其实全在于一个东西就是静态变量的生命周期。按Linux内存管理方式来说,只要内存不满,是不会释放内存中的进程的。也主是说,客户端启动一次之后,只要不是

2011-10-24 21:24:35 1820

原创 Android上面做Flash播放器

有这样一个需求,做一个flash视频播放器。Android2.2之后才支持安装Flash插件并在WebView播放Flash视频,初步想法是给Activity设置一个全屏的WebView,然后传入一个Flash地址。后来发现了一些问题,慢慢才理清。一、 直接调用webView.loadUrl并传入Flash地址,在我的定制机器上面,有时会出现白屏(无声音无图像)。二、 把Flash地址

2011-10-24 13:56:59 150896 32

原创 Android 3.X中WebView使用ZOOM崩溃的问题

09-29 21:44:08.557: ERROR/ActivityThread(31036): Activity XXX has leaked IntentReceiver android.widget.ZoomButtonsController$1@419abcf0 that was originally registered here. Are you missing a call to

2011-09-30 21:35:12 13795 2

原创 Android中使用TextView图文混排实现动态表情

使用ImageSpan图文混排,这个网上教程很多。把一个Drawable依附到CharSequence上面就可以了。要实现网上的动态表情的话,就要麻烦一点儿。首先用gif解析工具把一张gif解析成N张Bitmap和N个播放每张Bitmap时的delay值。接下来自己实现一个Drawable,里面根据时间点去更换Bitmap,就可以实现动态表情功能了。发现有的gif解析算法有问题,解析出来的Bi

2011-09-30 17:58:42 10544 2

原创 Android的WebView退出后flash视频播放器无法退出的问题

public void onPause() {//继承自Activity super.onPause(); web.onPause(); }public void onResume() {//继承自Activity super.onResume(); web.onResume(); }把这两个加上就可以了。另外,看到网上有提到有下面这种方式:

2011-09-19 02:00:59 11268 6

翻译 Android中,Dalvik检查和优化.apk/.jar的流程introduce

dalvik的目标平台是Android这样的小RAM,低速度flash memory,运行标准Linux系统的设备。针对这样的平台特性,要想做到更好,我们需要考虑以下几点:1、为了减少系统的内存使用,字节码可以多进程共享。但出于安全性考虑,这样的字节码不可以编辑。2、为了

2011-08-09 12:58:32 5777

原创 LayerBuffer与视频的SoftwareRender流程

SoftwareRender的mISurface对应着一个LayerBuffer。pmem分配,失败的话,由ashmem分配:mMemoryHeap = new MemoryHeapBase("/dev/pmem_adsp", 2 * mFrameSize);i

2011-08-03 19:06:18 4209

原创 安装、验证、优化APK

/frameworks/base/cmds/installd和/frameworks/base/services/java/com/android/server/PackageManagerService.java负责新程序的安装,检查,优化等,父进程等优化完毕后。关

2011-07-29 18:25:20 5711

原创 改进了一个很有意思的开源项目3D罗盘(marine compass)

网上有一个3D的罗盘(英文名叫marine compass),利用orientation sensor做出来的,项目的源码在这里http://open-app.org/2011/02/marine-compass-3d-compass-for-android/我因为在开发的时候需

2011-07-15 13:12:40 4752 1

原创 Android中的用户词库——UserDictionry

关于android.process.acore经常看到android.process.acore会报异常,我启动android2.3.3的模拟器看了一下logcat,android.process.acore进程包含了这么几个ContentProvider:com.android

2011-07-13 19:46:50 8765

原创 如何framework层任意设置Android屏幕的旋转方向

设备平放,屏幕朝正上方。以下四个常量分别代表:private static final int ROTATION_0 = 0;//初始情况。这个时候设备是横屏还是竖屏与硬件设备安装时默认的显示方向有关。private static final int ROTATION_90 =

2011-07-08 15:57:01 12732 3

原创 梳理一下传感器的数据流和框架是怎么样让屏幕旋转的。

这篇文章写的传感器数据从驱动传递到应用程序的整个流程,还有数据校正的问题。应用程序怎么样设置可以让自己随着设备的倾斜度变化而旋转方向呢?在AndroidManifest.xml文件中的android:screenOrientation就可以了。这里追踪一下它的内部机制。先看一个最

2011-07-08 12:51:53 13783 30

原创 SmallLanguage发布记录

项目托管到这里了:http://code.google.com/p/smalllanguage/version 0.12011.6.17SmallLanguage?的version 0.1总算完了。算起来,从第一次开始写脚本到现在也有一年多的时间了,前两次都是写了几天就由于种种原因放下了,好在一次比一次思路更开阔。这一次算是彻底地实现了一直以来追求的模样。很多很多的地方看起来依

2011-07-04 19:59:52 1288 4

原创 关于ToolRotate——Android屏幕方向旋转的根源

这篇文章是对开源项目http://code.google.com/p/flying-on-android/中ToolRotate.cpp的补充说明。  这个程序源于Android平台中的OpenGL库出现的一个bug,我们的板子屏幕分辨率是800*600,当程序竖屏状态时(600*800),屏幕上的横线会出现锯齿。打开"设置"这一类有列表的程序时,可以很显示地看到列表之间的分隔线中间有一段比两边的

2011-06-28 20:15:00 3849

原创 修复ubuntu的grub

win7与ubuntu10.10双系统,这一年来win7就没开过几次,不管是速度还是开发方便性上面,都用熟了ubuntu。只是这几天向SD卡复制文件时,只要文件在五、六十M以上的时候,就复制得很慢很慢,几十分钟吧,复制完成以后烧到板子上还用不了。就把ubuntu10.10升级到11.04,一边升级一边看网页,不料弱出个对话框来,让选择grub安装位置。当时也没注意机器上还插着SD卡,就随便点了个下

2011-06-28 11:57:00 2453 1

Android 进程注入

Android 进程注入代码。跑通了整个流程,希望对大家有帮助,顺便赚点资源分。没办法,穷啊。

2014-11-07

Android NDK编写之JNI规范升级版

事隔3年,把JNI的规范重新整理了一下。希望能给大家带来帮助

2013-12-02

改进的开源项目3D的罗盘(marine compass)

网上有一个3D的罗盘(英文名叫marine compass),利用orientation sensor做出来的,down下来,改进了一下,让它也可以不使用orientation sensor,而是由gsensor和msensor算出来.可以通过它的设置在这两种方式之间进行选择。

2011-07-15

EventHub演示程序及源码

这个资源里面的源码及可执行文件是用于这里这篇文档的: http://blog.csdn.net/a345017062/archive/2011/05/13/6417929.aspx 文档中对Android EventHub是基于这里面的源码和可执行程序的。

2011-05-13

Android2.3 系统的兼容性标准规范

Android2.3 系统的兼容性标准规范,我在博客上贴出来的翻译当中有的部分细节没有翻译可以参考一下这篇源文档。

2011-05-11

SurfaceFlinger使用演示程序及源代码

这个资源是专门为我的这篇文章上传的,具体使用方法和原理可以参考一下这里 http://blog.csdn.net/a345017062/archive/2011/05/09/6406282.aspx

2011-05-09

Stev Guo系统文章翻译

网上整理的Stev Guo系列的文章,讲的是Android系统底层的东西,挺深入的,就一边看一边翻译了下来。

2010-12-17

JNI编程指南和规范的中文翻译(The JavaTM Native Interface Programmer's Guide and Specification)

做Android开发时用到了NDK,发现JNI是个很大的块儿空白。从官网上下了个文档开始学习,读取两遍,理解的差不多了。就花了两星期的时间,把主要部分翻译了。多多捧场。

2010-09-06

MP3文件格式分析资料及帧解析源代码(java)

收集了几个对MP3文件格式说明比较详细的网页,并附带上JAVA版本的源代码.可实现每次读取一帧数据.

2009-10-16

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除