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
* 调用时机:建议是Application中,应用到前台时调用,切记与unInit方法成对使用;
*
* @param ctx,此处Context 建议是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();