接入科大讯飞语音识别SDK,将整个识别和处理逻辑放在了Service里处理,识别到唤醒操作的时候要给Activity发送消息告诉他更新UI操作。
我的实现是使用BroaReceiver实现的。
1 在Activity里新建一个广播内部类
public class AIUIBroadcast extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if (action==ACTION_AIUI_UPDATE){
//更新UI的操作
showAIUIImg();
loadImg(aiuiImg);
}else if(action==ACTION_AIUI_HIDE){
//更新UI的操作
hideAIUIImg();
}
}
}
在Activity里进行广播的声明
public static final String ACTION_AIUI_UPDATE="action.update";
public static final String ACTION_AIUI_HIDE="action.hide";
public AIUIBroadcast broadcast;
在Activity初始化(onCreate)的时候,进行注册广播
//注册广播实例
IntentFilter intentFilter=new IntentFilter();
intentFilter.addAction(ACTION_AIUI_UPDATE);
intentFilter.addAction(ACTION_AIUI_HIDE);
broadcast=new AIUIBroadcast();
registerReceiver(broadcast,intentFilter);
2 Service里进行广播的发送
//声明intent
Intent intentBroad;
//初始化intent
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
intentBroad=new Intent();
return Service.START_STICKY;
}
//在服务里对应的位置发送广播消息
intentBroad.setAction(MainActivity2.ACTION_AIUI_HIDE);
sendBroadcast(intentBroad);
intentBroad.setAction(MainActivity2.ACTION_AIUI_UPDATE);
sendBroadcast(intentBroad);