diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index e6df76b..86fe330 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -34,7 +34,11 @@
-
+
+
+
+
+
() {
@Override
diff --git a/app/src/main/java/com/navinfo/outdoor/util/SpeakMode.java b/app/src/main/java/com/navinfo/outdoor/util/SpeakMode.java
new file mode 100644
index 0000000..2f92c01
--- /dev/null
+++ b/app/src/main/java/com/navinfo/outdoor/util/SpeakMode.java
@@ -0,0 +1,141 @@
+package com.navinfo.outdoor.util;
+
+import android.app.Activity;
+import android.app.Dialog;
+import android.content.Intent;
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.speech.tts.TextToSpeech;
+import android.util.Log;
+import android.view.View;
+
+import androidx.appcompat.app.AppCompatActivity;
+
+import com.kongzue.dialog.util.DialogSettings;
+import com.kongzue.dialog.v3.MessageDialog;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Locale;
+import java.util.Set;
+
+//语音类
+public class SpeakMode extends Activity implements TextToSpeech.OnInitListener{
+ private Activity mActivity;
+ private TextToSpeech mTextToSpeech;//TTS对象
+ private int status;
+ private int MY_DATA_CHECK_CODE = 0;
+
+ private Handler mHandler = new Handler() {
+
+ @Override
+ public void handleMessage(Message msg) {
+ switch (msg.what) {
+ case 0x11:
+ try {
+ HashMap params = new HashMap();
+
+ params.put(TextToSpeech.Engine.KEY_PARAM_STREAM, "STREAM_NOTIFICATION");//设置播放类型(音频流类型)
+
+ mTextToSpeech.speak(msg.obj + "", TextToSpeech.QUEUE_ADD, params);//将这个发音任务添加当前任务之后
+
+ //BaseToast.makeText(mActivity,msg.obj+"",Toast.LENGTH_LONG).show();
+
+ mTextToSpeech.playSilence(100, TextToSpeech.QUEUE_ADD, params);//间隔多长时间
+
+ } catch (Exception e) {
+
+ }
+ break;
+ }
+ }
+ };
+
+ public SpeakMode(Activity activity) {
+
+ mActivity = activity;
+
+ if (mActivity != null && !mActivity.isFinishing())
+ this.mTextToSpeech = new TextToSpeech(this.mActivity, this);
+ }
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+
+ Intent checkIntent = new Intent();
+ checkIntent.setAction(TextToSpeech.Engine.ACTION_CHECK_TTS_DATA);
+ startActivityForResult(checkIntent, MY_DATA_CHECK_CODE);
+ }
+
+ public void setData(String json) {
+
+ }
+
+ @Override
+ public void onInit(int status) {
+ this.status = status;
+ if (this.mTextToSpeech != null) {
+ int result = this.mTextToSpeech.setLanguage(Locale.CHINESE);
+ if (result == TextToSpeech.LANG_MISSING_DATA
+ || result == TextToSpeech.LANG_NOT_SUPPORTED) {
+ if (mActivity != null && !mActivity.isFinishing()) {
+ DialogSettings.style = DialogSettings.STYLE.STYLE_KONGZUE;
+ MessageDialog.show((AppCompatActivity) mActivity, "提示", "设备不支持语音播报。", "确定");
+ }
+ }
+ }
+ Log.i("TextToSpeechDemo", String.valueOf(status));
+ }
+
+ //读语音处理
+ public void speakText(final String message) {
+ new Thread(new Runnable() {
+ @Override
+ public void run() {
+
+ if (mTextToSpeech != null) {
+ Set availableLanguages = mTextToSpeech.getAvailableLanguages();
+ List engines = mTextToSpeech.getEngines();
+
+ int result = mTextToSpeech.setLanguage(Locale.CHINESE);
+
+ if (result == TextToSpeech.LANG_MISSING_DATA
+ || result == TextToSpeech.LANG_NOT_SUPPORTED) {
+
+ } else {
+ if (mTextToSpeech != null && mTextToSpeech.isSpeaking()) {
+ while (mTextToSpeech.isSpeaking()) {
+ try {
+ Thread.sleep(100);
+ } catch (Exception e) {
+
+ }
+ }
+ }
+
+ Message msg = new Message();
+ msg.what = 0x11;
+ msg.obj = message;
+ mHandler.sendMessage(msg);
+
+ }
+ }
+ }
+ }).start();
+
+ }
+
+ public void stopSpeek() {
+ try {
+
+ if (this.mTextToSpeech != null && this.mTextToSpeech.isSpeaking()) {
+ this.mTextToSpeech.stop();
+ }
+ } catch (Exception e) {
+
+ }
+ }
+
+}
diff --git a/app/src/main/java/com/navinfo/outdoor/util/SystemTTS.java b/app/src/main/java/com/navinfo/outdoor/util/SystemTTS.java
index 1d7c551..57e6435 100644
--- a/app/src/main/java/com/navinfo/outdoor/util/SystemTTS.java
+++ b/app/src/main/java/com/navinfo/outdoor/util/SystemTTS.java
@@ -1,12 +1,16 @@
package com.navinfo.outdoor.util;
+import android.annotation.SuppressLint;
import android.content.Context;
import android.speech.tts.TextToSpeech;
import android.speech.tts.UtteranceProgressListener;
import android.widget.Toast;
+import java.util.List;
import java.util.Locale;
+import java.util.Set;
+@SuppressLint("NewApi")
public class SystemTTS extends UtteranceProgressListener implements TTS, TextToSpeech.OnUtteranceCompletedListener {
private Context mContext;
private static SystemTTS singleton;
@@ -29,29 +33,29 @@ public class SystemTTS extends UtteranceProgressListener implements TTS, TextToS
textToSpeech = new TextToSpeech(mContext, new TextToSpeech.OnInitListener() {
@Override
public void onInit(int i) {
- //系统语音初始化成功
- if (i == TextToSpeech.SUCCESS) {
- int result = textToSpeech.setLanguage(Locale.CHINA);
- textToSpeech.setPitch(1.0f);// 设置音调,值越大声音越尖(女生),值越小则变成男声,1.0是常规
- textToSpeech.setSpeechRate(1.0f);
- textToSpeech.setOnUtteranceProgressListener(SystemTTS.this);
- textToSpeech.setOnUtteranceCompletedListener(SystemTTS.this);
- if (result == TextToSpeech.LANG_MISSING_DATA
- || result == TextToSpeech.LANG_NOT_SUPPORTED) {
- //系统不支持中文播报
- isSuccess = false;
- }
- }
- }
+ }
});
+ //系统语音初始化成功
+ int result = textToSpeech.setLanguage(Locale.getDefault());
+ textToSpeech.setPitch(1.0f);// 设置音调,值越大声音越尖(女生),值越小则变成男声,1.0是常规
+ textToSpeech.setSpeechRate(1.0f);
+ textToSpeech.setOnUtteranceProgressListener(SystemTTS.this);
+ textToSpeech.setOnUtteranceCompletedListener(SystemTTS.this);
+ if (result == TextToSpeech.LANG_MISSING_DATA
+ || result == TextToSpeech.LANG_NOT_SUPPORTED) {
+ //系统不支持中文播报
+ isSuccess = false;
+ }
}
public void playText(String playText) {
- if (!isSuccess) {
- Toast.makeText(mContext, "系统不支持中文播报", Toast.LENGTH_SHORT).show();
- return;
- }
+// if (!isSuccess) {
+// return;
+// }
+ Set availableLanguages = textToSpeech.getAvailableLanguages();
+ List engines = textToSpeech.getEngines();
+ String defaultEngine = textToSpeech.getDefaultEngine();
if (textToSpeech != null) {
textToSpeech.speak(playText,
TextToSpeech.QUEUE_ADD, null, null);
@@ -64,18 +68,10 @@ public class SystemTTS extends UtteranceProgressListener implements TTS, TextToS
}
}
-// public boolean isSpeaking() {
-// if (textToSpeech.isSpeaking()) {
-// return true;
-// }
-// return false;
-// }
-
//播报完成回调
@Override
public void onUtteranceCompleted(String utteranceId) {
-
}
@Override
@@ -91,5 +87,6 @@ public class SystemTTS extends UtteranceProgressListener implements TTS, TextToS
public void onError(String utteranceId) {
}
+
}
diff --git a/app/src/main/java/com/navinfo/outdoor/util/TTS.java b/app/src/main/java/com/navinfo/outdoor/util/TTS.java
index 46fe9cc..d465543 100644
--- a/app/src/main/java/com/navinfo/outdoor/util/TTS.java
+++ b/app/src/main/java/com/navinfo/outdoor/util/TTS.java
@@ -2,6 +2,6 @@ package com.navinfo.outdoor.util;
public interface TTS {
void playText(String playText);
- void stopSpeak();
+ void stopSpeak();
}
diff --git a/app/src/main/res/layout/activity_login.xml b/app/src/main/res/layout/activity_login.xml
index d46e073..a1f3b11 100644
--- a/app/src/main/res/layout/activity_login.xml
+++ b/app/src/main/res/layout/activity_login.xml
@@ -176,4 +176,5 @@
android:layout_marginBottom="20dp"
/>
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_register.xml b/app/src/main/res/layout/fragment_register.xml
index 1085193..3e48bfc 100644
--- a/app/src/main/res/layout/fragment_register.xml
+++ b/app/src/main/res/layout/fragment_register.xml
@@ -255,7 +255,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="2dp"
- android:text="免责声明"
+ android:text="用户协议"
android:textColor="@color/colorWhite"
app:layout_constraintBottom_toBottomOf="@id/iv_register_check"
app:layout_constraintLeft_toRightOf="@id/iv_register_check"