|
|
|
@ -5,6 +5,7 @@ import android.app.ActivityManager; |
|
|
|
import android.content.Context; |
|
|
|
import android.content.Intent; |
|
|
|
import android.net.Uri; |
|
|
|
import android.os.Build; |
|
|
|
import android.os.Bundle; |
|
|
|
import android.os.Debug; |
|
|
|
import android.os.Handler; |
|
|
|
@ -26,18 +27,17 @@ import android.webkit.WebViewClient; |
|
|
|
import androidx.annotation.NonNull; |
|
|
|
import androidx.databinding.DataBindingUtil; |
|
|
|
import androidx.recyclerview.widget.GridLayoutManager; |
|
|
|
|
|
|
|
import com.aispeech.AIError; |
|
|
|
import com.aispeech.AIResult; |
|
|
|
import com.aispeech.common.AIConstant; |
|
|
|
import com.aispeech.common.JSONResultParser; |
|
|
|
import com.aispeech.export.config.AICloudASRConfig; |
|
|
|
import com.aispeech.export.engines2.AICloudASREngine; |
|
|
|
import com.aispeech.export.intent.AICloudASRIntent; |
|
|
|
import com.aispeech.export.listeners.AIASRListener; |
|
|
|
import com.alibaba.android.arouter.facade.annotation.Route; |
|
|
|
import com.alibaba.android.arouter.launcher.ARouter; |
|
|
|
import com.google.gson.Gson; |
|
|
|
import com.iflytek.cloud.ErrorCode; |
|
|
|
import com.iflytek.cloud.InitListener; |
|
|
|
import com.iflytek.cloud.RecognizerListener; |
|
|
|
import com.iflytek.cloud.RecognizerResult; |
|
|
|
import com.iflytek.cloud.SpeechConstant; |
|
|
|
import com.iflytek.cloud.SpeechError; |
|
|
|
import com.iflytek.cloud.SpeechRecognizer; |
|
|
|
import com.iflytek.cloud.SpeechUtility; |
|
|
|
|
|
|
|
import com.shockman.sm.vendor.IHttp; |
|
|
|
import com.shockman.sm.vendor.SmUtils; |
|
|
|
import com.shockman.sm.vendor.TargetVo; |
|
|
|
@ -49,6 +49,7 @@ import java.io.IOException; |
|
|
|
import java.io.InputStream; |
|
|
|
import java.text.SimpleDateFormat; |
|
|
|
import java.util.List; |
|
|
|
import java.util.Locale; |
|
|
|
import java.util.Scanner; |
|
|
|
import java.util.concurrent.Executors; |
|
|
|
import java.util.regex.Matcher; |
|
|
|
@ -78,6 +79,7 @@ import qianmu.container.util.KeyboardUtil; |
|
|
|
import qianmu.container.util.LoggerUtil; |
|
|
|
import qianmu.container.util.SignWayUtil; |
|
|
|
import qianmu.container.util.StringUtil; |
|
|
|
import qianmu.container.util.TTSUtil; |
|
|
|
import qianmu.container.util.ToastUtils; |
|
|
|
|
|
|
|
import static qianmu.container.service.ContainerService.initFirstTime; |
|
|
|
@ -93,20 +95,20 @@ public class WebViewActivity extends BaseActivity { |
|
|
|
static final int TYPE_START_SERVER = 4;//重新启动web服务
|
|
|
|
static final int TYPE_SHENG_HTML_MAG = 5;//返回接口请求值给h5
|
|
|
|
static String HtmlUrl = "http://127.0.0.1:8080/index.html";//webServer服务地址
|
|
|
|
String vocMsg = "";//语音内容
|
|
|
|
// 语音听写对象
|
|
|
|
private SpeechRecognizer mIat; |
|
|
|
int time = 0; |
|
|
|
String interfaceRequestData=""; |
|
|
|
// 语音听写对象
|
|
|
|
private AICloudASREngine mEngine; |
|
|
|
private AICloudASRIntent aiCloudASRIntent; |
|
|
|
private TTSUtil ttsUtil; |
|
|
|
private String oldString=""; |
|
|
|
|
|
|
|
Handler handler = new Handler() { |
|
|
|
@SuppressLint("HandlerLeak") |
|
|
|
@Override |
|
|
|
public void handleMessage(@NonNull Message msg) { |
|
|
|
super.handleMessage(msg); |
|
|
|
|
|
|
|
switch (msg.what){ |
|
|
|
|
|
|
|
case TYPE_REFURBISH_WEBVIEW://刷新webview
|
|
|
|
try { |
|
|
|
binding.web.clearCache(true); |
|
|
|
@ -115,12 +117,9 @@ public class WebViewActivity extends BaseActivity { |
|
|
|
}catch (Exception e){ |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
break; |
|
|
|
|
|
|
|
case TYPE_GO_SAVESCREEN://导视通知跳转屏保
|
|
|
|
|
|
|
|
try { |
|
|
|
initFirstTime(); |
|
|
|
if (!ScreenSaverData.isProgramPlay()) return; |
|
|
|
@ -142,13 +141,7 @@ public class WebViewActivity extends BaseActivity { |
|
|
|
removeMessages(TYPE_HINT_PASSWORD); |
|
|
|
} |
|
|
|
time++; |
|
|
|
try { |
|
|
|
|
|
|
|
}catch (Exception e){ |
|
|
|
|
|
|
|
} |
|
|
|
break; |
|
|
|
|
|
|
|
case TYPE_START_SERVER: |
|
|
|
removeMessages(TYPE_REFURBISH_WEBVIEW); |
|
|
|
sendEmptyMessageDelayed(TYPE_REFURBISH_WEBVIEW,2000); |
|
|
|
@ -172,8 +165,11 @@ public class WebViewActivity extends BaseActivity { |
|
|
|
binding = DataBindingUtil.setContentView(this, R.layout.activity_webview); |
|
|
|
//设置密码
|
|
|
|
initPass(); |
|
|
|
//初始化科大讯飞
|
|
|
|
initKDXF(); |
|
|
|
if("sbc".equals(Constant.TTSHome)){ |
|
|
|
initASR(); |
|
|
|
ttsUtil = new TTSUtil(); |
|
|
|
ttsUtil.initTts(); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
@ -192,36 +188,22 @@ public class WebViewActivity extends BaseActivity { |
|
|
|
webSettings.setLoadsImagesAutomatically(true); |
|
|
|
webSettings.setDefaultTextEncodingName("utf-8"); |
|
|
|
webSettings.setUserAgentString(""); |
|
|
|
//加载web
|
|
|
|
currRoute = Constant.ROUTE_WEB_VIEW; |
|
|
|
loadH5Url(getIntent().getBooleanExtra(Constant.KEY_LOAD_H5_URL, false)); |
|
|
|
//加载语音
|
|
|
|
initVoice(); |
|
|
|
} |
|
|
|
webSettings.setMediaPlaybackRequiresUserGesture(false); // 允许自动播放
|
|
|
|
|
|
|
|
//初始化科大讯飞
|
|
|
|
private void initKDXF(){ |
|
|
|
try { |
|
|
|
KdxfBean kdxf = H5Data.getKdxf(); |
|
|
|
if(kdxf.getData()==null || kdxf.getData().getDeployType()==null || kdxf.getData().getDeployType().isEmpty() || kdxf.getData().getDeployType().toLowerCase().equals("saas")){ |
|
|
|
SpeechUtility.createUtility(this, SpeechConstant.APPID +"=5c2055f8"); |
|
|
|
}else { |
|
|
|
SpeechUtility.createUtility(this, SpeechConstant.APPID + "=5c2055f8" + "," + "net_type=custom, proxy_ip="+kdxf.getData().getXfyunIp()+", proxy_port="+kdxf.getData().getXfyunPort()); |
|
|
|
} |
|
|
|
}catch (Throwable t) { |
|
|
|
LoggerUtil.e("初始化语音", StringUtil.getThrowableStr(t)); |
|
|
|
// 适配HTTPS/HTTP混合内容
|
|
|
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { |
|
|
|
webSettings.setMixedContentMode(WebSettings.MIXED_CONTENT_COMPATIBILITY_MODE); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
//初始化语音
|
|
|
|
private void initVoice(){ |
|
|
|
mIat = SpeechRecognizer.createRecognizer(this, mInitListener); |
|
|
|
//加载web
|
|
|
|
currRoute = Constant.ROUTE_WEB_VIEW; |
|
|
|
loadH5Url(getIntent().getBooleanExtra(Constant.KEY_LOAD_H5_URL, false)); |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
protected void setListener() { |
|
|
|
binding.web.setWebViewClient(new WebViewClient() { |
|
|
|
// @Override
|
|
|
|
// @Override
|
|
|
|
// public WebResourceResponse shouldInterceptRequest(WebView view, WebResourceRequest request) {
|
|
|
|
// Uri uri = request.getUrl();
|
|
|
|
// if (uri.toString().endsWith(".js")) {
|
|
|
|
@ -296,6 +278,7 @@ public class WebViewActivity extends BaseActivity { |
|
|
|
} |
|
|
|
binding.layoutPass.setVisibility(View.GONE); |
|
|
|
ARouter.getInstance().build(Constant.ROUTE_DEVICE_INFO).withBoolean(Constant.INPUT_PASSWORD, false).navigation(); |
|
|
|
finish(); |
|
|
|
}else { |
|
|
|
binding.tvPass.setText(binding.tvPass.getText().toString()+position); |
|
|
|
} |
|
|
|
@ -339,11 +322,6 @@ public class WebViewActivity extends BaseActivity { |
|
|
|
protected void onDestroy() { |
|
|
|
super.onDestroy(); |
|
|
|
LoggerUtil.e(TAG, "onDestroy()"); |
|
|
|
if (mIat != null) { |
|
|
|
// 退出时释放连接
|
|
|
|
mIat.cancel(); |
|
|
|
mIat.destroy(); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
private void loadH5Url(boolean loadUrl) { |
|
|
|
@ -408,28 +386,43 @@ public class WebViewActivity extends BaseActivity { |
|
|
|
|
|
|
|
// h5调用android:开始识别语音
|
|
|
|
@JavascriptInterface |
|
|
|
public void startVoice() { |
|
|
|
LoggerUtil.e(TAG,"JS调用了Android的方法:startVoice()"); |
|
|
|
mIat.startListening(mRecognizerListener); |
|
|
|
public void startRecord() { |
|
|
|
LoggerUtil.e(TAG,"JS调用了Android的方法:startRecord()"); |
|
|
|
if("sbc".equals(Constant.TTSHome)){ |
|
|
|
ttsUtil.stopTTs(); |
|
|
|
stopAsr(); |
|
|
|
if(mEngine == null){ |
|
|
|
LoggerUtil.d(TAG, "未初始化"); |
|
|
|
initASR(); |
|
|
|
} |
|
|
|
mEngine.start(aiCloudASRIntent); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
// h5调用android:结束识别语音
|
|
|
|
@JavascriptInterface |
|
|
|
public void stopVoice() { |
|
|
|
public void stopRecord() { |
|
|
|
LoggerUtil.e(TAG,"JS调用了Android的方法:stopVoice()"); |
|
|
|
|
|
|
|
if("sbc".equals(Constant.TTSHome)){ |
|
|
|
stopAsr(); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
// h5调用android:传入要播报语音
|
|
|
|
@JavascriptInterface |
|
|
|
public void TTS(String content) { |
|
|
|
LoggerUtil.e(TAG,"JS调用了Android的方法:TTS()"); |
|
|
|
|
|
|
|
public void startTTS(String content) { |
|
|
|
LoggerUtil.e(TAG,"JS调用了Android的方法:startTTS()"); |
|
|
|
if("sbc".equals(Constant.TTSHome)){ |
|
|
|
ttsUtil.startTTs(content.toLowerCase(Locale.ENGLISH)); |
|
|
|
} |
|
|
|
} |
|
|
|
// h5调用android:停止语音播报播报语音
|
|
|
|
@JavascriptInterface |
|
|
|
public void TTSStop() { |
|
|
|
LoggerUtil.e(TAG,"JS调用了Android的方法:TTSStop()"); |
|
|
|
public void stopTTS() { |
|
|
|
LoggerUtil.e(TAG,"JS调用了Android的方法:stopTTS()"); |
|
|
|
if("sbc".equals(Constant.TTSHome)){ |
|
|
|
ttsUtil.stopTTs(); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
// h5调用android:新版指路机传入的数据
|
|
|
|
@ -508,10 +501,15 @@ public class WebViewActivity extends BaseActivity { |
|
|
|
/** |
|
|
|
* android调用js:传送识别语音内容 |
|
|
|
* */ |
|
|
|
public void voiceContent(String msg){ |
|
|
|
if(binding.web!=null){ |
|
|
|
binding.web.loadUrl(StringUtil.strSplice("javascript:voiceContent("+ msg +");")); |
|
|
|
LoggerUtil.e(TAG,"android调用js方法:voiceContent(),语音内容:"+msg); |
|
|
|
public void voiceContent(String msg) { |
|
|
|
if (binding.web != null) { |
|
|
|
LoggerUtil.e(TAG, "android调用js方法:giveAskText(),语音内容:" + msg); |
|
|
|
runOnUiThread(new Runnable() { |
|
|
|
@Override |
|
|
|
public void run() { |
|
|
|
binding.web.loadUrl(StringUtil.strSplice("javascript:window.giveAskText('" + msg + "');")); |
|
|
|
} |
|
|
|
}); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
@ -521,97 +519,9 @@ public class WebViewActivity extends BaseActivity { |
|
|
|
public void getHandWriting(String msg){ |
|
|
|
if(binding.web!=null){ |
|
|
|
binding.web.loadUrl(StringUtil.strSplice("javascript:handWriting("+ msg +");")); |
|
|
|
// LoggerUtil.e(TAG,"android调用js方法:getHandWriting(),接口请求数据:"+msg);
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* 初始化监听器。 |
|
|
|
*/ |
|
|
|
private InitListener mInitListener = new InitListener() { |
|
|
|
|
|
|
|
@Override |
|
|
|
public void onInit(int code) { |
|
|
|
|
|
|
|
LoggerUtil.e(TAG, "语音初始化"+"SpeechRecognizer init() code = " + code); |
|
|
|
if (code == ErrorCode.SUCCESS) { |
|
|
|
mIat.setParameter(SpeechConstant.CLOUD_GRAMMAR, null); //设置语法ID和 SUBJECT 为空,以免因之前有语法调用而设置了此参数;或直接清空所有参数,具体可参考 DEMO 的示例。
|
|
|
|
mIat.setParameter(SpeechConstant.SUBJECT, null); |
|
|
|
mIat.setParameter(SpeechConstant.RESULT_TYPE, "plain"); //设置返回结果格式,目前支持json,xml以及plain 三种格式,其中plain为纯听写文本内容
|
|
|
|
mIat.setParameter(SpeechConstant.ENGINE_TYPE, SpeechConstant.TYPE_CLOUD); //此处engineType为“cloud”
|
|
|
|
mIat.setParameter(SpeechConstant.LANGUAGE, "zh_cn"); //设置语音输入语言,zh_cn为简体中文
|
|
|
|
// mIat.setParameter(SpeechConstant.LANGUAGE, "en_us"); //设置语音输入语言,zh_cn为简体中文
|
|
|
|
mIat.setParameter(SpeechConstant.ACCENT, "mandarin"); //设置结果返回语言
|
|
|
|
mIat.setParameter(SpeechConstant.VAD_BOS, "4000"); //取值范围{1000~10000} 设置语音前端点:静音超时时间,单位ms,即用户多长时间不说话则当做超时处理
|
|
|
|
mIat.setParameter(SpeechConstant.VAD_EOS, "1000"); //自动停止录音,范围{0~10000} 设置语音后端点:后端点静音检测时间,单位ms,即用户停止说话多长时间内即认为不再输入,
|
|
|
|
mIat.setParameter(SpeechConstant.ASR_PTT, "0"); //设置标点符号,设置为"0"返回结果无标点,设置为"1"返回结果有标点
|
|
|
|
} |
|
|
|
} |
|
|
|
}; |
|
|
|
|
|
|
|
/** |
|
|
|
* 听写监听器。 |
|
|
|
*/ |
|
|
|
private RecognizerListener mRecognizerListener = new RecognizerListener() { |
|
|
|
|
|
|
|
@Override |
|
|
|
public void onBeginOfSpeech() { |
|
|
|
// 此回调表示:sdk内部录音机已经准备好了,用户可以开始语音输入
|
|
|
|
Log.e(TAG,"开始说话"); |
|
|
|
vocMsg=""; |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
public void onError(SpeechError error) { |
|
|
|
// Tips:
|
|
|
|
// 错误码:10118(您没有说话),可能是录音机权限被禁,需要提示用户打开应用的录音权限。
|
|
|
|
LoggerUtil.e(TAG, "onError " + error.getPlainDescription(true)); |
|
|
|
Vocbean vocbean = new Vocbean(); |
|
|
|
vocbean.setCode(error.getErrorCode()+""); |
|
|
|
vocbean.setMsg(""); |
|
|
|
vocMsg=new Gson().toJson(vocbean); |
|
|
|
voiceContent(vocMsg); |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
public void onEndOfSpeech() { |
|
|
|
// 此回调表示:检测到了语音的尾端点,已经进入识别过程,不再接受语音输入
|
|
|
|
LoggerUtil.e(TAG,"结束说话"); |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
public void onResult(RecognizerResult results, boolean isLast) { |
|
|
|
Log.e(TAG, results.getResultString()); |
|
|
|
|
|
|
|
if(!results.getResultString().isEmpty()){ |
|
|
|
Vocbean vocbean = new Vocbean(); |
|
|
|
vocbean.setCode("200"); |
|
|
|
vocbean.setMsg(results.getResultString()); |
|
|
|
vocMsg= new Gson().toJson(vocbean); |
|
|
|
voiceContent(vocMsg); |
|
|
|
} |
|
|
|
if (isLast) { |
|
|
|
Log.d(TAG, "onResult 结束"); |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
public void onVolumeChanged(int volume, byte[] data) { |
|
|
|
// Log.e(TAG,"当前正在说话,音量大小 = " + volume + " 返回音频数据 = " + data.length);
|
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
public void onEvent(int eventType, int arg1, int arg2, Bundle obj) { |
|
|
|
// 以下代码用于获取与云端的会话id,当业务出错时将会话id提供给技术支持人员,可用于查询会话日志,定位出错原因
|
|
|
|
// 若使用本地能力,会话id为null
|
|
|
|
// if (SpeechEvent.EVENT_SESSION_ID == eventType) {
|
|
|
|
// String sid = obj.getString(SpeechEvent.KEY_EVENT_SESSION_ID);
|
|
|
|
// Log.d(TAG, "session id =" + sid);
|
|
|
|
// }
|
|
|
|
} |
|
|
|
}; |
|
|
|
|
|
|
|
/** |
|
|
|
* 调用手臂方法 |
|
|
|
* */ |
|
|
|
@ -678,11 +588,131 @@ public class WebViewActivity extends BaseActivity { |
|
|
|
|
|
|
|
} |
|
|
|
break; |
|
|
|
|
|
|
|
case Constant.VOID_STOP: |
|
|
|
// TTS播放完成
|
|
|
|
//changeVideo("bg");
|
|
|
|
break; |
|
|
|
case Constant.ACTION_UPDATE_PROG2://后台下发节目通知,重置导视倒计时。
|
|
|
|
LoggerUtil.e(TAG,"重启导视倒计时"); |
|
|
|
leaveScreenSave(); |
|
|
|
break; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
//--------
|
|
|
|
private void initASR(){ |
|
|
|
if(mEngine == null){ |
|
|
|
AICloudASRConfig config = new AICloudASRConfig(); |
|
|
|
config.setLocalVadEnable(true); |
|
|
|
config.setVadResource("vad_aihome_v0.11.bin"); |
|
|
|
mEngine = AICloudASREngine.createInstance(); |
|
|
|
aiCloudASRIntent = new AICloudASRIntent(); |
|
|
|
aiCloudASRIntent.setEnablePunctuation(true); |
|
|
|
aiCloudASRIntent.setRealback(true);//打开实时反馈功能
|
|
|
|
aiCloudASRIntent.setResourceType("aihome"); |
|
|
|
aiCloudASRIntent.setEnableNumberConvert(true);//设置启用识别结果汉字数字转阿拉伯数字功能
|
|
|
|
aiCloudASRIntent.setWaitingTimeout(30000); //设置等待识别结果超时时长,默认5000ms
|
|
|
|
aiCloudASRIntent.setNoSpeechTimeOut(10000); |
|
|
|
aiCloudASRIntent.setPauseTime(2000); |
|
|
|
mEngine.init(config, new AIASRListenerImpl()); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
private class AIASRListenerImpl implements AIASRListener { |
|
|
|
|
|
|
|
public void onError(AIError error) { |
|
|
|
LoggerUtil.e("ASRInit: ",error.getMessage()); |
|
|
|
// 在非主线程中需要调用 WebView 方法时
|
|
|
|
runOnUiThread(new Runnable() { |
|
|
|
@Override |
|
|
|
public void run() { |
|
|
|
binding.web.evaluateJavascript("javascript: window.youAskOver('');", null); |
|
|
|
} |
|
|
|
}); |
|
|
|
stopAsr(); |
|
|
|
} |
|
|
|
|
|
|
|
public void onResults(AIResult results) { |
|
|
|
LoggerUtil.e("ASRInit: ", String.valueOf(results.isLast())); |
|
|
|
if (results.getResultType() == AIConstant.AIENGINE_MESSAGE_TYPE_JSON) { |
|
|
|
JSONResultParser parser = new JSONResultParser((String) results.getResultObject()); |
|
|
|
if("".equals(parser.getVar()) && !"".equals(parser.getText())){ |
|
|
|
oldString = StringUtil.strSplice(oldString,parser.getText()); |
|
|
|
} |
|
|
|
if(!"".equals(parser.getVar())){ |
|
|
|
voiceContent( StringUtil.strSplice(oldString,parser.getVar())); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
public void onInit(int status) { |
|
|
|
if (status == AIConstant.OPT_SUCCESS) { |
|
|
|
LoggerUtil.e("ASRInit: ","初始化成功!"); |
|
|
|
} else { |
|
|
|
LoggerUtil.e("ASRInit: ","初始化失败!code:" + status); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
public void onBeginningOfSpeech() { |
|
|
|
//本地vad打开时,才会执行
|
|
|
|
oldString=""; |
|
|
|
LoggerUtil.e("ASRInit: ","onBeginningOfSpeech"); |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
public void onNotOneShot() { |
|
|
|
//do nothing
|
|
|
|
LoggerUtil.e("ASRInit: ","onNotOneShot"); |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
public void onEndOfSpeech() { |
|
|
|
//本地vad打开时,才会执行
|
|
|
|
stopAsr(); |
|
|
|
runOnUiThread(new Runnable() { |
|
|
|
@Override |
|
|
|
public void run() { |
|
|
|
binding.web.evaluateJavascript("javascript: window.youAskOver('');", null); |
|
|
|
} |
|
|
|
}); |
|
|
|
LoggerUtil.e("ASRInit: ","onEndOfSpeech"); |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
public void onReadyForSpeech() { |
|
|
|
oldString=""; |
|
|
|
LoggerUtil.e("ASRInit: ","onReadyForSpeech"); |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
public void onResultDataReceived(byte[] buffer, int size, int wakeupType) { |
|
|
|
LoggerUtil.e("ASRInit: ","onReadyForSpeech "+String.valueOf(size)); |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
public void onRmsChanged(float rmsdB) { |
|
|
|
LoggerUtil.e("ASRInit: ", "" + rmsdB); |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
public void onResultDataReceived(byte[] buffer, int size) { |
|
|
|
//do nothing
|
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
public void onRawDataReceived(byte[] buffer, int size) { |
|
|
|
//do nothing
|
|
|
|
LoggerUtil.e("ASRInit: ","onRawDataReceived "+String.valueOf(size)); |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
private void stopAsr(){ |
|
|
|
if(mEngine != null){ |
|
|
|
mEngine.cancel(); |
|
|
|
mEngine.stop(); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|