搭建环境 - Android

1. 兼容性

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

2. 开发环境搭建

开发者可以自行选择Android开发环境,下面主要是针对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开发环境的搭建,更多Android了解请参考SDK的开发指导文档。

3. 引入SDK文件

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

1) 在工程中创建libs文件夹,将相应的jar文件拷贝到libs根目录下,将相应的so文件拷贝到libs\armeabi(或libs\armeabi-v7a)目录下。

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

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

3.1 ASR能力

jar包文件

  • hcicloud-3.9.jar

so文件

  • 必选模块
  • libcurl.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
  • V4本地识别
  • libhci_asr_local_v4_recog.so

本地资源文件:

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

使用ASR录音机,无需增加其它文件。

3.2 TTS能力

jar包文件

  • hcicloud-3.9.jar

so文件

  • 必选模块
  • libcurl.so
  • libhci_sys.so
  • libhci_sys_jni.so
  • libhci_tts.so
  • libhci_tts_jni.so
  • 云端合成
  • libhci_tts_cloud_synth.so
  • libjtspeex.so 或者 libjtopus.so (根据所使用的编解码格式进行选择)
  • 本地非V6合成
  • libhci_tts_local_synth.so
  • 本地V6合成
  • libhci_tts_local_v6_synth.so
  • libhci_tts_local_v6-v5_synth.so(低端机适配版本)

本地资源文件:

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

使用TTS播放器,无需增加其它文件。

3.3 HWR能力

jar包文件

  • hcicloud-3.9.jar

so文件

  • 必选模块
  • libcurl.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.4 OCR能力

jar包文件

  • hcicloud-3.9.jar

so文件

  • 必选模块
  • libjtz.so
  • libcurl.so
  • libhci_sys.so
  • libhci_sys_jni.so
  • libhci_ocr.so
  • libhci_ocr_jni.so
  • 云端识别
  • libhci_ocr_cloud_recog.so
  • 本地识别
  • libhci_ocr_local_recog.so

本地资源文件:

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

3.5 MT能力

jar包文件

  • hcicloud-3.9.jar

so文件

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

3.6 NLU能力

jar包文件

  • hcicloud-3.9.jar

so文件

  • 必选模块
  • libcurl.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.7 KB能力

jar包文件

  • hcicloud-3.9.jar

so文件

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

3.8 VPR能力

jar包文件

  • hcicloud-3.9.jar

so文件

  • 必选模块
  • libcurl.so
  • libhci_sys.so
  • libhci_sys_jni.so
  • libhci_vpr.so
  • libhci_vpr_jni.so
  • 云端识别
  • libhci_vpr_cloud_recog.so
  • 本地识别
  • libhci_vpr_local_recog.so

3.9 注意

  • 如果能确认终端支持硬浮点 (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文件中添加如下权限:

        <!—如果使用录音机API时,需要RECORD_AUDIO权限,否则不需要 -->
        <uses-permission android:name="android.permission.RECORD_AUDIO" />
        <!—通常需要设置一些sd卡路径(例如日志路径)为可写,因此需要能够写外部存储 -->
        <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
        <!—以下访问网络的权限均需要打开-->
        <uses-permission android:name="android.permission.INTERNET" />
        <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
        <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
        <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
        <uses-permission android:name="android.permission.READ_PHONE_STATE"/>
        <!—以下访问权限可选-->
        <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/> 
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>

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就会按照特殊的命名方式来读取这些文件。