正式讯飞语音环境

This commit is contained in:
2022-10-20 14:12:18 +08:00
parent 8ce4133e50
commit 4bd42b98d5
8 changed files with 78 additions and 16 deletions

View File

@ -5,8 +5,10 @@ import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.graphics.Bitmap;
import android.media.MediaPlayer;
import android.os.Build;
import android.os.Bundle;
import android.os.Vibrator;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
@ -18,6 +20,9 @@ import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.ActionBar;
import androidx.appcompat.app.AppCompatActivity;
import java.util.Map;
import chaoran.business.BrandEnum;
import chaoran.business.R;
import chaoran.business.adapter.*;
@ -25,6 +30,7 @@ import chaoran.business.engine.impl.NetworkSettingEngine;
import chaoran.business.engine.SettingEngine;
import chaoran.business.engine.impl.TekVoiceEngine;
import chaoran.business.engine.VoiceEngine;
import chaoran.business.utils.LocalAddressUtil;
/**
* 流程:联网认证设备型号,验证通过,查找设备品牌进行调用驱动操作
@ -37,7 +43,7 @@ public class MainActivity extends AppCompatActivity implements ResultListener{
private WebView webView;
private Adapter adapter;
//private VoiceEngine voiceEngine;
private VoiceEngine voiceEngine;
private SettingEngine settingEngine;
private ProgressBar progressBar;
private ActionBar actionBar;
@ -56,7 +62,7 @@ public class MainActivity extends AppCompatActivity implements ResultListener{
BrandEnum brand = BrandEnum.code(Build.MANUFACTURER);
Toast.makeText(this, Build.MANUFACTURER, Toast.LENGTH_LONG).show();
Log.i("brand===",brand.toString());
switch (brand) {
/* switch (brand) {
case UROBO:
adapter = new UroBoAdapter(this, this);
break;
@ -72,13 +78,12 @@ public class MainActivity extends AppCompatActivity implements ResultListener{
}
if (null != adapter) {
adapter.start();
}
}*/
}
@SuppressLint("JavascriptInterface")
private void initView() {
actionBar = getSupportActionBar();
// voiceEngine = new TekVoiceEngine(this);
voiceEngine = new TekVoiceEngine(this);
settingEngine = new NetworkSettingEngine(this);
webView = findViewById(R.id.webView);
progressBar = findViewById(R.id.loading);
@ -88,11 +93,12 @@ public class MainActivity extends AppCompatActivity implements ResultListener{
//设置接口进行windows暴露
settings.setDomStorageEnabled(true);
//语音引擎
// webView.addJavascriptInterface(voiceEngine, "TekVoiceEngine");
webView.addJavascriptInterface(voiceEngine, "TekVoiceEngine");
//网络设置展示
webView.addJavascriptInterface(settingEngine, "NetworkSettingEngine");
//重新加载页面
webView.addJavascriptInterface(this, "View");
webView.addJavascriptInterface(new LocalAddressUtil(), "Localpda");
webView.loadUrl(url());
}
@ -173,11 +179,24 @@ public class MainActivity extends AppCompatActivity implements ResultListener{
public void result(String result) {
runOnUiThread(() -> webView.loadUrl("javascript:render(\'" + result + "\')"));
}
@Override
protected void onDestroy() {
adapter.stop();
super.onDestroy();
if (diPlayer != null) {
diPlayer.stop();
diPlayer.release();
diPlayer = null;
}
if (duPlayer != null) {
duPlayer.stop();
duPlayer.release();
duPlayer = null;
}
if (vibrator != null) {
vibrator.cancel();
}
completionListener = null;
}
@Override
@ -218,4 +237,48 @@ public class MainActivity extends AppCompatActivity implements ResultListener{
webView.loadUrl(url());
});
}
private MediaPlayer diPlayer = null;
private MediaPlayer duPlayer = null;
private String ttsNr;
public Vibrator vibrator;
@JavascriptInterface
public void play(String msg, String type, int isZd) {
ttsNr = msg;
if ("1".equals(type)) {
if (diPlayer == null) {
diPlayer = MediaPlayer.create(this, R.raw.didi);
diPlayer.setOnCompletionListener(completionListener);
}
diPlayer.start();
} else if ("2".equals(type)) {
if (duPlayer == null) {
duPlayer = MediaPlayer.create(this, R.raw.dudu);
duPlayer.setOnCompletionListener(completionListener);
}
duPlayer.start();
} else {
//isZd = 1;
if (voiceEngine != null) {
voiceEngine.startSpeaking(msg);
}
}
if (isZd == 1) {
if (vibrator == null) {
vibrator = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
}
vibrator.vibrate(2000);
}
}
private MediaPlayer.OnCompletionListener completionListener = new MediaPlayer.OnCompletionListener() {
// @Override
public void onCompletion(MediaPlayer mp) {
if (ttsNr != null) {
if (voiceEngine != null) {
voiceEngine.startSpeaking(ttsNr);
}
ttsNr = null;
}
}
};
}