Browse Source

add createUtility

nsm 1 year ago
parent
commit
a1a698f1f7
1 changed files with 33 additions and 18 deletions
  1. 33 18
      android/src/main/java/com/xunfei/XunFeiMoudle.java

+ 33 - 18
android/src/main/java/com/xunfei/XunFeiMoudle.java

@@ -44,11 +44,15 @@ public class XunFeiMoudle extends ReactContextBaseJavaModule {
 
     public static void init(final Context context) {
         mContext = context;
-        SpeechUtility.createUtility(context, SpeechConstant.APPID + "=" + getMetaData("XUNFEI_ID"));
+        createUtility(context);
         mTts = getSpeechSynthesizer(context);
     }
 
-    public static SpeechSynthesizer getSpeechSynthesizer(final Context context){
+    private static SpeechUtility createUtility(Context context) {
+        return SpeechUtility.createUtility(context, SpeechConstant.APPID + "=" + getMetaData("XUNFEI_ID"));
+    }
+
+    public static SpeechSynthesizer getSpeechSynthesizer(final Context context) {
         return SpeechSynthesizer.createSynthesizer(context, new InitListener() {
             @Override
             public void onInit(int i) {
@@ -64,19 +68,19 @@ public class XunFeiMoudle extends ReactContextBaseJavaModule {
     private static void setParam() {
         // 清空参数
         mTts.setParameter(SpeechConstant.PARAMS, null);
-        //设置合成
+        // 设置合成
 
-        //设置使用本地引擎
+        // 设置使用本地引擎
         mTts.setParameter(SpeechConstant.ENGINE_TYPE, SpeechConstant.TYPE_LOCAL);
-        //设置发音人资源路径
+        // 设置发音人资源路径
         mTts.setParameter(ResourceUtil.TTS_RES_PATH, getResourcePath());
-        //设置合成语速
+        // 设置合成语速
         mTts.setParameter(SpeechConstant.SPEED, "50");
-        //设置合成音调
+        // 设置合成音调
         mTts.setParameter(SpeechConstant.PITCH, "50");
-        //设置合成音量
+        // 设置合成音量
         mTts.setParameter(SpeechConstant.VOLUME, "50");
-        //设置播放器音频流类型
+        // 设置播放器音频流类型
         mTts.setParameter(SpeechConstant.STREAM_TYPE, String.valueOf(AudioManager.STREAM_MUSIC));
 
         // 设置播放合成音频打断音乐播放,默认为true
@@ -88,20 +92,23 @@ public class XunFeiMoudle extends ReactContextBaseJavaModule {
         mTts.setParameter(SpeechConstant.TTS_AUDIO_PATH, Environment.getExternalStorageDirectory() + "/msc/tts.wav");
     }
 
-    //获取发音人资源路径
+    // 获取发音人资源路径
     private static String getResourcePath() {
         StringBuffer tempBuffer = new StringBuffer();
-        //合成通用资源
-        tempBuffer.append(ResourceUtil.generateResourcePath(mContext, ResourceUtil.RESOURCE_TYPE.assets, "tts/common.jet"));
+        // 合成通用资源
+        tempBuffer.append(
+                ResourceUtil.generateResourcePath(mContext, ResourceUtil.RESOURCE_TYPE.assets, "tts/common.jet"));
         tempBuffer.append(";");
-        //发音人资源
-        tempBuffer.append(ResourceUtil.generateResourcePath(mContext, ResourceUtil.RESOURCE_TYPE.assets, "tts/" + "xiaoyan.jet"));
+        // 发音人资源
+        tempBuffer.append(
+                ResourceUtil.generateResourcePath(mContext, ResourceUtil.RESOURCE_TYPE.assets, "tts/" + "xiaoyan.jet"));
         return tempBuffer.toString();
     }
 
     public static String getMetaData(String key) {
         try {
-            ApplicationInfo applicationInfo = mContext.getPackageManager().getApplicationInfo(mContext.getPackageName(), PackageManager.GET_META_DATA);
+            ApplicationInfo applicationInfo = mContext.getPackageManager().getApplicationInfo(mContext.getPackageName(),
+                    PackageManager.GET_META_DATA);
             return applicationInfo.metaData.getString(key);
         } catch (PackageManager.NameNotFoundException e) {
             e.printStackTrace();
@@ -111,11 +118,19 @@ public class XunFeiMoudle extends ReactContextBaseJavaModule {
 
     @ReactMethod
     public void textToSpeech(final String text) {
-        if (mTts!=null){
+        if (mTts != null) {
             mTts.startSpeaking(text, null);
-        }else {
+        } else {
+            if (SpeechUtility.getUtility() == null) {
+                createUtility(mContext);
+            }
             mTts = getSpeechSynthesizer(mContext);
-            mTts.startSpeaking(text,null);
+            if (mTts != null) {
+                mTts.startSpeaking(text, null);
+            } else {
+                Toast.makeText(mContext, "语音播报mTts初始化失败", Toast.LENGTH_SHORT).show();
+            }
+
         }
     }