linux系统上编译arm版的protobuf库 准备条件:1.安装gcc编译器和make2.安装arm-linux或其他arm编译器可以用arm-linux-gcc -v和gcc -v来检查编译器版本。 从官网下载protobuf-2.5.0.tar.gz.第一步是编译出x86版的库和protoc,按顺序执行下列命令tar -zxvf protobuf-2.5.0.tar.gzcd protobuf-2.5.
JNI编程经验(JNI Tips) 翻译原文来自:http://developer.android.com/intl/zh-cn/training/articles/perf-jni.htmlJNI全称是Java Native Interface, 它是一种使用java语言和原生C/C++语言相互调用,混合编程的方法. 它支持从动态链接库中加载代码, 并能使用C/C++的高效的特性如果你之前对这个还不熟悉, 完整的读一遍
JNI引用与垃圾回收 本文转自http://hubingforever.blog.163.com/blog/static/171040579201221553444677/ 本文转载整理自: http://my.unix-center.net/~Simon_fu/?p=849http://my.unix-center.net/~Simon_fu/?p=856http://docs.oracle.
OpenCV学习笔记3:找出人脸,同时比较两张图片中的人脸相似度 终于到了有实际应用的功能了,有2张图片,里面各有一个人脸,我的目的是比较这两个人脸的相似度,这里用到了facedetect的功能,还有图像转换,图像剪切,以及直方图的比较。具体流程是: 1。分别用facedetect功能将两张图片中的人脸检测出来 2。将人脸部分的图片剪切出来,存到两张只有人脸的图片里。 3。将这两张人脸图片转换成单通道的图像 4。使用直方图
OpenCV学习笔记2:使用opencv进行图像比较 比较两个图像是否相似,这个应用范围十分广泛,我刚开始总以为这个技术十分高深(当然也是百分高深),要入门得学很多的相关知识,起码得方方面面都有一定的了解了才能来做这方面的研究。 但是opencv提供了一套API来做这个的比较,使我们很简单的就能对2个图片进行比较,这就是直方图的比较,直方图英文是histogram, 原理就是就是将图片转换成直方图,然后对直方图进行比较,在某些程度,真实地反
OpenCV学习笔记1:使用Camera获取图像,并用Canny转换成边缘图,并支持鼠标点击保存图片 最近对OpenCV产生了兴趣,然后下载OpenCV2.4.2,安装到了unbuntu和windows上,又看了很多相关的资料,比如学习opencv, opencv_tutorials(Opencv自带的)等等,也运行了里面自带的所有例子,然后发现里面的一些算法原理一点都不明白,不得已,又去找了一本计算机图形学.(美国)Peter.Shirley.清晰版来阅读,但还是半懂不懂,就决定从自己的初衷出发
华容道算法和使用广度搜索的一些单人游戏求解框架 最新无聊在玩华容道,结果玩的时候,有些关不知道怎么过,就自己想着写程序来求最小还原步数。经过一番搜索和思考,写出来下面的代码,其中借鉴了别人的红黑树的代码,还有就是使用广度搜索来求解的思想。 在写算法的过程中,突然想到还有其他的单人游戏也是可以用广度搜索来求解的,因此,就针对这类游戏写了一个框架,适用于状态数不会太变态的游戏,例如华容道,Unblock me(移动木块)之类的游戏。3
Android 中判断一个程序是否为输入法程序 实际中我们会碰到要求判断哪些程序是输入法,比如,一个内存优化工具,在优化时可能想除了系统程序和输入法程序,其他程序都kill掉。否则,如果杀掉输入法程序,用户输入时就可能碰到无法输入非英文之外的字符。这样的话,用户会不再使用这个工具。 判断一个程序是否是输入法,可以通过解析它的Androidmanifest.xml文件,读取它的所有services列表,如果其中一个的android:p
使用native程序来守护android进程 问题的提出目前android的系统,我们的程序常常由于几种原因被停掉或杀掉而不能及时重启,这对于一个安全程序来说是有相当的隐患的。例如当用户从程序管理里面停掉程序。 其他程序优化系统时杀掉程序。 程序崩溃。 在android系统里,其他程序还能禁掉我们程序各种广播接受器,导致我们程序不能根据广播来启动。问题的解决因此,这里我想了一个办法来解决这个问题。
adb安装apk报错[INSTALL_FAILED_INVALID_APK]的一个解决办法 今天在android 4.1的手机上做一个恢复程序功能时发现,在adb shell里用pm install -r /data/local/tmp/temp.apk时报错,错误是Failure [INSTALL_FAILED_INVALID_APK], 在网上查了半天没找到这个问题的原因,就自己试试找原因。 我发现这个文件的读写属性是rw-------, 属主是root,因为是用ro
使用NDK build android上的busybox. 在android上,为了某些需要,我们需要一个小而精减的busybox(如果不懂busybox是什么),请跳过此文。当然我们也可以用gcc的toolchains来build, 但生成出来的那个二进制文件的size会让你疯狂。而用NDK生成出来的二进制则是gcc生成的五分之一左右。
使用NDK生成native C/C++的可执行程序 众所周知, NDK可以生成lib,让java程序通过jni来调用,其实,NDK也可以生成C/C++的可执行程序.不过这个程序要被执行的话还有要求. 1.手机是破解过具有root权限的. 2.可执行文件的名字必须是lib*.so. 否则apk安装时不会安装上去,也可以考
身高排队算法-(较优解):12个高矮不同的人,排成两排,每排必须是从矮到高排列,而且第二排比对应的第一排的人高,问排列方式有多少种? 本人对解决算法有兴趣,曾在网上看到过一道阿里巴巴的面试题.题目是这样的:12个高矮不同的人,排成两排,每排必须是从矮到高排列,而且第二排比对应的第一排的人高,问排列方式有多少种?所以自己也考虑了一个算法,也在网上看到别人的不同的算法。感觉我这个算法遍历效率很高,而且也很简洁(不敢用最来形容,怕强中更有强中手,当然如果能推导出公式来求解的话肯定会比我这个算法快,不过目前还不知道这个公式是怎样的).我的算法思想是这样的:(1)把排队的问题转换成数字排列问题,类似于0- 11这12个数排成2行。(2)可以只考虑前
数独求解算法 算法基本思想:1.数据结构,利用short来存每个格子的值。利用低位的9个bit来表示每个格子的值,如果是待确定的格子,则初始化时将最高位的bit置1,低位9个bit全部置1. 如果是已给出或推算出确定的唯一值,只要置上低位9个bit里对应的1个bit。2.求解思路 (1)遍历每个待确定的格子S, 首先排除S所在9宫其他已确定的值,将那些值对应的bit置0。 第二,排除S所在列的其他已确定的值,将那些值对应的bit置0。 第三,排除S所在行的其他已确定的值,将那些值对应的bit置0。
学习笔记-翻译资料:Android 2.3.3 近场通信NFC介绍(本人翻译的) NFC(近场通信)NFC是一套短距离的无线通信,通常距离是4厘米或更短。NFC工作频率是13.56M Hz,传输速率是106kbit/s 到848kbit/s. NFC总是在一个发起者和一个被动目标之间发生。发起者发出近场无线电波,这个近场可以给被动目标供电。这些被动的目标包括不需要电源的标签,卡,也可以是有电源的设备。与其他无线通信技术比较,例如蓝牙和WiFi, NFC提供更低贷款和距离,并且低成本,不需要供电,不需要实现匹配,整个通信过程仅仅是短短的靠近一秒就能完成。一个带有NFC支持的android设