Android原生SDK

Android sdk提供的接口封装Api主要是XiriOPManager,采用单例模式。其内部是通过AIDL和iFLYHOME OS进行通信。SDK会获取iFLYHOME OS集成方appid(读取 meta-data数据),发送给iFLYHOME OS。iFLYHOME OS进行应用鉴权,鉴权通过后,可以通过sdk使用iFLYHOME OS开放能力。

SDK API定义:

重要说明: 接口方法中 使用 @ApiLevel 注解标注的是该方法要求最低api等级(通过接口方法 getApiLevel() 可以获取到api等级),未标注的不需要比较ApiLevel。

所谓Api等级,是为了兼容iFLYHOME OS 版本新增功能区分,以便版本维护。

package com.iflytek.xiri3.open;
// import package
/**
 * 开放平台对外接口
 *
 * @author Marco
 */
public interface IOpManager {
    /**
     * 初始化sdk
     *
     * @param ctx,此处Context 必须是Activity,或者 Application
     * @param appId 集成方appId
     * @param callback 回调
     * @return 是否初始化成功
     */
    boolean init(@NonNull Context ctx,String appId, XiriOpCallback callback);

    /**
     * 获取api等级,init授权通过后调用
     * @return
     */
    int getApiLevel();

    /**
     * 反初始化
     */
    void unInit();

    /**
     * 判断是否已经连接语音服务
     *
     * @return
     */
    boolean isConnect();

    /**
     * 开始连接语音服务,在init之后调用有效
     */
    void doConnect();

    /**
     * 断开语音助手连接,需要在Init之后调用有效
     */
    void doDisconnect();

    /**
     * 获取评测管理
     *
     * @return
     */
    @Nullable
    IEvaluation getEvaMgr();

    /**
     * 获取语音播报(TTS)管理
     *
     * @return
     */
    @Nullable
    ITts getTtsMgr();

    /**
     * 获取开放文本(ASR)管理
     *
     * @return
     */
    @Nullable
    IText getTextMgr();

    /**
     * 获取开放语义(NLP)管理
     *
     * @return
     */
    @Nullable
    ISemantic getSemanticMgr();

    /**
     * 获取ui事件管理
     * @return
     */
    @Nullable
    IUiEvent getUiEventMgr();

    /**
     * 获取环境参数获取管理
     * @return
     */
    @Nullable
    IEnv getEnvMgr();

    /**
     * 获取反馈UI能力
     * @return
     */
    @Nullable
    IFeedback getFeedbackMgr();

    /**
     * 获取输入能力
     * @return
     */
    @Nullable
    IInput getInput();

}

初始化SDK

XiriOpCallback xiriOpCallback = new XiriOpCallback() {
        @Override
        public void onStatusChanged(int i) {
            String text = "";
            if (i == XiriOpCallback.AUTH_FAILED) {
                text = "授权失败";
            } else if (i == XiriOpCallback.STATUS_CONNECT) {
                text = "已连接";
            } else if (i == XiriOpCallback.STATUS_DISCONNECT) {
                text = "已断开";
            } else if (i == XiriOpCallback.INIT_FAILED) {
                text = "初始化失败";
            } else if (i == XiriOpCallback.AUTH_ING) {
                text = "授权中...";
            } else if (i == XiriOpCallback.AUTH_SUCCESS) {
                text = "授权成功";
            }
            Log.d("XiriOpCallback", text + ",code=" + i);
        }
    };

    XiriOPManager.getInstance().init(app, xiriOpCallback);

init方法包含两个参数:

  • 第一个参数类型为Context,但必须传Activity 或者 Application
  • 第二个参数类型为XiriOpCallback, 是SDK回调监听器

反初始化SDK

当不需要使用能力时,及时释放资源。再次需要使用能力时,需要重新调用初始化。

XiriOPManager.getInstance().unInit();

results matching ""

    No results matching ""