android的搜狗拼音输入法中,手写识别库貌似接口非常简单,所以我动了要用它的念头,于是反编译之。并修正了代码如下:

// HWIMEInterface.java

package com.sohu.handwriting.engine;

import android.content.Context;

import android.content.res.AssetFileDescriptor;

import android.content.res.Resources;

import android.util.Log;

import java.io.File;

import java.io.FileDescriptor;

import java.util.ArrayList;

import java.util.List;

import com.sohu.imputmethod.sogou.R;

public class HWIMEInterface

{

public static final int ALC_CS_CURSIVE = 65536;

public static final int ALC_GB18030 = 15;

public static final int ALC_GBK = 7;

public static final int ALC_GESTURE = 32768;

public static final int ALC_HONGKONG = 16;

public static final int ALC_LCALPHA = 1024;

public static final int ALC_NUMERIC = 256;

public static final int ALC_PUNC_COMMON = 2048;

public static final int ALC_PUNC_RARE = 4096;

public static final int ALC_SC_COMMON = 1;

public static final int ALC_SC_GB18030EX = 8;

public static final int ALC_SC_GBK34 = 4;

public static final int ALC_SC_RADICAL = 128;

public static final int ALC_SC_RARE = 2;

public static final int ALC_SYM_COMMON = 8192;

public static final int ALC_SYM_RARE = 16384;

public static final int ALC_TC_TO_SC = 32;

public static final int ALC_UCALPHA = 512;

private static final boolean DEBUG = false;

private static final int RESULT_NUM = 512;

private static final String TAG = "HWIMEInterface";

private static HWIMEInterface sInterface;

private ArrayList<CharSequence> mCandidateWords;

private Context mContext;

private int mNativeContext;

private char[] mRecognizedResult;

static

{

System.loadLibrary("hanvonhw_v15");

}

private HWIMEInterface(Context context)

{

this.mContext = context;

nativeSetup();

this.mCandidateWords = new ArrayList<CharSequence>();

this.mRecognizedResult = new char[RESULT_NUM];

String fileName = mContext.getFilesDir().getAbsolutePath() + "/dic_gb18030.bin";

File file = new File(fileName);

if (!file.exists())

return;

file.delete();

}

private static void LOGD(String string)

{

Log.d(TAG,string);

}

public static HWIMEInterface getInterface(Context context)

{

if (sInterface == null)

sInterface = new HWIMEInterface(context);

return sInterface;

}

private void splitCandidates_hw(char[] candidatesString, int candidatesNum, List<CharSequence>  candidatesList, int paramInt2)

{

int i = 0;

while (true)

{

if (i >= candidatesNum)

return;

String str = String.valueOf(candidatesString[i]);

candidatesList.add(i, str);

i += 1;

}

}

public native void freeDict();

public void freeHWDict()

{

freeDict();

}

public native void loadDict();

public native void loadDictRes(FileDescriptor mFileDescriptor, long startOffset, long length);

public void loadHWDict()

{

AssetFileDescriptor mAssetFileDescriptor = this.mContext.getResources().openRawResourceFd(R.raw.dic_hw);

FileDescriptor mFileDescriptor = mAssetFileDescriptor.getFileDescriptor();

loadDictRes(mFileDescriptor, mAssetFileDescriptor.getStartOffset(), mAssetFileDescriptor.getLength());

}

public native void nativeFinalize();

public native void nativeSetup();

public native int recognize(short[] strokeData, char[] result, int limit);

public ArrayList<CharSequence> recognizeStroke(short[] strokeData)

{

int i = recognize(strokeData, mRecognizedResult, 16);

mCandidateWords.clear();

splitCandidates_hw(mRecognizedResult, i, mCandidateWords, 0);

return mCandidateWords;

}

public void release()

{

if (sInterface == null)

return;

nativeFinalize();

mCandidateWords.clear();

mCandidateWords = null;

mRecognizedResult = null;

sInterface = null;

}

public native void setDictPath(String dictpath);

public native void setRecognizeRange(int range);

}

*******   这个类使用起来也比较简单

//onCreate

HWIMEInterface mHwIme = HWIMEInterface.getInterface(this);

mHwIme.loadHWDict();

....

//onDestroy()

mHwIme.freeHWDict();

// 在需要识别的地方调用

mHwIme.recognizeStroke(strokes);   // strokes 是short[] 类型,也就是你给的笔画数据

注意:

本文用到的数据请自己去下载搜狗输入法。

反编译并修复过的手写识别类--(android 搜狗 libhanwonhw_v15)相关推荐

  1. Qt之手写识别开发笔记:Zinnia介绍、编译、使用以及Demo

    若该文为原创文章,未经允许不得转载 原博主博客地址:https://blog.csdn.net/qq21497936 原博主博客导航:https://blog.csdn.net/qq21497936/ ...

  2. AI应用开发实战 - 手写识别应用入门

    AI应用开发实战 - 手写识别应用入门 手写体识别的应用已经非常流行了,如输入法,图片中的文字识别等.但对于大多数开发人员来说,如何实现这样的一个应用,还是会感觉无从下手.本文从简单的MNIST训练出 ...

  3. AI应用开发实战系列之三:手写识别应用入门

    AI应用开发实战 - 手写识别应用入门 手写体识别的应用已经非常流行了,如输入法,图片中的文字识别等.但对于大多数开发人员来说,如何实现这样的一个应用,还是会感觉无从下手.本文从简单的MNIST训练出 ...

  4. 实验5-9 使用函数输出水仙花数_正点原子STM32F407探索者开发板资料连载第五十三章 手写识别实验

    1)实验平台:alientek 阿波罗 STM32F767 开发板 2)摘自<STM32F7 开发指南(HAL 库版)>关注官方微信号公众号,获取更多资料:正点原子 第五十三章 手写识别实 ...

  5. 手写识别转文字怎么弄?用这三个手写识别转文字的软件就够了

    我有很多从事教师行业的朋友,他们每天都需要手写教案,写完还要再手动输出为电子版.他们表示,这样的录入过程很花费时间.其实,我们可以通过一些智能软件来解决这一难题.那么,手写识别转文字的软件哪个好呢?今 ...

  6. Qt虚拟键盘更新,支持手写识别功能

    Qt官方博客发布消息称,新版本的Qt虚拟键盘支持手书写识别功能(HWR).性能改进.Nuance T9书写一体化,并支持繁体中文! Qt虚拟键盘日前发布了新功能和版本控制方案的更新.作为最近的许可变更 ...

  7. application.properties 不识别_阿波罗 STM32F767 开发板资料连载第五十八章 手写识别实验

    1)实验平台:alientek 阿波罗 STM32F767 开发板2)摘自<STM32F7 开发指南(HAL 库版)>关注官方微信号公众号,获取更多资料:正点原子 第五十八章 手写识别实验 ...

  8. 不反编译、无逆向基础也能轻松编写Android App Hook插件? Xposed的远房表弟,Hookworm来也!

    前言 Xposed的大名相信很多同学都不陌生,它提供了一种能力,可以在不修改原apk的情况下,以插件的方式改变目标App的某些行为. 但随着Android系统版本的迭代,原来的Xposed已经不适合在 ...

  9. 使用zinnia库进行中文手写识别

    研究手写识别的时候看到了zinnia,就进行了测试,存在问题是zinnia书写依赖笔画顺序,而且没有找到更多的可以用于训练的数据. zinnia介绍 zinnia是一个基于svm的开源的手写识别库.z ...

最新文章

  1. Scrapy网络爬虫框架实战[以腾讯新闻网为例]
  2. 递归函数之阶乘的实现
  3. C语言中字符串的处理方式
  4. Underscore.js
  5. 基于协同过滤,NMF和Baseline的推荐算法
  6. Python自动化之socket初识
  7. GhostNet 详解
  8. java4.25生成车牌号_泸牌16年涨882倍 超25万人拍一张车牌为哪般?
  9. DB2数据库HANG住的时候应该收集什么数据以及如何处理
  10. 计算机安全中采用的用户身份验证技术主要有,探究用户身份认证技术在信息安全中运用的意义...
  11. 程序员技能树的分层分级方法
  12. 分享六款原型设计软件,交流协作更便捷
  13. 一个程序员的自白(认同迷失)
  14. 【QT数字图像处理】(三)QSlider滑块学习
  15. 利用Pytorch中深度学习网络进行多分类预测(multi-class classification)
  16. 低频矢量网络分析仪(VNA)的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  17. Packet Tracer(第二期)--4RIP
  18. Jfrog Artifactory安装及备份恢复搭建
  19. FireFox火狐浏览器设置不加载图片
  20. maven profile指定配置文件打包适用多环境

热门文章

  1. 万物互联机遇 物联网步入迅速发展期
  2. java字符串转数组(JAVA把字符串转化为数组)
  3. ORB-SLAM2源码笔记(1)——框架结构
  4. string.h 或 cstring 头文件包含的字符串操纵函数查询
  5. TP、TN、FP、FN解析
  6. 搭搭云3.0平台上线 全面定制SaaS带给用户什么样的体验?
  7. MSC.SIMXPERT.V2016全集成多学科仿真解决方案
  8. 在HTML网页中怎么使用jquery,怎么调用jquery
  9. Matplotlib——直方图_hist()函数_histogram()函数_二维数据
  10. Word中邮件功能的使用