From dfa32e6b52c993e0cecda3520871c3c842f4b802 Mon Sep 17 00:00:00 2001 From: gaozl Date: Mon, 20 Oct 2025 10:50:06 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E6=8D=A2=E8=A3=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/build.gradle | 2 +- .../activity/H5/WebViewActivity.java | 182 +++++++++++++++--- .../java/qianmu/container/app/Constant.java | 1 - .../qianmu/container/app/MyApplication.java | 4 +- 4 files changed, 157 insertions(+), 32 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 2c6b420..809c0e4 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -10,7 +10,7 @@ android { minSdkVersion 22 targetSdkVersion 30 versionCode 6 - versionName "V2.0.7.30" + versionName "V2.0.7.31" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" consumerProguardFiles 'consumer-rules.pro' diff --git a/app/src/main/java/qianmu/container/activity/H5/WebViewActivity.java b/app/src/main/java/qianmu/container/activity/H5/WebViewActivity.java index 6a51bba..af959e1 100644 --- a/app/src/main/java/qianmu/container/activity/H5/WebViewActivity.java +++ b/app/src/main/java/qianmu/container/activity/H5/WebViewActivity.java @@ -78,8 +78,8 @@ public class WebViewActivity extends BaseActivity { 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.1.196:5173/"; + static String HtmlUrl = "http://127.0.0.1:8080/index.html";//webServer服务地址 http://192.168.1.218:5173/ + //static String HtmlUrl = "http://192.168.1.196:5173/"; int time = 0; private VideoView currentVideo; @@ -158,18 +158,34 @@ public class WebViewActivity extends BaseActivity { Uri videoUri2 = Uri.parse("android.resource://" + getPackageName() + "/" + R.raw.speek); videoMap.put("hat_speek", videoUri2); + //小红帽变身贵妇 + Uri videoUri3 = Uri.parse("android.resource://" + getPackageName() + "/" + R.raw.hatto); + videoMap.put("hat_to", videoUri3); + //贵妇变身小红帽 + Uri videoUri4 = Uri.parse("android.resource://" + getPackageName() + "/" + R.raw.hatback); + videoMap.put("hat_back", videoUri4); + //贵妇背景 + Uri videoUri5 = Uri.parse("android.resource://" + getPackageName() + "/" + R.raw.bg1); + videoMap.put("hat_bg1", videoUri5); + Uri videoUri6 = Uri.parse("android.resource://" + getPackageName() + "/" + R.raw.hello1); + videoMap.put("hat_hello1", videoUri6); + Uri videoUri7 = Uri.parse("android.resource://" + getPackageName() + "/" + R.raw.speek1); + videoMap.put("hat_speek1", videoUri7); + loadingbgVideo(); currentVideo = binding.bgVideo; loadingHelloVideo(); loadingSpeekVideo(); - + loadingToVideo(); + loadingBackVideo(); + loadingbgVideo1(); + loadingHelloVideo1(); + loadingSpeekVideo1(); //设置密码 initPass(); - if("sbc".equals(Constant.TTSFac)){ // 思必驰 - initASR(); - ttsUtil = new TTSUtil(); - ttsUtil.initTts(); - } + initASR(); + ttsUtil = new TTSUtil(); + ttsUtil.initTts(); } private void loadingbgVideo(){ binding.bgVideo.setVideoURI(videoMap.get("hat_bg")); @@ -222,6 +238,115 @@ public class WebViewActivity extends BaseActivity { } }); } + //小红帽变 to + private void loadingToVideo(){ + binding.toVideo.setVideoURI(videoMap.get("hat_to")); + binding.toVideo.setOnPreparedListener(new MediaPlayer.OnPreparedListener() { + @Override + public void onPrepared(MediaPlayer mp) { + binding.toVideo.start(); + } + }); + binding.toVideo.setOnErrorListener(new MediaPlayer.OnErrorListener() { + @Override + public boolean onError(MediaPlayer mp, int what, int extra) { + LoggerUtil.e("changeVideo: ","toVideo 播放失败"); + return true; // 返回true表示已处理,不会弹出系统默认提示 + } + }); + binding.toVideo.setOnCompletionListener(new MediaPlayer.OnCompletionListener() { + @Override + public void onCompletion(MediaPlayer mp) { + changeVideo("bg"); + } + }); + } + //小红帽回 back + private void loadingBackVideo(){ + binding.backVideo.setVideoURI(videoMap.get("hat_back")); + binding.backVideo.setOnPreparedListener(new MediaPlayer.OnPreparedListener() { + @Override + public void onPrepared(MediaPlayer mp) { + binding.backVideo.start(); + } + }); + binding.backVideo.setOnErrorListener(new MediaPlayer.OnErrorListener() { + @Override + public boolean onError(MediaPlayer mp, int what, int extra) { + LoggerUtil.e("changeVideo: ","backVideo 播放失败"); + return true; // 返回true表示已处理,不会弹出系统默认提示 + } + }); + binding.backVideo.setOnCompletionListener(new MediaPlayer.OnCompletionListener() { + @Override + public void onCompletion(MediaPlayer mp) { + changeVideo("bg"); + } + }); + } + //彩蛋背景视频 + private void loadingbgVideo1(){ + binding.bgVideo1.setVideoURI(videoMap.get("hat_bg1")); + binding.bgVideo1.setOnPreparedListener(new MediaPlayer.OnPreparedListener() { + @Override + public void onPrepared(MediaPlayer mp) { + mp.setLooping(true); // 可选:设置循环播 + binding.bgVideo1.start(); + } + }); + binding.bgVideo1.setOnErrorListener(new MediaPlayer.OnErrorListener() { + @Override + public boolean onError(MediaPlayer mp, int what, int extra) { + LoggerUtil.e("changeVideo: ","backVideo 播放失败"); + return true; // 返回true表示已处理,不会弹出系统默认提示 + } + }); + } + //彩蛋hello视频 + private void loadingHelloVideo1(){ + binding.helloVideo1.setVideoURI(videoMap.get("hat_hello1")); + binding.helloVideo1.setOnPreparedListener(new MediaPlayer.OnPreparedListener() { + @Override + public void onPrepared(MediaPlayer mp) { + mp.setLooping(true); // 可选:设置循环播 + binding.helloVideo1.start(); + } + }); + binding.helloVideo1.setOnErrorListener(new MediaPlayer.OnErrorListener() { + @Override + public boolean onError(MediaPlayer mp, int what, int extra) { + LoggerUtil.e("changeVideo: ","helloVideo1 播放失败"); + return true; // 返回true表示已处理,不会弹出系统默认提示 + } + }); + } + //彩蛋Speek视频 + private void loadingSpeekVideo1(){ + binding.speekVideo1.setVideoURI(videoMap.get("hat_speek1")); + binding.speekVideo1.setOnPreparedListener(new MediaPlayer.OnPreparedListener() { + @Override + public void onPrepared(MediaPlayer mp) { + mp.setLooping(true); + binding.speekVideo1.start(); + } + }); + binding.speekVideo1.setOnErrorListener(new MediaPlayer.OnErrorListener() { + @Override + public boolean onError(MediaPlayer mp, int what, int extra) { + LoggerUtil.e("changeVideo: ","speekVideo1 播放失败"); + return true; // 返回true表示已处理,不会弹出系统默认提示 + } + }); + } + + //切换视频状态 + private void changeVideoAfter(){ + if("".equals(videoAfter)){ //新状态正常 + changeVideo("back"); + }else{ //新状态彩蛋 + changeVideo("to"); + } + } //切换视频 public void changeVideo(String type){ @@ -489,20 +614,29 @@ public class WebViewActivity extends BaseActivity { 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()"); - if("sbc".equals(Constant.TTSFac)) { - ttsUtil.stopTTs(); - stopAsr(); - if(mEngine == null){ - LoggerUtil.d(TAG, "未初始化"); - initASR(); - } - mEngine.start(aiCloudASRIntent); - } + ttsUtil.stopTTs(); + stopAsr(); + if(mEngine == null){ + LoggerUtil.d(TAG, "未初始化"); + initASR(); + } + mEngine.start(aiCloudASRIntent); runOnUiThread(new Runnable() { @Override public void run() { @@ -514,25 +648,19 @@ public class WebViewActivity extends BaseActivity { @JavascriptInterface public void stopRecord() { LoggerUtil.e(TAG,"JS调用了Android的方法:stopRecord()"); - if("sbc".equals(Constant.TTSFac)) { - stopAsr(); - } + stopAsr(); } // h5调用android:开始合成语音 @JavascriptInterface public void startTTS(String txt) { LoggerUtil.e(TAG,"JS调用了Android的方法:startTTS()"); - if("sbc".equals(Constant.TTSFac)) { - ttsUtil.startTTs(txt); - } + ttsUtil.startTTs(txt); } // h5调用android:停止合成语音 @JavascriptInterface public void stopTTS() { LoggerUtil.e(TAG,"JS调用了Android的方法:stopTTS()"); - if("sbc".equals(Constant.TTSFac)){ - ttsUtil.stopTTs(); - } + ttsUtil.stopTTs(); runOnUiThread(new Runnable() { @Override public void run() { diff --git a/app/src/main/java/qianmu/container/app/Constant.java b/app/src/main/java/qianmu/container/app/Constant.java index ba594c9..81bafe0 100644 --- a/app/src/main/java/qianmu/container/app/Constant.java +++ b/app/src/main/java/qianmu/container/app/Constant.java @@ -33,7 +33,6 @@ public class Constant { // public static String androidBoardType = "bv"; //设备板子型号 Bv-3588M // public static String androidBoardType = "smt"; //设备板子型号 视美泰 - public static String TTSFac = "sbc"; // 语音识别厂家 kdxf--科大讯飞 sbc-思必驰 public static final String VOID_STOP = "void_stop";// public static String whoActivity = ""; // 哪个activity页面 // 本地缓存地址 diff --git a/app/src/main/java/qianmu/container/app/MyApplication.java b/app/src/main/java/qianmu/container/app/MyApplication.java index 89e7888..50b430b 100644 --- a/app/src/main/java/qianmu/container/app/MyApplication.java +++ b/app/src/main/java/qianmu/container/app/MyApplication.java @@ -84,9 +84,7 @@ public class MyApplication extends Application { if (Constant.androidBoardType.equals("smt")) { smdt = SmdtManagerNew.getInstance(this); } - if(Constant.TTSFac.equals("sbc")){ - initSbcSDK(); - } + initSbcSDK(); // refWatcher = LeakCanary.install(this); }