![]() |
灵云SDK开发手册(C API)
5.2
|
SDK发布包中有示例代码工程,开发者可直接导入工程以了解每种能力。 此处我们以HWR为例描述灵云SDK的基本调用流程。
首先,我们需要初始化整个灵云SDK的SYS模块。无论我们使用什么具体的能力,这一步都是必须的。
在使用时,需要将 developerKey, appKey, cloudUrl 这几项替换为由捷通分配给开发者的应用账号信息及云服务地址。 另外,需要确认authPath, logFilePath所指定的路径存在并且具有写权限。
如果 hci_init() 函数返回 HCI_ERR_NONE,表示成功,否则表示失败。返回值不是 HCI_ERR_NONE 一般都表示失败, 可以根据具体返回值以及日志文件排查错误。
在灵云系统初始化成功后,第一次使用各项能力之前,我们还需要使用 hci_check_auth() 函数去云端获取授权。一般我们可以先判断当前的授权的过期时间来进行授权获取。
从云端拿到的授权文件会缓存在 hci_init() 时所提供的 authPath 路径下。以后使用会直接使用此文件, 不需要再到云端下载。但授权文件都有一个过期时间,一旦过期了,在一周的宽限期内,仍可以继续使用相应能力, 但超出宽限期,将无法再使用相应的能力。因此在过期时间到了之后必须及时到云端更新授权文件。
在获取授权文件之后就可以设置当前用户,可选。
设置了当前用户,就可以让每次请求和具体用户相关,这样在不同的设备上就可以考虑共享用户。关于用户相关接口参见 用户模块
如果使用手写识别能力,我们还需要初始化HWR能力引擎
如果我们使用的是本地能力,需要用 initCapKeys 配置项指定在后面将会使用哪种本地能力。另外,还需要使用 dataPath 配置项指定本地资源(模型库文件)所在的路径。 这样系统会检查一下所用到的本地能力的资源是否完整可用。
如果使用的是云端能力,这里的配置串可以为空。
在HWR能力初始化之后,需要通过开启识别会话来启用一种具体的能力,如下所示:
示例中使用 capKey配置项指定了所要使用的能力为本地的连写识别引擎。 返回的 nSessionId 标识了此次会话,将来会使用此Id进行识别。
备注:多线程调用过程中需要不同的线程使用不同的会话ID来进行识别,在session层次上多线程安全。
识别时,nSessionId 为上一步 hci_hwr_session_start() 所返回的会话标识,g_StrokeData是笔迹数据, 由于没有特殊的识别配置项,pszRecogConfig这里设为空,识别后的返回结果将放在 hwrRecogResult 结构体中。
随后,我们打印结果:
这里我们打印出了一次识别结果的多个候选内容。注意,我们的输出字符串内容都统一为 UTF8编码,因此在某些平台下输出可能需要转码操作,这里不做展示。
最后我们释放识别结果所占用的内存:
这样,就完成了一次识别操作。在一个识别会话中,可以重复进行多次识别操作。
不再需要使用某个识别会话后,需要关闭识别会话。
如果所有的识别会话都已关闭,而且不需要再使用HWR能力了,我们可以终止HWR能力
最后,我们终止灵云系统。