Linux下搭建Bouncycastle加解密环境
Bouncycastle是一种Java平台开放源码的轻量级密码术包,可用来管理Android的证书。此次因为需要自己生成Https的证书,因此,专门学习了一下搭建Bouncycastle环境的方法,对学习过程记录如下:
1. 环境我使用的环境信息如下:
Linux版本:CentOS 5.8 64位操作系统
Java版本:1.6.0_35
2. 搭建步骤具体搭建步骤记录如下:
2.1 下载Bouncycastle的Jar包官方网站地址是:Bouncycastle官网,网页上有两个可以下载的:
一个是crypto-154.tar.gZ(文件较小,但是我下载了以后,出现无法解压的现象,windows和linux下均无法解压)
另外一个是crypto-154.zip,推荐下载该版本,文件较大,可以直接解压得到jar文件夹,这里因为我的java版本是1.6的所以选择了bcprov-debug-jdk15on-154.jar。
或者也可以直接点击下载 bcprov-jdk15on-146.jar
2.2 上传下载的安装包将下载得到的Jar包上传到linux服务器上,找到java的根目录,将其放 ...
Android集成OCR实现文字识别
OCR (Optical Character Recognition,光学字符识别)是指电子设备(例如扫描仪或数码相机)检查纸上打印的字符,通过检测暗、亮的模式确定其形状,然后用字符识别方法将形状翻译成计算机文字的过程;
1.Tesseract简介Tesseract是Ray Smith于1985到1995年间在惠普布里斯托实验室开发的一个OCR引擎,曾经在1995 UNLV精确度测试中名列前茅。但1996年后基本停止了开发。2006年,Google邀请Smith加盟,重启该项目。目前项目的许可证是Apache 2.0。该项目目前支持Windows、Linux和Mac OS等主流平台。但作为一个引擎,它只提供命令行工具。现阶段的Tesseract由Google负责维护,是最好的开源OCR Engine之一,并且支持中文。
主页地址:https://github.com/tesseract-ocr
在Tesseract的主页中,我们可以下载到Tesseract的源码及语言包,常用的语言包为
中文:chi-sim.traineddata
英文:eng.traineddata
2.Tess-t ...
Android平台OCR工具之Tess-two使用
OCR (Optical Character Recognition,光学字符识别)是指电子设备(例如扫描仪或数码相机)检查纸上打印的字符,通过检测暗、亮的模式确定其形状,然后用字符识别方法将形状翻译成计算机文字的过程;
1. Tesseract简介Tesseract是Ray Smith于1985到1995年间在惠普布里斯托实验室开发的一个OCR引擎,曾经在1995 UNLV精确度测试中名列前茅。但1996年后基本停止了开发。2006年,Google邀请Smith加盟,重启该项目。目前项目的许可证是Apache 2.0。该项目目前支持Windows、Linux和Mac OS等主流平台。但作为一个引擎,它只提供命令行工具。现阶段的Tesseract由Google负责维护,是最好的开源OCR Engine之一,并且支持中文。
主页地址:https://github.com/tesseract-ocr
在Tesseract的主页中,我们可以下载到Tesseract的源码及语言包,常用的语言包为
中文:chi-sim.traineddata
英文:eng.traineddata
2. Te ...
EventBus简介及使用
EventBus是一个Android下典型的“订阅发布模式”框架,该模式定义了一种一对多的依赖关系,让多个订阅者对象同时监听一个主题对象,通过这种方式对订阅者和主题发布者进行充分解耦,主要用于Android组件间相互通信、线程间互相通信及其他线程与UI线程之间互相通信等。代替了传统的Handler、BroadCastReceiver、Interface回调等通信方式,相比之下EventBus的优点是代码简洁,使用简单,并将事件发布和订阅充分解耦。
1. 项目地址EventBus开源项目的项目地址:https://github.com/greenrobot/EventBus
2. 相关概念2.1 事件:我所理解的事件就是需要在订阅者和发布者之间进行传递的数据,可以为单个基本类型的值,也可以为一个自定义的对象。
事件可以分为一般事件和Sticky事件,相对于一般事件,Sticky事件不同之处在于:当事件发布后,再有订阅者开始订阅该类型事件,依然能收到该类型事件最近一个sticky事件,与StickyBroadcast类似。
事件可以在任意线程进行发布,EventBus会根据发布事件类型,调 ...
Android横竖屏切换时生命周期变化
在开发中我们经常会遇到横竖屏切换的场景,那么在这些场景下,Activity的生命周期是一个怎么样的调用呢,本文中我们打印日志记录了一个Activity横竖屏切换时的生命周期的调用,方便以后开发过程中的查阅和记忆。
1. 设置横屏在AndroidManifest.xml文件中对应的Activity加上如下标签:
1android:screenOrientation="landscape"
该Activity将会设置为横屏。
2. 横屏旋转时生命周期横屏竖屏切换时,系统会走该应用所有生命周期
这里需要注意,横屏切换竖屏时,会执行一次OnCreat和两次OnRestart。
竖屏切换横屏时,会执行一次OnRestart和一次OnCreat。
3. 设置横竖屏切换时,不执行生命周期在AndroidManifest.xml文件中对应的Activity加上如下标签:
1android:configChanges="orientation|keyboardHidden|screenSize"
切记一定要加上后边的screenSize否则在4.0以上版本 ...
Android使用SQLite批量入库操作性能对比
Android开发过程中经常会用到数据库,不可避免的会出现批量操作数据库,比如一次操作需要往数据库中插入一万条记录,这就需要进行批量操作,以下提供了四种批量操作方式,并分别进行对比。
直接使用SQL语句进行插入
直接使用SQL语句插入,添加事务
使用ContentValues方式
使用SQLiteStatement方式
接下来对每一种方式的实现及性能分别进行对比(向统一数据库同一张表插入一万条数据):
1. 直接使用SQL语句进行插入实现代码:
@Override
public CommonResult addGroupMember()
{
String insertSQL = "insert into "
+ SQLHelp.GROUP_MEMBER_TABLENAME
+ "("
+ SQLHelp.GROUP_ID
+ ","
+ SQLHelp.MEMBERS_SUBS_ID
...
Fragment中ListView.setOnItemClickListener失效的问题
今天在写代码的时候发现一个很奇怪的现象,当一个Activity继承自Fragment时,在其中设置ListView.setOnItemClickListener会没有作用,不会抛出异常,打断点也进不去,没有找到原因,但是找到了解决方案:
在ListView的Item的Layout代码最外层的Layout中设置:
android:clickable="false"
android:focusable="false"
FindBugs安装及使用
FindBugs 是一个静态分析工具,它检查类或者 JAR 文件,将字节码与一组缺陷模式进行对比以发现可能的问题。有了静态分析工具,就可以在不实际运行程序的情况对软件进行分析。
1. 安装本文主要叙述如何在Eclipse中安装和使用FindBugs,安装可以分为在线安装和离线安装两种方式:
1.1 在线安装安装地址:http://findbugs.cs.umd.edu/eclipse ,
在Eclipse—Help—Install New Software—Add—location中写入该地址,然后一路Next直到完成,重启Eclipse后,即可完成安装(可以任选一个项目,右键菜单中会出现Find Bugs)
1.2 离线安装下载地址为: http://downloads.sourceforge.net/project/findbugs/findbugs%20eclipse%20plugin/1.3.9/edu.umd.cs.findbugs.plugin.eclipse_1.3.9.20090821.zip?use_mirror=ncu
下载完成以后,将它放入Eclipse ...
LogcatUtil
之前项目中,需要自己打印log,于是模仿别人的工具,整理了一个日志打印工具,支持开关、打印文件名、方法名、行数等:
package com.xinwei.palmhall.util;
import java.text.SimpleDateFormat;
import java.util.Date;
import android.util.Log;
public class LogCatUtil {
private static final boolean DEBUG = true;
public static void d(String TAG, String method, String msg) {
if (DEBUG) {
Log.d(TAG, "[" + method + "]" + msg);
}
}
public static void d(String TAG, String msg) { ...
Android环境String.xml文件中空格的处理
Android的String.xml文件中将多个空格合并为一个空格了,例如:
<string name="test">test test test test</string>
每一个Test中间有五个空格,但是实际在Log中打印出来的:
![String.xml的Log](http://img.blog.csdn.net/20150202170214171)
为解决这个问题,需要在xml文件中将空格用Unicode 字符值: \u0020 代替:
<string name="test">test\u0020\u0020\u0020\u0020\u0020test\u0020\u0020\u0020\u0020\u0020test\u0020\u0020\u0020\u0020\u0020test</string>