搭建环境 - Android

1. 兼容性

  • 支持Android 2.1 及以上系统。
  • 支持armeabi、armeabi-v7a、arm64-v8a、x86架构处理器。

armeabi(32位ARM设备):针对普通的arm v5 cpu,浮点运算使用软件浮点运算,用此创建的二进制代码将可以在所有 ARM* 设备上运行。 armeabi-v7a(32位ARM设备):针对有硬浮点运算或高级扩展功能的arm v7 cpu。用此创建的二进制代码性能有较大提升。 arm64-v8a(32/64位ARM设备):同时具备32位和64位两套架构,既能运行32位又能运行64位。需注意支持64位的CPU发挥64位性能受诸多因素影响,仅仅是支持64位运算的CPU不一定能带来性能上的提升。 x86(32位Intel设备):针对Intel x86架构的CPU。

处理器结构的信息可以通过执行以下adb命令查询得到: windows cmd->adb shell->cd /proc->cat cpuinfo 如果返回Processor : ARMv7a Processor rev **,说明是armeabi-v7a的设备 如果返回Processor : AArch64 Processor rev **,说明是arm64-v8a的设备

2. 开发环境搭建

开发者可以自行选择Android开发环境,下面是针对Eclipse和Android Studio开发环境下进行编写的。

①Eclipse开发环境搭建

1) 安装JDK
编者采用的版本是jdk1.6.0_20,开发者可以从以下Oracle 官网下载所需的版本:http://www.oracle.com/technetwork/java/javase/downloads/index.html

2) 安装Eclipse Java IDE
编者采用的版本是Eclipse3.4,开发者可以从以下官网下载所需的版本:http://www.eclipse.org/

3) 安装Android SDK
编者采用的版本是Android 2.2,开发者可以去从以下Android 官方网站下载所需的版本:http://developer.android.com/sdk/

4) 安装ADT插件
启动Eclipse后,点击Eclipse的 Help->soft update->find and install->search for new features to install->new remote site->name: https://dl-ssl.google.com/android/eclipse/,完成安装后重启Eclipse;

5) 安装Android DDMS和Android Development Tools

②Android Studio开发环境搭建

1) 安装JDK
编者采用的版本是jdk1.6.0_20,开发者可以从以下Oracle 官网下载所需的版本:http://www.oracle.com/technetwork/java/javase/downloads/index.html

2) 安装Android Studio
编者采用的版本是Android Studio 2.2.2.0,开发者可以从以下官网下载所需的版本:https://developer.android.com/

3. 引入SDK文件

①使用Eclipse开发

在开发应用前,需要将灵云SDK中的Jar包文件(.jar)和相应的动态运行库(.so)引入到工程中。

1) 在工程中创建libs文件夹,将相应的jar文件拷贝到libs根目录下,将so文件复制、粘贴到jniLibs/armeabi(或jniLibs/armeabi-v7a或jniLibs/arm64-v8a或jniLibs/x86)目录下。

2) 通过菜单 Project->Properties->Java Build Path->Libraries->Add JARS或ADD External JARS引入相应的Jar包。

②使用Android Studio开发

在开发应用前,需要将灵云SDK中的Jar包文件(.jar)和相应的动态运行库(.so)引入到工程中。

1) 在"src/main"目录中新建名为"jniLibs"的目录,将so文件复制、粘贴到jniLibs/armeabi(或jniLibs/armeabi-v7a或jniLibs/arm64-v8a或jniLibs/x86)目录下。

2) 将jar文件复制、粘贴到app的libs目录中,右键点击jar文件,并点击弹出菜单中的"Add As Library",将jar文件作为类库添加到项目中,选择指定的类库。

具体需要引入的文件和开发者所需要使用的能力有关。

3.1 ASR能力

jar包文件

  • hcicloud-5.0.jar

so文件

  • 必选模块
  • libstlport_shared.so
  • libhci_curl.so
  • libhci_sys.so
  • libhci_sys_jni.so
  • libhci_asr.so
  • libhci_asr_jni.so
  • 云端识别
  • libhci_asr_cloud_recog.so
  • libjtspeex.so 或者 libjtopus.so (根据所使用的编解码格式进行选择)
  • 本地语法识别
  • libhci_asr_local_recog.so
  • libiSpeakGrmDNNLite.so
  • 本地自由说识别
  • libhci_asr_local_ft_recog.so
  • libiSpeakDNNLite.so
  • 本地意图识别
  • libhci_nlu.so
  • libhci_nlu_local_recog.so
  • libiThinkDialog.so

本地资源文件:

  • 使用本地语音识别能力,需要相应的资源文件。具体可参照ASR能力描述进行选择。

使用ASR录音机,需要增加 jar包文件

  • hcicloud_recorder-5.0.jar

3.2 TTS能力

jar包文件

  • hcicloud-5.0.jar

so文件

  • 必选模块
  • libstlport_shared.so
  • libhci_curl.so
  • libhci_sys.so
  • libhci_sys_jni.so
  • libhci_tts.so
  • libhci_tts_jni.so
  • 云端合成
  • libhci_tts_cloud_synth.so
  • libjtspeex.so 或者 libjtopus.so (根据所使用的编解码格式进行选择)
  • 本地合成
  • libhci_tts_local_synth.so
  • 本地歌唱
  • libhci_tts_local_synth_sing.so

本地资源文件:

  • 使用本地语音合成能力,需要相应的资源文件。具体可参照TTS能力描述进行选择。

使用TTS播放器,需要增加 jar包文件

  • hcicloud_player-5.0.jar

3.3 灵云种子

灵云种子SDK的目录结构

目录、文件名称 说明
bin\ 灵云种子jar包
doc\ APIReference和开发指南
example\ 灵云种子SDK示例代码,演示使用方式和调用方式
libs\ 依赖的其他jar文件
libs\armeabi\ 灵云种子所需的so文件
imindLib\ 本地语法识别文件(需要联系捷通华声公司)

导入步骤

按照标准的应用创建方式,创建一个Android Application,最低Android版本为8(Android 2.2)。
  1. 复制libs目录中的所有jar文件到工程的libs\目录下;
  2. 复制libs\armeabi\目录中的所有so文件到工程的libs\armeabi\目录下;
  3. 复制imindLib中的文件到assets\根目录下。

3.4 HWR能力

jar包文件

  • hcicloud-5.0.jar

so文件

  • 必选模块
  • libstlport_shared.so
  • libhci_curl.so
  • libhci_sys.so
  • libhci_sys_jni.so
  • libhci_hwr.so
  • libhci_hwr_jni.so
  • 云端识别
  • libhci_hwr_cloud_recog.so
  • 本地识别
  • libhci_hwr_local_recog.so
  • 联想功能
  • libhci_hwr_associate.so
  • 拼音功能
  • libhci_hwr_pinyin.so
  • 笔形功能
  • libhci_hwr_penscript.so

本地资源文件:

  • 使用本地手写识别能力,需要相应的资源文件。具体可参照HWR能力描述进行选择。

3.5 OCR能力

jar包文件

  • hcicloud-5.0.jar

so文件

  • 必选模块
  • libstlport_shared.so
  • libjtz.so
  • libhci_curl.so
  • libhci_sys.so
  • libhci_sys_jni.so
  • libhci_ocr.so
  • libhci_ocr_jni.so
  • libopencv_core.so
  • libopencv_imgproc.so
  • 云端识别
  • libhci_ocr_cloud_recog.so
  • 本地识别
  • libhci_ocr_local_recog.so
  • 本地模板识别
  • libhci_ocr_local_recog_template.so
  • 本地名片识别
  • libhci_ocr_local_recog_bizcard.so
  • 本地银行卡识别
  • libhci_ocr_local_recog_bankcard.so

本地资源文件:

  • 使用本地光学字符识别能力,需要相应的资源文件。具体可参照OCR能力描述进行选择。

如果使用拍图器,需要增加 jar包文件

  • hcicloud_capture-5.0.jar

3.6 MT能力

jar包文件

  • hcicloud-3.9.jar

so文件

  • 必选模块
  • libhci_curl.so
  • libhci_sys.so
  • libhci_sys_jni.so
  • libhci_mt.so
  • libhci_mt_jni.so
  • 云端识别
  • libhci_mt_cloud_trans.so
  • 本地识别(暂不支持)

3.7 NLU能力

jar包文件

  • hcicloud-5.0.jar

so文件

  • 必选模块
  • libstlport_shared.so
  • libhci_curl.so
  • libhci_sys.so
  • libhci_sys_jni.so
  • libhci_nlu.so
  • libhci_nlu_jni.so
  • 云端识别
  • libhci_nlu_cloud_recog.so
  • 本地识别
  • libhci_nlu_local_recog.so

3.8 KB能力

jar包文件

  • hcicloud-5.0.jar

so文件

  • 必选模块
  • libstlport_shared.so
  • libhci_curl.so
  • libhci_sys.so
  • libhci_sys_jni.so
  • libhci_kb.so
  • libhci_kb_jni.so
  • 云端识别(暂不支持)
  • 本地识别
  • libhci_kb_local_recog.so

3.9 VPR能力

jar包文件

  • hcicloud-5.0.jar

so文件

  • 必选模块
  • libstlport_shared.so
  • libhci_curl.so
  • libhci_sys.so
  • libhci_sys_jni.so
  • libhci_vpr.so
  • libhci_vpr_jni.so
  • 云端识别
  • libhci_vpr_cloud_recog.so
  • libjtspeex.so 或者 libjtopus.so (根据所使用的编解码格式进行选择)
  • 本地识别
  • libhci_vpr_local_recog.so

3.10 FPR能力

jar包文件

  • hcicloud-5.0.jar

so文件

  • 必选模块
  • libstlport_shared.so
  • libhci_curl.so
  • libhci_sys.so
  • libhci_sys_jni.so
  • libhci_fpr.so
  • libhci_fpr_jni.so
  • 云端识别
  • libhci_fpr_cloud_recog.so
  • 本地识别
  • libhci_fpr_local_recog.so

3.11 AFR能力

jar包文件:

  • hcicloud-5.0.jar

so文件:

  • 必选模块
  • libhci_curl.so
  • libhci_sys.so
  • hci_sys_jni.so
  • hci_afr.so
  • hci_afr_jni.so
  • 云端识别
  • hci_afr_cloud_recog.so
  • 本地识别
  • hci_afr_local_recog.so

3.12 注意

  • 如果能确认终端支持硬浮点 (armv7a以上CPU)版本sdk,可以使用armeabi-v7a目录替代armeabi目录, 并拷贝SDK中armeabi-v7a目录下的.so文件,这样速度会更快。SDK的armeabi-v7a目录中不存在的so文件需从armeabi目录拷贝。
  • armeabi和armeabi-v7a两个目录也可以都存在,在apk包安装时会自动根据终端的CPU架构进行安装最合适的库, 但是这样会造成apk包较大。
  • libjtopus.so是opus编码库,libjtspeex.so是speex编码库,仅在使用云端ASR或者TTS时候用于音频压缩。 应用可以根据需要的编码方式(请参考音频编解码库),选择其中合适的编码库,这样可以减少应用包的大小.

4. 配置Manifest

在工程AndroidManifest.xml文件中添加如下权限:

        
        
        
        
        
        
        
        
        
        
        
        
    

5. 本地资源文件

当使用本地能力时,需要在本地存放资源文件。并在能力初始化时通过指定dataPath告知资源所在路径。

每种本地能力,所需要的资源文件并不相同,在实际使用时,可以只拷贝所使用能力对应的资源文件, 这样可以减少所占用的外部存储空间。具体每种本地能力所需要的本地资源文件,请参见能力列表。

本地资源文件的存放有如下两种方法。

5.1 存放在外部存储上

此种方式是将资源文件存放在外部存储上,在能力初始化时指定dataPath参数为资源文件的存放目录。 以/mnt/sdcard/HciCloudTtsPlayerExample/tts/data目录为例,其下存放了本地能力(tts.local.xiaokun)所需要的TTS资源文件:

        XiaoKun.voclib
        Letter_XiaoKun.voclib

开发者可以将这些库文件作为assets中的资源,并在程序启动时拷贝到外部存储上;也可以在发布时不带这些资源文件, 而是在运行时让用户下载到外部存储上。

如果外部存储发生故障(例如sd卡被拔出),则可能会影响对应本地能力的正常使用。

5.2 存放在内部存储上

为了便于应用的发布与管理,灵云SDK也支持将本地资源文件随应用安装在内部存储上, 但此种存放方法需要开发者满足以下要求,灵云SDK才能正常访问这些资源文件:

1) 对资源文件进行特殊命名。以本地能力(tts.local.xiaokun)所需要的TTS资源文件为例,以下示例了这种命名规则:

        libXiaoKun.voclib.so(在原文件名前加lib前缀与.so后缀)
        libLetter_XiaoKun.voclib.so(在原文件名前加lib前缀与.so后缀)

2) 将重新命名过的本地资源文件拷贝到libs根目录下。

3) 在能力初始化时,指定dataPath参数为 /data/data/appname/lib (appname为应用包的名称)

4) 在能力初始化时,指定fileFlag参数为android_so(默认为none)

所有需要的本地资源文件都需要按以上规则进行名字的改动,并拷贝到libs目录下。 通过这种方式,这些资源文件会被打包在APK中,并在安装时,被放在 /data/data/appname/lib 下。 通过指定fileFlag为android_so,灵云SDK就会按照特殊的命名方式来读取这些文件。