唤醒在SDK2.1.20正常使用,在2.2.20使用报错
参数设置情况:
public class WakeUpActivity extends Activity {private final String TAG = WakeUpActivity.class.getSimpleName();
private EventManager mWpEventManager;
private TextView textView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.wakeup);
textView = (TextView) findViewById(R.id.tv);
}
@Override
protected void onResume() {
super.onResume();
// 唤醒功能打开步骤
// 1) 创建唤醒事件管理器
mWpEventManager = EventManagerFactory.create(this, "wp");
// 2) 注册唤醒事件监听器
mWpEventManager.registerListener(new com.baidu.speech.EventListener() {
@Override
public void onEvent(String name, String params, byte[] data, int offset, int length) {
Log.d(TAG, String.format("event: name=%s, params=%s", name, params));
try {
JSONObject json = new JSONObject(params);
if ("wp.data".equals(name)) { // 每次唤醒成功, 将会回调name=wp.data的时间, 被激活的唤醒词在params的word字段
String word = json.getString("word");
Log.i(TAG, "唤醒成功, 唤醒词: " + word);
textView.append("唤醒成功, 唤醒词: " + word + "\r\n");
} else if ("wp.exit".equals(name)) {
Log.i(TAG, "唤醒已经停止: " + params + "\r\n");
textView.append("唤醒已经停止: " + params + "\r\n");
}
} catch (JSONException e) {
throw new AndroidRuntimeException(e);
}
}
});
// 3) 通知唤醒管理器, 启动唤醒功能
HashMap params = new HashMap();
params.put("kws-file", "assets:///WakeUp.bin"); // 设置唤醒资源, 唤醒资源请到 http://yuyin.baidu.com/wake#m4 来评估和导出
mWpEventManager.send("wp.start", new JSONObject(params).toString(), null, 0, 0);
textView.append("启动唤醒\r\n");
}
@Override
protected void onPause() {
super.onPause();
// 停止唤醒监听
mWpEventManager.send("wp.stop", null, null, 0, 0);
}
}
SDK版本号:2.2.20
代码或日志截图(上传截图能帮助您更快解决问题):
android.util.AndroidRuntimeException: org.json.JSONException: No value for word
at com.baidu.android.voicedemo.WakeUpActivity$1.onEvent(WakeUpActivity.java:60)
at com.baidu.speech.asr.EventManagerWp$1$1.run(EventManagerWp.java:41)
at android.os.Handler.handleCallback(Handler.java:808)
at android.os.Handler.dispatchMessage(Handler.java:103)
at android.os.Looper.loop(Looper.java:193)
at android.app.ActivityThread.main(ActivityThread.java:5331)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:825)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:641)
at dalvik.system.NativeStart.main(Native Method)
Caused by: org.json.JSONException: No value for word
at org.json.JSONObject.get(JSONObject.java:355)
at org.json.JSONObject.getString(JSONObject.java:515)
at com.baidu.android.voicedemo.WakeUpActivity$1.onEvent(WakeUpActivity.java:51)
at com.baidu.speech.asr.EventManagerWp$1$1.run(EventManagerWp.java:41)
at android.os.Handler.handleCallback(Handler.java:808)
at android.os.Handler.dispatchMessage(Handler.java:103)
at android.os.Looper.loop(Looper.java:193)
at android.app.ActivityThread.main(ActivityThread.java:5331)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:825)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:641)
at dalvik.system.NativeStart.main(Native Method)
您好,2.2.*版本的唤醒问题已经在解决中,暂请使用2.1.20版本,谢谢