【Android】灵云手写离线识别使用说明

2023-11-02

注册

使用灵云的手写识别功能需要先在官网上进行注册应用。官网地址

注册比较简单,就不做过多介绍了,注册完应用以后,在后台创建自己的应用,创建完应用以后需要给应用开通对应的手写功能。
这里写图片描述

capKey说明:

  • hwr.cloud.letter 云端单字识别功能
  • hwr.cloud.freewrite 云端多字识别功能
  • hwr.local.letter 本地单字识别功能
  • hwr.local.freestylus 本地多字识别功能
  • hwr.local.associateword 本地联想词功能

集成

下载灵云的Android版本手写识别功能,下载地址
如果使用在线功能,下载对应的SDK,里面有jar包和so,就可以满足需求了。如果要使用离线的手写识别功能,还需要下载灵云资源文件

资源文件列表:

这里写图片描述

如果是在android平台上使用,需要修改一下名字,修改为如下,并加入到libs/armeabi目录下
这里写图片描述

源码

Github

灵云离线手写识别功能

需要加入的so和jar包有:

  • libhci_curl.so
  • libhci_sys.so
  • libhci_sys_jni.so
  • libhci_hwr.so
  • libhci_hwr_hwr_jni.so
  • libhci_hwr_local_recog.so
  • libletter.conf.so
  • libletter.dic.so

需要使用的权限

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />

加载配置类

package com.miao.util;

/**
 * 灵云配置信息
 * Created by 10048 on 2016/12/3.
 */
public class ConfigUtil {
   
    /**
     * 灵云APP_KEY
     */
    public static final String APP_KEY = "c85d54f1";

    /**
     * 开发者密钥
     */
    public static final String DEVELOPER_KEY = "712ddd892cf9163e6383aa169e0454e3";

    /**
     * 灵云云服务的接口地址
     */
    public static final String CLOUD_URL = "test.api.hcicloud.com:8888";

    /**
     * 需要运行的灵云能力
     */
    //云端多字识别功能
    public static final String CAP_KEY_HWR_CLOUD_FREETALK = "hwr.cloud.freetalk";
    //云端单字识别功能
    public static final String CAP_KEY_HWR_CLOUD_LETTER = "hwr.cloud.letter";
    //离线单字识别功能
    public static final String CAP_KEY_HWR_LOCAL_LETTER = "hwr.local.letter";
    //离线多字识别功能
    public static final String CAP_KEY_HWR_LOCAL_FREESTYLUS = "hwr.local.freestylus";
    //离线联想功能
    public static final String CAP_KEY_HWR_LOCAL_ASSOCIATE_WORD = "hwr.local.associateword";
    //离线笔形功能
    public static final String CAP_KEY_HWR_LOCAL_PENSCRIPT = "hwr.local.penscript";
}

封装灵云系统的初始化功能

package com.example.sinovoice.util;

import android.content.Context;
import android.os.Environment;
import android.util.Log;

import com.sinovoice.hcicloudsdk.api.HciCloudSys;
import com.sinovoice.hcicloudsdk.common.AuthExpireTime;
import com.sinovoice.hcicloudsdk.common.HciErrorCode;
import com.sinovoice.hcicloudsdk.common.InitParam;

import java.io.File;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;

/**
 * Created by miaochangchun on 2016/11/28.
 */
public class HciCloudSysHelper {
   
    private static final String TAG = HciCloudSysHelper.class.getSimpleName();
    private static HciCloudSysHelper mHciCloudSysHelper = null;

    private HciCloudSysHelper(){
    }

    public static HciCloudSysHelper getInstance() {
        if (mHciCloudSysHelper == null) {
            return  new HciCloudSysHelper();
        }
        return  mHciCloudSysHelper;
    }

    /**
     * 初始化函数
     * @param context
     * @return
     */
    public int init(Context context){
        //配置串参数
        String strConfig = getInitParam(context);
        int errCode = HciCloudSys.hciInit(strConfig, context);
        if (errCode != HciErrorCode.HCI_ERR_NONE){
            Log.e(TAG, "hciInit Failed and return errcode = " + errCode);
            return errCode;
        }

        errCode = checkAuthAndUpdateAuth();
        if (errCode != HciErrorCode.HCI_ERR_NONE) {
            Log.e(TAG, "checkAuthAndUpdateAuth Failed and return errcode = " + errCode);
            return errCode;
        }
        return HciErrorCode.HCI_ERR_NONE;
    }

    /**
     * 获取授权
     * @return
     */
    private int checkAuthAndUpdateAuth() {
        // 获取系统授权到期时间
        AuthExpireTime objExpireTime = new AuthExpireTime();
        int
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【Android】灵云手写离线识别使用说明 的相关文章

  • 使用匕首柄作为依赖注入来处理多个改造客户端?

    我想在我的 android 应用程序中使用两个不同的后端 具有不同的响应格式 我使用 hilt 作为依赖注入 并对网络调用进行改造 这非常适合工作 因为我已经添加了第二个服务器网络文件和应用程序模块 所以它给了我错误 该错误列在最后 我需要
  • 即使我单击“运行”,Eclipse 也会运行调试模式

    Eclipse 总是在调试模式下启动我的应用程序 即使我单击常规的 运行 按钮 有任何想法吗 我发现我必须重新启动 Xoom 才能使其再次正常工作
  • 如何通过代码检测Android上的表情符号支持

    通过代码 我可以制作一个按钮 将这 3 个表情符号插入到文本中 不过 在许多手机上 当用户单击按钮时 问题是 显示为 X X X 或者更糟糕的是 它只显示三个空白空间 我想在无法正确显示表情符号的 Android 设备上禁用并隐藏我自己的内
  • 在 Android 市场中以编程方式检查我的应用程序版本

    目前 我正在启动时检查应用程序版本代码 并将其与我的服务器上的最新版本代码进行匹配 并根据此匹配 我发送用户从 Android 市场获取最新更新 它运行良好 但我的问题是我必须手动更改服务器上的最新版本代码 并且我不知道新版本何时发布APK
  • 与通用地图相比,MapView 的分辨率较差

    我刚刚收到 HTC Desire 进行测试 我注意到 残留在小于整个屏幕的框架中的地图视图不如通用地图应用程序那么清晰 有什么办法解决这个问题吗 您应该使用 API 级别 4 或更高级别编译应用程序 然后在 AndroidManifest
  • 如何在 Android 中创建始终位于顶部的全屏覆盖 Activity

    我希望能够创建一个始终位于 Android 显示前面的 Activity 它不应该接收任何输入 只需将其传递到其下面的任何应用程序即可 像平视显示器之类的东西 我能够研究我需要将底层窗口类型设置为 TYPE SYSTEM ALERT 但看起
  • 将项目添加到 android 框架的设置中

    我正在 android 框架中工作 我想向 android 操作系统中的现有设置添加一个项目 您能告诉我如何执行此操作吗 首先阅读有关偏好活动 http developer android com reference android pre
  • MediaPlayer.create() 始终返回 null

    我以前用过媒体播放器 从来没有遇到过这个问题 每当我尝试使用 MediaPlayer create 时 该方法都会给我 null 并且我无法播放声音 我有什么遗漏的吗 public class Game extends Activity p
  • Android Studio APK META-INF/BCKEY.DSA 中复制的重复文件

    我的代码构建得很好 但是当我尝试在调试中运行它时 出现以下错误 Error Execution failed for task app transformResourcesWithMergeJavaResForDebug com andro
  • 通过配置更改保留 CoroutineScope 的干净方法,无需 ViewModel

    我知道建议是在我们的 Activity 中使用 ViewModel 这样我们就可以使用它viewModelScope 由于 ViewModel 的寿命比 Activity 的寿命长 因此我们不必取消以下作业activity onDestro
  • 本地管理的广播接收器泄漏?

    当应用程序被系统杀死时 本地 即使用 LocalBroadcastManager 管理 BroadcastReceiver 是否有可能泄漏 我需要它的具体用例是我想在活动的 onCreate onDestroy 中注册 注销 Broadca
  • foo.setVisibility(View.GONE) 和parent.removeView(foo) 之间的区别

    如果 foo 是一个视图 那么有什么区别foo setVisibility View GONE and fooParent removeView foo 我对两个语句之前和之后视图的内存消耗特别感兴趣 可见性设置为 GONE 的视图是否会消
  • 如何在Room的数据库迁移中正确添加索引?

    我在迁移 Room 数据库时遇到问题 在更新的数据库中 我必须将一个字段从整数更改为双精度值 我读到它并不像听起来那么容易 为了做到这一点 我必须使用这个更改后的属性创建新的临时表 复制前一个表中的所有值 删除旧的值 最后重命名临时表 我的
  • 有没有办法创建 PWA(渐进式 Web 应用程序)的 Android 桌面小部件?

    我正在构建一个渐进式 Web 应用程序 有没有办法创建 Android 桌面小部件 None
  • android - 如何让按钮每次按下时单击播放声音文件?

    我打开了一个新项目 现在我想做的是 通过按下按钮 我想要播放一个 mp3 文件 而且每次按下按钮时 声音文件都会再次从头开始播放 所以假设 mp3 长 10 秒 我按下按钮 它正在播放 4 秒后我再次按下按钮 声音将再次播放 现在我想知道的
  • 如何获取Android中的所有主屏幕?

    我是安卓开发新手 我知道每个主屏幕都是启动器中的一个工作区 我想获取屏幕上所有应用程序图标的所有位置信息 那么有没有办法获取这些屏幕对象及其图标信息的列表 ADD 我更期待的是应用程序图标和屏幕之间的关系 例如 我想要某个应用程序图标的位置
  • Android - 检测视图上的双击和三次点击

    我一直在尝试构建一个可以检测双敲击和三敲击的敲击检测器 在我的努力失败后 我在网上搜索了很长时间以找到可以使用的东西 但没有运气 奇怪的是 像这样的图书馆如此稀缺 有什么帮助吗 你可以尝试这样的事情 尽管我通常建议不要使用三次点击作为一种模
  • FCM 主题是否适合更多用户?

    我对使用主题消息有点困惑 我的场景是根据通知触发一些作业 请帮助我更多地了解这一点 如果我们正在处理大量用户 则可以使用 FCM 主题向用户发送通知 我们可以只使用数据消息和主题消息吗 使用主题发送的消息是否保证送达 我在 FCM 文档中看
  • 使用 PDFBox 在 Android 中创建 PDF

    我正在尝试通过我的 Android 应用程序创建 PDFPDFBoxapi 但出现以下错误 java lang NoClassDefFoundError org apache pdfbox pdmodel PDDocument 我已经将以下
  • FCM(Firebase Cloud Messaging)如何发送到所有手机?

    我创建了一个小型应用程序 能够从 FCM 控制台接收推送通知 我现在想做的是向所有使用 API 安装应用程序的 Android 手机发送推送通知 这就是我完全迷失的地方 有没有办法在不收集所有注册ID的情况下将其发送到所有手机 这是否仅适用

随机推荐

  • centos7下的Python3.7的安装

    我这里使用的时centos7 centos系统本身默认安装有python2 x 版本x根据不同版本系统有所不同 可通过 python V 或 python version 查看系统自带的python版本 有一些系统命令时需要用到python
  • linux如何退出root用户

    普通用户通过su命令切换成root用户 使用exit命令可以退出root用户的shell回到原来的用户shell
  • linux 清除 arp 缓存

    所有在Linux系统下 arp d ip 命令只能清除一个IP地址的对应MAC地址缓存 可以使用组合命令操作 组合命令清楚所有arp缓存 arp n awk 1 9 system arp d 1 以上命令必须 root 才可以执行 使用ip
  • mysql 前导列_MySQL 各个索引的使用详解

    一 慢查询日志 1 1 MySQL的日志类型 日志用于记录数据库的运行情况 以及用户对数据库执行的各类操作 当数据库发生故障时 可以根据日志分析和解决问题 从而对数据库进行恢复 1 2 认识慢查询日志 慢查询日志用于记录MySQL数据库中响
  • 用IDEA创建一个Mybatis项目,自动生成映射文件

    如何用IDEA创建一个mybatis项目框架 用mybatis插件自动生成核心配置文件 mapper映射文件 实体类和接口 1 首先打开IDEA 选择新建项目 如下选择maven quickstart 只需要提供maven管理包 所以选择q
  • ajax小的实例,jQuery下的ajax实例

    关于ajax的详细介绍我就不多说了 对ajax完全不了解的可以先查看官方文档学习一些基础的 我想通过这个的实例 直接说一下在真实项目中是如何使用ajax 并且去实现对后台接口的请求和处理请求到的数据 相信很多前端小白和我之前一样 对ajax
  • 包及jar包扫描

    扫描包 private void scanFile File currentFile String packageName File fileList file listFiles 得到该文件夹下的所有 类 子文件夹的名称 此处list应为
  • java中day02

    Java HelloWorld 写法一 推荐 避免歧义 public class Demo01 public static void main String args System out println 桃李不言下自成蹊 javac De
  • 视频教程-自然语言处理基于Bert的中文命名实体识别实战-NLP

    自然语言处理基于Bert的中文命名实体识别实战 长期从事机器学习深度学习研究 在自然语言处理领域有一定认知 杨帅 188 00 立即订阅 扫码下载 CSDN程序员学院APP 1000 技术好课免费看 APP订阅课程 领取优惠 最少立减5元
  • 全开源多语言国际版购物商城软件APP系统开发

    1 确定需求和功能特性 商城基本功能商品展示 购物车 订单管理 支付接口等 多语言支持系统需要支持多个语言版本 可以根据用户的地域和语言偏好切换显示 全开源选择适合的开源框架和技术 确保系统的可定制性和扩展性 APP开发结合移动端开发技术
  • Linux文件操作高频使用命令

    文章目录 0 新建操作 1 查看操作 2 删除操作 3 复制操作 4 移动操作 5 重命名操作 6 解压压缩操作 7 上传文件工具 8 ln file和touch命令 9 查找操作命令 0 新建操作 mkdir abc 新建一个文件夹 to
  • Coredump 详解

    引言 当程序运行的过程中异常终止或崩溃 操作系统会将程序当时的内存状态记录下来 保存在一个文件中 core文件 这种行为就叫做 Core Dump 或者叫做 核心转储 利用 coredump 可以帮助我们快速定位程序崩溃位置 开启 core
  • 第十二届蓝桥杯EDA设计与开发项目国赛客观题详解

    一 选择题 选择题包括元器件 数模电等基本知识 第一空一看就是4702 第二空2 0 可以多看看元件的封装 根据电路所学第一空75 第二空小于 这一看就是D 3W指的肯定是线间距 选C 选A 这题ABC肯定是对的 D没看见过 选C 选BC
  • 蓝桥杯试题 算法训练 拿金币(C语言)

    问题描述 有一个N x N的方格 每一个格子都有一些金币 只要站在格子里就能拿到里面的金币 你站在最左上角的格子里 每次可以从一个格子走到它右边或下边的格子里 请问如何走才能拿到最多的金币 输入格式 第一行输入一个正整数n 以下n行描述该方
  • 对int、iret和栈的深入理解

    我们以一个程序来展开讨论 用7ch中断例程完成loop指令的功能 在屏幕中间显示80个 1 程序框架如下 assume cs code code segment start mov ax 0b800h 向8086CPU显存的地址 mov d
  • js逆向--大麦网sign参数

    声明 本文章中所有内容仅供学习交流 不可用于任何商业用途和非法用途 否则后果自负 如有侵权 请联系作者立即删除 由于本人水平有限 如有理解或者描述不准确的地方 还望各位大佬指教 抓包分析 今天我们要分析的参数是大麦网的sign参数 web端
  • 革命性创新:RFID技术引领汽车零部件加工新时代

    革命性创新 RFID技术引领汽车零部件加工新时代 RFID Radio Frequency Identification 射频识别 技术是一种利用无线电频率进行自动识别的技术 可以快速 准确地识别物体并获取相关数据 在汽车零部件加工中 RF
  • Echarts中timeline组件的使用

    最近的实习有涉及数据可视化的工作 需要用到图表库 这里用的是百度的echarts 琢磨了一段时间API 总体来说不难 但是百度自己的文档用例不丰富 大多数只有文字描述 配图都没有 更少有栗子 echarts的交互组件中 图例组件 legen
  • Cisco防火墙基础介绍及配置

    一 ASA 状态化防火墙 安全设备介绍 Cisco硬件防火墙技术应用领域 PIX 500 系列安全设备 ASA 5500系列自适应安全设备 Catalyst 6500 系列交换机和Cisco 7600 系列路由器的防火墙服务模块 Cisco
  • 【Android】灵云手写离线识别使用说明

    注册 使用灵云的手写识别功能需要先在官网上进行注册应用 官网地址 注册比较简单 就不做过多介绍了 注册完应用以后 在后台创建自己的应用 创建完应用以后需要给应用开通对应的手写功能 capKey说明 hwr cloud letter 云端单字