Browse Source

fix: ci

sibichiAi
高志龙 9 months ago
parent
commit
e8586712e2
  1. BIN
      app/libs/zckjAPI-2.6.jar
  2. 63
      app/src/main/java/qianmu/container/activity/H5/H5Data.java
  3. 2
      app/src/main/java/qianmu/container/activity/H5/UpdateFileActivity.java
  4. 147
      app/src/main/java/qianmu/container/activity/H5/WebViewActivity.java
  5. 78
      app/src/main/java/qianmu/container/activity/TestActivity.java
  6. 33
      app/src/main/java/qianmu/container/entity/TTSMessage.java
  7. 7
      app/src/main/java/qianmu/container/http/retrofit/BaseService.java
  8. 117
      app/src/main/java/qianmu/container/util/TTSUtil.java
  9. BIN
      app/src/main/res/drawable/bg.mp4
  10. BIN
      app/src/main/res/drawable/hello.mp4
  11. BIN
      app/src/main/res/drawable/speek.mp4
  12. BIN
      app/src/main/res/raw/bg.mp4
  13. BIN
      app/src/main/res/raw/hello.mp4
  14. BIN
      app/src/main/res/raw/speek.mp4

BIN
app/libs/zckjAPI-2.6.jar

Binary file not shown.

63
app/src/main/java/qianmu/container/activity/H5/H5Data.java

@ -54,6 +54,7 @@ public class H5Data extends BaseData {
public static final String NAME = "H5_app_data"; public static final String NAME = "H5_app_data";
public static final String H5_APP_VERSION = "H5_version"; public static final String H5_APP_VERSION = "H5_version";
public static final String INTERFACE_LIST = "interface_list"; public static final String INTERFACE_LIST = "interface_list";
public static final String AI_FILE_RESOURCE_LIST = "aiFileResource_list"; //AI资源文件
public static final String FILE_RESOURCE_LIST = "fileResource_list";//资源文件下载,图片,视频 public static final String FILE_RESOURCE_LIST = "fileResource_list";//资源文件下载,图片,视频
public static final String MODEL_FILE_RESOURCE_LIST = "modelFileResource_list";//模型资源文件下载,图片,(水牌使用) public static final String MODEL_FILE_RESOURCE_LIST = "modelFileResource_list";//模型资源文件下载,图片,(水牌使用)
public static final String H5_URL = "h5_url"; // 除导视外其他url public static final String H5_URL = "h5_url"; // 除导视外其他url
@ -105,6 +106,30 @@ public class H5Data extends BaseData {
saveDataJson(NAME, MODEL_FILE_RESOURCE_LIST, dataJson); saveDataJson(NAME, MODEL_FILE_RESOURCE_LIST, dataJson);
} }
/**
* 保存AI文件资源列表
* */
public static void saveAIResourceFileList(Object data) {
String dataJson;
if (data instanceof String) dataJson = (String) data;
else dataJson = new Gson().toJson(data);
saveDataJson(NAME, AI_FILE_RESOURCE_LIST, dataJson);
}
/**
* 获取模型文件资源列表
* */
public static List<ResourceFileBean> getAiResourceFileList() {
try {
String dataJson = getDataJson(NAME, AI_FILE_RESOURCE_LIST);
return new Gson().fromJson(dataJson, new TypeToken<List<ResourceFileBean>>() {
}.getType());
} catch (Throwable t) {
LoggerUtil.e("getAIResourceFileList", StringUtil.getThrowableStr(t));
}
return new ArrayList<>();
}
/** /**
* 获取文件资源列表 * 获取文件资源列表
* */ * */
@ -292,6 +317,44 @@ public class H5Data extends BaseData {
}); });
} }
// 获取AI离线文件
public static void queryAiServeList(QueryPreparedListener preparedListener, QueryFinishListener finishListener , Map<String, String> bigFiles ) {
if (preparedListener != null) preparedListener.onPrepared();
String mallCode = FloorData.getMallCode();
RetrofitUtil.getBaseService().getAiFileResource(mallCode).enqueue(new Callback<Resp>() {
@Override
public void onResponse(Call<Resp> call, Response<Resp> response) {
try {
if (StringUtil.respSuccess(response.body())) {
String dataJson = new Gson().toJson(response.body().getData());
if(dataJson.contains("capacity")){
Object data = response.body().getData();
saveAIResourceFileList(data);
}else {
//解密
dataJson= AesUtil.decrypt((String.valueOf(response.body().getData())));
saveAIResourceFileList(dataJson);
}
for(ResourceFileBean fileBean:getAiResourceFileList()){
bigFiles.put(fileBean.getUrl(), StringUtil.strSplice("dist", "/static/offline/", fileBean.getUrl()));
}
}
} catch (Throwable t) {
LoggerUtil.e("getAiFileResource", StringUtil.getThrowableStr(t));
}
if (finishListener != null) finishListener.onFinish();
}
@Override
public void onFailure(Call<Resp> call, Throwable t) {
if (finishListener != null) finishListener.onFinish();
}
});
}
//GET方式获取离线数据 //GET方式获取离线数据
public static void queryOfflineDataByInterfaceToGet(String url, String jsonData, String fileName, Map<String, String> bigFiles , QueryPreparedListener preparedListener, QueryFinishListener finishListener) { public static void queryOfflineDataByInterfaceToGet(String url, String jsonData, String fileName, Map<String, String> bigFiles , QueryPreparedListener preparedListener, QueryFinishListener finishListener) {
if (preparedListener != null) preparedListener.onPrepared(); if (preparedListener != null) preparedListener.onPrepared();

2
app/src/main/java/qianmu/container/activity/H5/UpdateFileActivity.java

@ -173,8 +173,8 @@ public class UpdateFileActivity extends BaseActivity {
H5Data.queryFileResources( () -> totalQueryCount++, () -> queryResponseCount++ ,bigFiles); H5Data.queryFileResources( () -> totalQueryCount++, () -> queryResponseCount++ ,bigFiles);
getOfflineDataByInterface(); getOfflineDataByInterface();
} }
H5Data.queryAiServeList( () -> totalQueryCount++, () -> queryResponseCount++ ,bigFiles);
if("指路机".equals(deviceType)){ if("指路机".equals(deviceType)){
DeviceData.getBackgroundMusic( () -> totalQueryCount++, () -> queryResponseCount++ ,bigFiles); DeviceData.getBackgroundMusic( () -> totalQueryCount++, () -> queryResponseCount++ ,bigFiles);

147
app/src/main/java/qianmu/container/activity/H5/WebViewActivity.java

@ -15,12 +15,15 @@ import android.util.Log;
import android.view.KeyEvent; import android.view.KeyEvent;
import android.view.View; import android.view.View;
import android.view.WindowManager; import android.view.WindowManager;
import android.view.animation.AlphaAnimation;
import android.view.animation.Animation;
import android.webkit.ConsoleMessage; import android.webkit.ConsoleMessage;
import android.webkit.JavascriptInterface; import android.webkit.JavascriptInterface;
import android.webkit.WebChromeClient; import android.webkit.WebChromeClient;
import android.webkit.WebSettings; import android.webkit.WebSettings;
import android.webkit.WebView; import android.webkit.WebView;
import android.webkit.WebViewClient; import android.webkit.WebViewClient;
import android.widget.VideoView;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.databinding.DataBindingUtil; import androidx.databinding.DataBindingUtil;
@ -80,9 +83,7 @@ import qianmu.container.util.FileUtil;
import qianmu.container.util.GsonUtil; import qianmu.container.util.GsonUtil;
import qianmu.container.util.KeyboardUtil; import qianmu.container.util.KeyboardUtil;
import qianmu.container.util.LoggerUtil; import qianmu.container.util.LoggerUtil;
import qianmu.container.util.SignWayUtil;
import qianmu.container.util.StringUtil; import qianmu.container.util.StringUtil;
import qianmu.container.util.TTSUtil;
import qianmu.container.util.ToastUtils; import qianmu.container.util.ToastUtils;
import static qianmu.container.service.ContainerService.initFirstTime; import static qianmu.container.service.ContainerService.initFirstTime;
@ -96,9 +97,9 @@ public class WebViewActivity extends BaseActivity {
static final int TYPE_GO_SAVESCREEN = 300;//导视通知跳转屏保 static final int TYPE_GO_SAVESCREEN = 300;//导视通知跳转屏保
static final int TYPE_HINT_PASSWORD = 3;//隐藏密码输入框 static final int TYPE_HINT_PASSWORD = 3;//隐藏密码输入框
static final int TYPE_START_SERVER = 4;//重新启动web服务 static final int TYPE_START_SERVER = 4;//重新启动web服务
//static String HtmlUrl = "http://127.0.0.1:8080/index.html";//webServer服务地址
static String HtmlUrl = "http://192.168.1.218:5173/";//webServer服务地址
static String HtmlUrl = "http://127.0.0.1:8080/index.html";//webServer服务地址
int time = 0; int time = 0;
private VideoView currentVideo;
SocketClient localSocketClient; SocketClient localSocketClient;
Handler handler = new Handler() { Handler handler = new Handler() {
@ -158,69 +159,97 @@ public class WebViewActivity extends BaseActivity {
binding.web.setBackgroundColor(0); binding.web.setBackgroundColor(0);
binding.web.getBackground().setAlpha(0); binding.web.getBackground().setAlpha(0);
loadingbgVideo(true);
currentVideo = binding.bgVideo;
loadingHelloVideo();
loadingSpeekVideo();
//设置密码
initPass();
connectLocalSocket();
}
private void loadingbgVideo(Boolean isplay){
Uri videoUri = Uri.parse("android.resource://" + getPackageName() + "/" + R.raw.bg); Uri videoUri = Uri.parse("android.resource://" + getPackageName() + "/" + R.raw.bg);
binding.bgVideo.setVideoURI(videoUri); binding.bgVideo.setVideoURI(videoUri);
binding.bgVideo.setOnPreparedListener(new MediaPlayer.OnPreparedListener() { binding.bgVideo.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override @Override
public void onPrepared(MediaPlayer mp) { public void onPrepared(MediaPlayer mp) {
mp.setLooping(true); // 可选:设置循环播放 mp.setLooping(true); // 可选:设置循环播放
binding.bgVideo.start(); // 开始播放视频
if(isplay){
binding.bgVideo.start();
}
} }
}); });
}
private void loadingHelloVideo(){
Uri videoUri1 = Uri.parse("android.resource://" + getPackageName() + "/" + R.raw.hello); Uri videoUri1 = Uri.parse("android.resource://" + getPackageName() + "/" + R.raw.hello);
binding.helloVideo.setVideoURI(videoUri1); binding.helloVideo.setVideoURI(videoUri1);
binding.helloVideo.setOnPreparedListener(new MediaPlayer.OnPreparedListener() { binding.helloVideo.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override @Override
public void onPrepared(MediaPlayer mp) { public void onPrepared(MediaPlayer mp) {
mp.setLooping(true); // 可选:设置循环播放
mp.setLooping(true);
} }
}); });
}
private void loadingSpeekVideo(){
Uri videoUri2 = Uri.parse("android.resource://" + getPackageName() + "/" + R.raw.speek); Uri videoUri2 = Uri.parse("android.resource://" + getPackageName() + "/" + R.raw.speek);
binding.speekVideo.setVideoURI(videoUri2); binding.speekVideo.setVideoURI(videoUri2);
binding.speekVideo.setOnPreparedListener(new MediaPlayer.OnPreparedListener() { binding.speekVideo.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override @Override
public void onPrepared(MediaPlayer mp) { public void onPrepared(MediaPlayer mp) {
mp.setLooping(true); // 可选:设置循环播放
mp.setLooping(true);
} }
}); });
//设置密码
initPass();
connectLocalSocket();
} }
//切换视频 //切换视频
public void changeVideo(String type){ public void changeVideo(String type){
binding.helloVideo.setZOrderOnTop(false);
binding.helloVideo.setZOrderMediaOverlay(false);
binding.speekVideo.setZOrderOnTop(false);
binding.speekVideo.setZOrderMediaOverlay(false);
if("hello".equals(type)){
binding.helloVideo.setZOrderOnTop(true);
binding.helloVideo.setZOrderMediaOverlay(true);
binding.helloVideo.setVisibility(View.VISIBLE);
binding.helloVideo.start();
binding.speekVideo.stopPlayback();
binding.speekVideo.setVisibility(View.GONE);
binding.bgVideo.stopPlayback();
binding.bgVideo.setVisibility(View.GONE);
}else if("answer".equals(type)){
binding.speekVideo.setZOrderOnTop(true);
binding.speekVideo.setZOrderMediaOverlay(true);
binding.speekVideo.setVisibility(View.VISIBLE);
binding.speekVideo.start();
binding.helloVideo.stopPlayback();
binding.helloVideo.setVisibility(View.GONE);
binding.bgVideo.stopPlayback();
binding.bgVideo.setVisibility(View.GONE);
LoggerUtil.e("changeVideo", type);
VideoView nextVideo;
currentVideo.clearAnimation();
if("bg".equals(type.trim())){
if(currentVideo == binding.bgVideo){
return;
}
nextVideo = binding.bgVideo;
}else if("answer".equals(type.trim())){
if(currentVideo == binding.speekVideo){
return;
}
nextVideo = binding.speekVideo;
}else{ }else{
binding.bgVideo.setVisibility(View.VISIBLE);
binding.bgVideo.start();
binding.helloVideo.stopPlayback();
binding.helloVideo.setVisibility(View.GONE);
binding.speekVideo.stopPlayback();
binding.speekVideo.setVisibility(View.GONE);
if(currentVideo == binding.helloVideo){
return;
}
nextVideo = binding.helloVideo;
} }
// 新视频淡入动画
AlphaAnimation fadeIn = new AlphaAnimation(0f, 1f);
fadeIn.setDuration(300);
fadeIn.setFillAfter(true);
// 旧视频淡出动画
AlphaAnimation fadeOut = new AlphaAnimation(1f, 0f);
fadeOut.setDuration(300);
fadeOut.setFillAfter(true);
fadeOut.setAnimationListener(new Animation.AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {}
@Override
public void onAnimationEnd(Animation animation) {
currentVideo.pause();
currentVideo.setVisibility(View.GONE);
currentVideo.clearAnimation();
currentVideo = nextVideo;
}
@Override
public void onAnimationRepeat(Animation animation) {}
});
// 执行切换
nextVideo.setVisibility(View.VISIBLE);
nextVideo.startAnimation(fadeIn);
nextVideo.start();
currentVideo.startAnimation(fadeOut);
} }
@Override @Override
@ -261,6 +290,7 @@ public class WebViewActivity extends BaseActivity {
}); });
binding.setting.setOnClickListener((view) -> { binding.setting.setOnClickListener((view) -> {
if (!MyApplication.addClickTimes()) return; if (!MyApplication.addClickTimes()) return;
binding.layoutPass.setVisibility(View.VISIBLE); binding.layoutPass.setVisibility(View.VISIBLE);
time = 0; time = 0;
@ -425,12 +455,23 @@ public class WebViewActivity extends BaseActivity {
public void stopTTS() { public void stopTTS() {
LoggerUtil.e(TAG,"JS调用了Android的方法:stopTTS()"); LoggerUtil.e(TAG,"JS调用了Android的方法:stopTTS()");
localSocketClient.send(StringUtil.strSplice("{\"method\":\"/tts/stop\"}")); localSocketClient.send(StringUtil.strSplice("{\"method\":\"/tts/stop\"}"));
runOnUiThread(new Runnable() {
@Override
public void run() {
changeVideo("bg");
}
});
} }
// h5调用android:播放指定视频 // h5调用android:播放指定视频
@JavascriptInterface @JavascriptInterface
public void playAudio(String str) { public void playAudio(String str) {
LoggerUtil.e("JS调用了Android的方法:playAudio", str); LoggerUtil.e("JS调用了Android的方法:playAudio", str);
changeVideo(str);
runOnUiThread(new Runnable() {
@Override
public void run() {
changeVideo(str);
}
});
} }
} }
//语音交互 //语音交互
@ -445,8 +486,8 @@ public class WebViewActivity extends BaseActivity {
TTSMessage messageBean = new Gson().fromJson(message, TTSMessage.class); TTSMessage messageBean = new Gson().fromJson(message, TTSMessage.class);
TTSMessage.Params content = messageBean.getParams(); TTSMessage.Params content = messageBean.getParams();
if (content == null) return; if (content == null) return;
LoggerUtil.e("ttsSocket:", messageBean.getMethod());
if("asr.text".equals(messageBean.getMethod())){
String method = messageBean.getMethod();
if("asr.text".equals(method)){
LoggerUtil.e("ttsSocket:",content.getText()); LoggerUtil.e("ttsSocket:",content.getText());
runOnUiThread(new Runnable() { runOnUiThread(new Runnable() {
@Override @Override
@ -454,8 +495,7 @@ public class WebViewActivity extends BaseActivity {
binding.web.loadUrl(StringUtil.strSplice("javascript:window.giveAskText('", content.getText(), "');")); binding.web.loadUrl(StringUtil.strSplice("javascript:window.giveAskText('", content.getText(), "');"));
} }
}); });
}
if("asr.result".equals(messageBean.getMethod())){
}else if("asr.result".equals(method)){
LoggerUtil.e("ttsSocket:",content.getText()); LoggerUtil.e("ttsSocket:",content.getText());
runOnUiThread(new Runnable() { runOnUiThread(new Runnable() {
@Override @Override
@ -464,15 +504,16 @@ public class WebViewActivity extends BaseActivity {
binding.web.loadUrl(StringUtil.strSplice("javascript:window.youAskOver('", content.getText(), "');")); binding.web.loadUrl(StringUtil.strSplice("javascript:window.youAskOver('", content.getText(), "');"));
} }
}); });
}
if("tts.result".equals(messageBean.getMethod())){
LoggerUtil.e("ttsSocket:",content.getSpeakUrl());
runOnUiThread(new Runnable() {
@Override
public void run() {
changeVideo("bg");
}
});
}else if("tts.result".equals(method)){
LoggerUtil.e("ttsSocket:", messageBean.getParams().getStatus().trim());
if("end".equals(messageBean.getParams().getStatus().trim())) {
runOnUiThread(new Runnable() {
@Override
public void run() {
changeVideo("bg");
}
});
}
} }
} catch (Throwable t) { } catch (Throwable t) {
LoggerUtil.e("setOnMessageListener", StringUtil.getThrowableStr(t)); LoggerUtil.e("setOnMessageListener", StringUtil.getThrowableStr(t));

78
app/src/main/java/qianmu/container/activity/TestActivity.java

@ -1,78 +0,0 @@
package qianmu.container.activity;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;
import android.Manifest;
import android.content.pm.PackageManager;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import qianmu.container.R;
import qianmu.container.util.TTSUtil;
public class TestActivity extends AppCompatActivity implements View.OnClickListener {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_test);
setPermission();
addEventListener();
TTSUtil.connectLocalSocket();
}
private void addEventListener(){
findViewById(R.id.button).setOnClickListener(this);
findViewById(R.id.button2).setOnClickListener(this);
findViewById(R.id.button3).setOnClickListener(this);
findViewById(R.id.button4).setOnClickListener(this);
}
/**
* 检测权限并授权
* */
private void setPermission(){
if(ContextCompat.checkSelfPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE)!= PackageManager.PERMISSION_GRANTED){
ActivityCompat.requestPermissions(this,new String[]{
Manifest.permission.READ_EXTERNAL_STORAGE,
Manifest.permission.WRITE_EXTERNAL_STORAGE,
Manifest.permission.ACCESS_NETWORK_STATE,
Manifest.permission.CAMERA,
Manifest.permission.RECORD_AUDIO,
Manifest.permission.RECEIVE_BOOT_COMPLETED,
Manifest.permission.SYSTEM_ALERT_WINDOW,
Manifest.permission.READ_PHONE_STATE,
Manifest.permission.ACCESS_NETWORK_STATE},998);
}
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
if(requestCode==998){
}
}
@Override
public void onClick(View view) {
switch (view.getId()){
case R.id.button :
TTSUtil.startAsr();
break;
case R.id.button2 :
TTSUtil.stopAsr();
break;
case R.id.button3 :
TTSUtil.startTts("天有不测风云,人有旦夕祸福。蜈蚣百足,行不及蛇;雄鸡两翼,飞不过鸦。");
break;
case R.id.button4 :
TTSUtil.stopTts();
break;
}
}
}

33
app/src/main/java/qianmu/container/entity/TTSMessage.java

@ -31,8 +31,33 @@ public class TTSMessage {
public static class Params { public static class Params {
String text; String text;
String speakUrl;
String status;
String ttsId;
String sessionId;
public String getSessionId() {
return sessionId;
}
public void setSessionId(String sessionId) {
this.sessionId = sessionId;
}
public String getTtsId() {
return ttsId;
}
public void setTtsId(String ttsId) {
this.ttsId = ttsId;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
public String getText() { public String getText() {
return text; return text;
} }
@ -41,12 +66,6 @@ public class TTSMessage {
this.text = text; this.text = text;
} }
public String getSpeakUrl() {
return speakUrl;
}
public void setSpeakUrl(String speakUrl) {
this.speakUrl = speakUrl;
}
} }
} }

7
app/src/main/java/qianmu/container/http/retrofit/BaseService.java

@ -141,6 +141,13 @@ public interface BaseService {
@GET("api/data/v1/web/getFileResource") @GET("api/data/v1/web/getFileResource")
Call<Resp> getFileResourceList2(@Query("projectCode") String code); Call<Resp> getFileResourceList2(@Query("projectCode") String code);
/**
* 获取资源文件(AI服务)
* @return
*/
@GET("api/aimgr/v1/web/file-resources")
Call<Resp> getAiFileResource(@Query("projectCode") String code);
/** /**
* 获取模型资源文件列表(水牌) * 获取模型资源文件列表(水牌)
* *

117
app/src/main/java/qianmu/container/util/TTSUtil.java

@ -1,117 +0,0 @@
package qianmu.container.util;
import com.google.gson.Gson;
import org.greenrobot.eventbus.EventBus;
import org.java_websocket.drafts.Draft_6455;
import org.java_websocket.enums.ReadyState;
import java.net.URI;
import qianmu.container.entity.TTSMessage;
import qianmu.container.socket.SocketClient;
/**
* 思必驰 语音调用
*/
public class TTSUtil {
private static SocketClient localSocketClient;
private static void initLocalSocketClient() {
try {
URI localUri = new URI("ws://127.0.0.1:50002");
LoggerUtil.e("TTSSocketUri", localUri.toString());
localSocketClient = new SocketClient(localUri, new Draft_6455());
setLocalSocketListener();
} catch (Throwable t) {
LoggerUtil.e("initSocketClient", StringUtil.getThrowableStr(t));
}
}
public static void connectLocalSocket() {
try {
//客户端不存在时 创建客户端设置监听事件
if (localSocketClient == null) initLocalSocketClient();
//获取客户端当前的连接状态
ReadyState state = localSocketClient.getReadyState();
LoggerUtil.e("connectLocalSocket", "TTS客户端连接状态:"+ GsonUtil.getGson().toJson(state));
boolean open = localSocketClient.isOpen();
LoggerUtil.e("connectLocalSocket", "TTS客户端连接状态:open="+open);
if (open) return;
//获取客户端当前的连接状态
if (localSocketClient.isOpen()) return;
//未连接状态时 连接服务器
if (state.equals(ReadyState.NOT_YET_CONNECTED)) localSocketClient.connect();
else if (state.equals(ReadyState.CLOSING) || state.equals(ReadyState.CLOSED)) {
//正在关闭或者关闭状态时 重新连接服务器
localSocketClient.reconnect();
}
} catch (Throwable t) {
LoggerUtil.e("connectLocalSocket", StringUtil.getThrowableStr(t));
destroyLocalSocketClient();
}
}
// 识别语音
public static void startAsr(){
localSocketClient.send(StringUtil.strSplice("{\"method\":\"/asr/start\"}"));
}
// 停止语音识别
public static void stopAsr(){
localSocketClient.send(StringUtil.strSplice("{\"method\":\"/asr/stop\"}"));
}
// 开始语音合成
public static void startTts(String txt){
localSocketClient.send(StringUtil.strSplice("{\"method\": \"/tts/start\",\"params\": {\"text\":\"", txt, "\", \"mode\":\"autoPlay\"}}"));
}
// 停止语音合成
public static void stopTts(){
localSocketClient.send(StringUtil.strSplice("{\"method\":\"/tts/stop\"}"));
AudioPlay.stopPlay();
}
private static void setLocalSocketListener() {
localSocketClient.setOnOpenListener((handshakeData) -> {
LoggerUtil.e("connectLocalSocket", "TTS客户端连接成功");
localSocketClient.send(StringUtil.strSplice("{\"id\":123,\"method\":\"/asr/stop\"}"));
});
localSocketClient.setOnMessageListener((conn, message) -> {
try {
TTSMessage messageBean = new Gson().fromJson(message, TTSMessage.class);
TTSMessage.Params content = messageBean.getParams();
if (content == null) return;
LoggerUtil.e("ttsSocket:", messageBean.getMethod());
if("asr.text".equals(messageBean.getMethod())){
LoggerUtil.e("ttsSocket:",content.getText());
}
if("asr.result".equals(messageBean.getMethod())){
LoggerUtil.e("ttsSocket:",content.getText());
}
if("tts.result".equals(messageBean.getMethod())){
LoggerUtil.e("ttsSocket:",content.getSpeakUrl());
}
} catch (Throwable t) {
LoggerUtil.e("setOnMessageListener", StringUtil.getThrowableStr(t));
}
});
localSocketClient.setOnCloseListener((code, reason, remote) -> {
LoggerUtil.e("LocSocCliManager", "onClose:code="+code);
if (localSocketClient == null){
initLocalSocketClient();
}else {
localSocketClient.reconnect();
}
});
localSocketClient.setOnErrorListener((ex) -> LoggerUtil.e("LocSocCliManager", "onError"));
}
//销毁当前的客户端
public static void destroyLocalSocketClient() {
if (localSocketClient == null) return;
localSocketClient.close();
localSocketClient = null;
}
}

BIN
app/src/main/res/drawable/bg.mp4

Binary file not shown.

BIN
app/src/main/res/drawable/hello.mp4

Binary file not shown.

BIN
app/src/main/res/drawable/speek.mp4

Binary file not shown.

BIN
app/src/main/res/raw/bg.mp4

Binary file not shown.

BIN
app/src/main/res/raw/hello.mp4

Binary file not shown.

BIN
app/src/main/res/raw/speek.mp4

Binary file not shown.
Loading…
Cancel
Save