diff --git a/app/src/main/java/qianmu/container/activity/H5/WebViewActivity11.java b/app/src/main/java/qianmu/container/activity/H5/WebViewActivity11.java deleted file mode 100644 index 2c3d6b9..0000000 --- a/app/src/main/java/qianmu/container/activity/H5/WebViewActivity11.java +++ /dev/null @@ -1,800 +0,0 @@ -package qianmu.container.activity.H5; - -import android.animation.Animator; -import android.animation.AnimatorListenerAdapter; -import android.annotation.SuppressLint; -import android.app.ActivityManager; -import android.content.Context; -import android.content.Intent; -import android.graphics.Bitmap; -import android.media.MediaMetadataRetriever; -import android.media.MediaPlayer; -import android.media.SoundPool; -import android.net.Uri; -import android.os.Build; -import android.os.Bundle; -import android.os.Debug; -import android.os.Handler; -import android.os.Message; -import android.util.DisplayMetrics; -import android.util.Log; -import android.view.KeyEvent; -import android.view.View; -import android.view.ViewGroup; -import android.view.WindowManager; -import android.view.animation.AccelerateDecelerateInterpolator; -import android.view.animation.AlphaAnimation; -import android.view.animation.Animation; -import android.webkit.ConsoleMessage; -import android.webkit.JavascriptInterface; -import android.webkit.WebChromeClient; -import android.webkit.WebSettings; -import android.webkit.WebView; -import android.webkit.WebViewClient; -import android.widget.FrameLayout; -import android.widget.VideoView; - -import androidx.annotation.NonNull; -import androidx.core.view.ViewCompat; -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 org.greenrobot.eventbus.EventBus; -import org.json.JSONArray; -import org.json.JSONException; -import org.json.JSONObject; - -import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Locale; -import java.util.Map; - -import qianmu.container.R; -import qianmu.container.activity.BaseActivity; -import qianmu.container.adapter.KeyAdapter; -import qianmu.container.app.Constant; -import qianmu.container.app.MyApplication; -import qianmu.container.data.AppData; -import qianmu.container.data.DeviceData; -import qianmu.container.data.ScreenSaverData; -import qianmu.container.databinding.ActivityWebviewBinding; -import qianmu.container.entity.MessageEvent; -import qianmu.container.socket.SocketClient; -import qianmu.container.util.CalendarUtils; -import qianmu.container.util.DeviceUtil; -import qianmu.container.util.FileUtil; -import qianmu.container.util.KeyboardUtil; -import qianmu.container.util.LoggerUtil; -import qianmu.container.util.StringUtil; -import qianmu.container.util.TTSUtil; -import qianmu.container.util.ToastUtils; - -import static qianmu.container.service.ContainerService.initFirstTime; - -@Route(path = Constant.ROUTE_WEB_VIEW) -public class WebViewActivity extends BaseActivity { - - String TAG="WebViewActivity"; - ActivityWebviewBinding binding; - static final int TYPE_REFURBISH_WEBVIEW = 100;//刷新webview - static final int TYPE_GO_SAVESCREEN = 300;//导视通知跳转屏保 - static final int TYPE_HINT_PASSWORD = 3;//隐藏密码输入框 - static final int TYPE_START_SERVER = 4;//重新启动web服务 - static String HtmlUrl = "http://127.0.0.1:8080/index.html";//webServer服务地址 http://192.168.1.218:5173/ - //static String HtmlUrl = "http://192.168.0.109:5173/"; - int time = 0; - private VideoView currentVideo; //当前 - private VideoView proVideo; //上一个视频 - private boolean isChatMan=false; //是否是数字人项目 - private SoundPool soundPool; - private int soundId; - // 语音听写对象 - private AICloudASREngine mEngine; - private AICloudASRIntent aiCloudASRIntent; - private TTSUtil ttsUtil; - private String oldString=""; - private Map videoMap = new HashMap<>(); - private String videoAfter=""; - - 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); - binding.web.loadUrl(HtmlUrl); - Constant.isCoreService=true; - }catch (Exception e){ - } - break; - - case TYPE_GO_SAVESCREEN://导视通知跳转屏保 - try { - initFirstTime(); - if (!ScreenSaverData.isProgramPlay()) return; - - if (AppData.getFrontApp().equals(DeviceUtil.getPackageName())) { //信发处于系统前端时 显示屏保页面 - EventBus.getDefault().post(new MessageEvent(Constant.ACTION_SHOW_SPLASH)); - } else { //重新启动信发软件并打开屏保页面 - ARouter.getInstance().build(Constant.ROUTE_SCREEN_SAVER).navigation(); - } - } catch (Throwable t) { - LoggerUtil.e("WebViewActivity()", "导视通知跳转报错:"+StringUtil.getThrowableStr(t)); - } - break; - - case TYPE_HINT_PASSWORD: - sendEmptyMessageDelayed(TYPE_HINT_PASSWORD,1000); - if(time>=30){ - binding.layoutPass.setVisibility(View.GONE); - removeMessages(TYPE_HINT_PASSWORD); - } - time++; - break; - case TYPE_START_SERVER: - removeMessages(TYPE_REFURBISH_WEBVIEW); - sendEmptyMessageDelayed(TYPE_REFURBISH_WEBVIEW,2000); - startService(new Intent(WebViewActivity.this, CoreService.class)); - LoggerUtil.e("WebViewActivity","CoreService重启"); - break; - } - } - }; - - @Override - protected void initView() { - DeviceUtil.screenType(this); - getWindow().setFlags(WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM, WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM); - binding = DataBindingUtil.setContentView(this, R.layout.activity_webview); - - String jsonString = FileUtil.readLocalJsonForStorage(this, StringUtil.strSplice(Constant.CACHE_PATH3,"/JSON/getChatManVideo.json")); - if(!StringUtil.isEmpty(jsonString)){ //是AI - // 设置背景透明度 - binding.web.setBackgroundColor(Color.TRANSPARENT); - isChatMan = true; - try { - JSONObject jsonObject = new JSONObject(jsonString); - JSONArray dataArray = jsonObject.getJSONArray("data"); - for (int i = 0; i < dataArray.length(); i++) { - JSONObject videoObj = dataArray.getJSONObject(i).getJSONObject("content"); - String vType = videoObj.getString("type"); - Uri videoUri = Uri.parse(StringUtil.strSplice(Constant.CACHE_PATH3,videoObj.getJSONArray("url").getString(0))); - - VideoView video = new VideoView(this); - video.setId(View.generateViewId()); - FrameLayout.LayoutParams videoParams = new FrameLayout.LayoutParams( - ViewGroup.LayoutParams.MATCH_PARENT, // 宽度匹配父布局 - ViewGroup.LayoutParams.MATCH_PARENT // 高度匹配父布局 - ); - video.setLayoutParams(videoParams); - if("bg".equals(vType)){ - currentVideo = video; - proVideo = video; - video.setVisibility(View.VISIBLE); - }else{ - video.setVisibility(View.GONE); - } - binding.videoLayout.addView(video); - video.setVideoURI(videoUri); - if("chatback".equals(vType) || "chatto".equals(vType)){ - video.setOnPreparedListener(new MediaPlayer.OnPreparedListener() { - @Override - public void onPrepared(MediaPlayer mp) { - video.start(); - } - }); - video.setOnErrorListener(new MediaPlayer.OnErrorListener() { - @Override - public boolean onError(MediaPlayer mp, int what, int extra) { - return true; // 返回true表示已处理,不会弹出系统默认提示 - } - }); - video.setOnCompletionListener( mp -> changeVideo("bg")); - }else{ - video.setOnPreparedListener(new MediaPlayer.OnPreparedListener() { - @Override - public void onPrepared(MediaPlayer mp) { - mp.setLooping(true); // 可选:设置循环播 - video.start(); - } - }); - video.setOnErrorListener(new MediaPlayer.OnErrorListener() { - @Override - public boolean onError(MediaPlayer mp, int what, int extra) { - return true; - } - }); - } - videoMap.put(vType, video); - } - }catch (JSONException e){ - e.printStackTrace(); - } - } - - - //设置密码 - initPass(); - initASR(); - ttsUtil = new TTSUtil(); - ttsUtil.initTts(); - } - -// private void playMusic(){ -// soundId = soundPool.load(this, R.raw.musice, 1); -// soundPool.setOnLoadCompleteListener(new SoundPool.OnLoadCompleteListener() { -// @Override -// public void onLoadComplete(SoundPool soundPool, int sampleId, int status) { -// if (status == 0) { -// soundPool.play(sampleId, 0.2f, 0.2f, 1, -1, 1.0f); -// } -// } -// }); -// } - -// private void stopMusic(){ -// soundPool.stop(soundId); -// soundPool.unload(soundId); -// } - - //切换视频状态 - private void changeVideoAfter(){ - if("".equals(videoAfter)){ //新状态正常 - changeVideo("back"); - }else{ //新状态彩蛋 - changeVideo("to"); - } - } - - //切换视频 - public void changeVideo(String type){ - LoggerUtil.e("切换视频", type.trim()+" isChatMan: "+String.valueOf(isChatMan)); - if(!isChatMan){ - return; - } - VideoView nextVideo; - currentVideo.clearAnimation(); - proVideo.clearAnimation(); - - switch(type.trim()){ - case "back" : - nextVideo = videoMap.get("chatback"); - break; - case "to" : - nextVideo = videoMap.get("chatto"); - break; - case "bg" : - nextVideo = "".equals(videoAfter) ? videoMap.get("bg") : videoMap.get("bg1"); - break; - case "answer" : - nextVideo = "".equals(videoAfter) ? videoMap.get("speek") : videoMap.get("speek1"); - break; - case "hello" : - nextVideo = "".equals(videoAfter) ? videoMap.get("hello") : videoMap.get("hello1"); - break; - default: - nextVideo = "".equals(videoAfter) ? videoMap.get("bg") : videoMap.get("bg1"); - } - // 检查是否是重复切换 - if (nextVideo == currentVideo) { - return; - } - - proVideo = currentVideo; - proVideo.pause(); - proVideo.stopPlayback(); - // 开始淡出动画 - proVideo.animate() - .alpha(0.5f) - .setDuration(240) - .setListener(new AnimatorListenerAdapter() { - @Override - public void onAnimationEnd(Animator animation) { - super.onAnimationEnd(animation); - proVideo.setVisibility(View.GONE); - proVideo.setAlpha(1.0f); - } - @Override - public void onAnimationCancel(Animator animation) { - super.onAnimationCancel(animation); - proVideo.setVisibility(View.GONE); - proVideo.setAlpha(1.0f); - } - }) - .start(); - - nextVideo.setAlpha(0.3f); - nextVideo.setVisibility(View.VISIBLE); - nextVideo.start(); - currentVideo = nextVideo; - - // 开始淡入动画 - currentVideo.animate() - .alpha(1.0f) - .setDuration(300) - .setListener(new AnimatorListenerAdapter() { - @Override - public void onAnimationEnd(Animator animation) { - super.onAnimationEnd(animation); - currentVideo.seekTo(0); - currentVideo.start(); - currentVideo.setAlpha(1.0f); - } - @Override - public void onAnimationCancel(Animator animation) { - super.onAnimationCancel(animation); - currentVideo.seekTo(0); - currentVideo.start(); - currentVideo.setAlpha(1.0f); - } - }) - .start(); - } - - @Override - protected void setData() { - Log.e("WebViewActivity", "setData"); - WebSettings webSettings = binding.web.getSettings(); - webSettings.setJavaScriptEnabled(true); - webSettings.setDomStorageEnabled(true); - webSettings.setUseWideViewPort(true); - webSettings.setLoadWithOverviewMode(true); - webSettings.setSupportZoom(false); - webSettings.setBuiltInZoomControls(false); - webSettings.setDisplayZoomControls(false); - webSettings.setCacheMode(WebSettings.LOAD_NO_CACHE); - webSettings.setAllowFileAccess(true); - webSettings.setLoadsImagesAutomatically(true); - webSettings.setDefaultTextEncodingName("utf-8"); - webSettings.setUserAgentString(""); - webSettings.setMediaPlaybackRequiresUserGesture(false); // 允许自动播放 - - // 适配HTTPS/HTTP混合内容 - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { - webSettings.setMixedContentMode(WebSettings.MIXED_CONTENT_COMPATIBILITY_MODE); - } - - //加载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 - public boolean shouldOverrideUrlLoading(WebView view, String url) { - view.loadUrl(url); - return true; - } - - }); - binding.web.setOnLongClickListener((View v) -> { - LoggerUtil.e("OnLongClick", "用户长按了页面"); - return false; - }); - - binding.setting.setOnClickListener((view) -> { - - if (!MyApplication.addClickTimes()) return; - binding.layoutPass.setVisibility(View.VISIBLE); - time = 0; - handler.removeMessages(TYPE_HINT_PASSWORD); - handler.sendEmptyMessage(TYPE_HINT_PASSWORD); - binding.tvPass.setText(""); -// ARouter.getInstance().build(Constant.ROUTE_DEVICE_INFO).withBoolean(Constant.INPUT_PASSWORD, true).navigation(); - }); - } - - //密码输入框 - public void initPass(){ - GridLayoutManager gridLayoutManager = new GridLayoutManager(this, 5); - KeyAdapter keyAdapter = new KeyAdapter(this); - binding.recycKey.setLayoutManager(gridLayoutManager); - binding.recycKey.setAdapter(keyAdapter); - - keyAdapter.setOnitemClickLintener(new KeyAdapter.OnitemClick() { - @Override - public void onItemClick(String position) { - time = 0; - if(position.equals("清空")){ - binding.tvPass.setText(""); - }else if(position.equals("删除")){ - String s = binding.tvPass.getText().toString(); - if(s.length()>0){ - binding.tvPass.setText( s.substring(0,s.length()-1)); - }else { - binding.tvPass.setText(""); - } - }else if(position.equals("取消")){ - binding.layoutPass.setVisibility(View.GONE); - }else if(position.equals("确定")){ - SimpleDateFormat format = new SimpleDateFormat("ddMM"); - String pwd = format.format(System.currentTimeMillis());//当前日期当前月份 - StringBuilder sb = new StringBuilder(pwd); - String whatDay4 = CalendarUtils.getWhatDay4(System.currentTimeMillis()); - pwd = sb.insert(2, whatDay4).toString();//密码为日星期月6位数 - String inputPWD = binding.tvPass.getText().toString().trim();//输入的密码 - if (!pwd.equals(inputPWD)) { - ToastUtils.showToast("密码错误"); - return; - } - 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); - } - } - }); - } - - @Override - protected void onResume() { - super.onResume(); - leaveScreenSave(); - binding.layoutPass.setVisibility(View.GONE); - //判断web服务是否正常 - if(!Constant.isCoreService || !DeviceUtil.isServiceRunning( MyApplication.getInstance(),"CoreService")){ - LoggerUtil.e("WebViewActivity","CoreService被关闭"); - //开启本地web服务器 - stopService(new Intent(WebViewActivity.this, CoreService.class)); - handler.removeMessages(TYPE_START_SERVER); - handler.sendEmptyMessageDelayed(TYPE_START_SERVER,1000); - return; - } - } - - @Override - protected void onPause() { - super.onPause(); - KeyboardUtil.hideKeyboard(binding.getRoot()); - } - - @Override - protected void onStop() { - super.onStop(); - if(handler!=null){ - handler.removeMessages(TYPE_HINT_PASSWORD); - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - LoggerUtil.e(TAG, "onDestroy()"); - } - - private void loadH5Url(boolean loadUrl) { - if (!loadUrl) return; - String Url; - if(H5Data.getH5Url().isEmpty()){ - Url = HtmlUrl; - }else { - Url = H5Data.getH5Url(); - } - binding.web.clearCache(true); - binding.web.loadUrl(Url); - binding.web.setWebChromeClient(new WebChromeClient() { - - public boolean onConsoleMessage(ConsoleMessage cm) { - if(!cm.message().contains("THREE.WebGLRenderer:") && !cm.message().contains("Uncaught (in promise) AbortError")){ - LoggerUtil.e("WebView日志",cm.message()); - } - return super.onConsoleMessage(cm); - } - }); - binding.web.addJavascriptInterface(new AndroidtoJs(), "android"); - } - // JS 调用 android - public class AndroidtoJs extends Object { - // 回到屏保页面 - @JavascriptInterface - public void goScreenSave() { - LoggerUtil.e(TAG,"JS调用了Android的方法:goScreenSave()"); - if(handler!=null){ - handler.removeMessages(TYPE_GO_SAVESCREEN); - handler.sendEmptyMessage(TYPE_GO_SAVESCREEN); - } - } - // 获取是否有屏保数据 - @JavascriptInterface - public boolean hasProgram() { - boolean programPlay = ScreenSaverData.isProgramPlay(); - LoggerUtil.e(TAG,"JS调用了Android的方法:hasProgram():"+programPlay); - return programPlay; - } - // 获取后台地址 - @JavascriptInterface - public String getBaseAddress() { - LoggerUtil.e(TAG,"JS调用了Android的方法:getBaseAddress()"); - return Constant.getBaseAddress(); - } - // h5调用android:重启webView - @JavascriptInterface - public void restartWebView() { - LoggerUtil.e(TAG,"JS调用了Android的方法:restartWebView()"); - handler.removeMessages(TYPE_REFURBISH_WEBVIEW); - handler.sendEmptyMessageDelayed(TYPE_REFURBISH_WEBVIEW,3000); - } - // h5调用android:彩蛋 - @JavascriptInterface - public void changeVideoState(String txt) { - LoggerUtil.e(TAG,"JS调用了Android的方法:changeVideoState()"); - videoAfter = txt; - runOnUiThread(new Runnable() { - @Override - public void run() { - changeVideoAfter(); - } - }); - } - // h5调用android:开始识别语音 - @JavascriptInterface - public void startRecord() { - LoggerUtil.e(TAG,"JS调用了Android的方法:startRecord()"); - ttsUtil.stopTTs(); - stopAsr(); - if(mEngine == null){ - LoggerUtil.d(TAG, "未初始化"); - initASR(); - } - mEngine.start(aiCloudASRIntent); - runOnUiThread(new Runnable() { - @Override - public void run() { - changeVideo("bg"); - } - }); - } - // h5调用android:停止识别语音 - @JavascriptInterface - public void stopRecord() { - LoggerUtil.e(TAG,"JS调用了Android的方法:stopRecord()"); - stopAsr(); - } - // h5调用android:开始合成语音 - @JavascriptInterface - public void startTTS(String txt) { - LoggerUtil.e(TAG,"JS调用了Android的方法:startTTS()"); - ttsUtil.startTTs(txt.toLowerCase(Locale.ENGLISH)); - } - // h5调用android:停止合成语音 - @JavascriptInterface - public void stopTTS() { - LoggerUtil.e(TAG,"JS调用了Android的方法:stopTTS()"); - ttsUtil.stopTTs(); - runOnUiThread(new Runnable() { - @Override - public void run() { - changeVideo("bg"); - } - }); - } - @JavascriptInterface - public void stopTTS(String str) { - LoggerUtil.e(TAG,"JS调用了Android的方法:stopTTS()"); - ttsUtil.stopTTs(); - if("change".equals(str)){ - runOnUiThread(new Runnable() { - @Override - public void run() { - changeVideo("bg"); - } - }); - } - } - // h5调用android:播放指定视频 - @JavascriptInterface - public void playAudio(String str) { - LoggerUtil.e("JS调用了Android的方法:playAudio", str); - runOnUiThread(new Runnable() { - @Override - public void run() { - changeVideo(str); - } - }); - } - @JavascriptInterface - public void jxbData(String data) { - LoggerUtil.e(TAG,"JS调用了Android的方法:jxbData()"); - DeviceData.saveDeviceInfo(DeviceData.JXB_DATA,data); - } - } - - - /** - * 安卓调用h5方法通知进入导视 - * */ - public void leaveScreenSave(){ - if(binding.web!=null){ - binding.web.loadUrl(StringUtil.strSplice("javascript:leaveScreenSave();")); - } - } - - @Override - public void onMessageEvent(MessageEvent message) { - super.onMessageEvent(message); - switch (message.getCode()) { - case Constant.ACTION_UPDATE_WEBVIEW://刷新webView - String Url; - if(H5Data.getH5Url().isEmpty()){ - Url = HtmlUrl; - }else { - Url = H5Data.getH5Url(); - } - binding.web.clearCache(true); - binding.web.loadUrl(Url); - ToastUtils.showToast("应用更新成功"); - break; - - case Constant.ACTION_RESTART_CORESERVICE://重启导视服务 - try { - LoggerUtil.e(TAG,"重启导视服务"); - stopService(new Intent(WebViewActivity.this, CoreService.class)); - handler.removeMessages(TYPE_START_SERVER); - handler.sendEmptyMessageDelayed(TYPE_START_SERVER,1000); - }catch (Exception e){ - - } - break; - case Constant.VOID_STOP: - changeVideo("bg"); - binding.web.loadUrl(StringUtil.strSplice("javascript:ttsPlayOver();")); - break; - case Constant.ACTION_UPDATE_PROG2://后台下发节目通知,重置导视倒计时。 - LoggerUtil.e(TAG,"重启导视倒计时"); - leaveScreenSave(); - break; - } - } - - //-------- - private void initASR(){ - if(mEngine == null && MyApplication.getInstance().duiliteConfig){ - 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(Constant.asrModel); - 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: ","onError "+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: ", "onResults "+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: ","onResultDataReceived "+String.valueOf(size)); - } - - @Override - public void onRmsChanged(float rmsdB) { - LoggerUtil.e("ASRInit: ", "onRmsChanged " + 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)); - } - - } - - /** - * android调用js:传送识别语音内容 - */ - 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 + "');")); - } - }); - } - } - private void stopAsr(){ - if(mEngine != null){ - mEngine.cancel(); - mEngine.stop(); - } - } - -}