Просмотр исходного кода

7寸分机月子中心版本增加语音播报控制开关

weizhengliang 2 лет назад
Родитель
Сommit
f7586983e5

+ 5 - 5
android_bed/src/main/h7_z_3128_2/java/com/wdkl/app/ncs/callingbed/activity/CallingbedActivity.kt

@@ -519,7 +519,7 @@ class CallingbedActivity : BaseActivity<CallingbedActivityPresenter, Callingbed2
                     TcpClient.getInstance().sendMsg(tcpModel.toJson())
                     showMessage("紧急呼叫已发出!")
                     SpeechUtil.getInstance().stopSpeak()
-                    SpeechUtil.getInstance().newSpeech("紧急呼叫已发出", true)
+                    SpeechUtil.getInstance().speakSingleText("紧急呼叫已发出")
                     AppTool.Time.delay(3000, {
                         tv_btn_sos.isEnabled = true
                     })
@@ -1067,7 +1067,7 @@ class CallingbedActivity : BaseActivity<CallingbedActivityPresenter, Callingbed2
                                 var speakStr = (interactionVO.actionEndMemberName
                                         ?: "") + "已响应" + interactionVO.data + "//请稍候"
                                 SpeechUtil.getInstance().stopSpeak()
-                                SpeechUtil.getInstance().newSpeech(speakStr, false)
+                                SpeechUtil.getInstance().speakSingleText(speakStr)
                                 responsed.add(interactionVO.id)
                             }
                             Log.i(TAG,"id="+interactionVO.id+",windowid="+eventHandleWindow!!.interactionVO!!.id)
@@ -1084,14 +1084,14 @@ class CallingbedActivity : BaseActivity<CallingbedActivityPresenter, Callingbed2
                             if (!responsed.contains(interactionVO.id)) { //没播报过的才播报
                                 var speakStr = (interactionVO.actionEndMemberName ?: "") + "已响应紧急呼叫//正在赶来"
                                 SpeechUtil.getInstance().stopSpeak()
-                                SpeechUtil.getInstance().newSpeech(speakStr, true)
+                                SpeechUtil.getInstance().speakSingleText(speakStr)
                                 responsed.add(interactionVO.id)
                                 SOSHelper.sosStop()
                             }
                         } else if (tcpModel.action == TcpAction.SOSAction.CALL) { //遥控器按键按下
 
                             SpeechUtil.getInstance().stopSpeak()
-                            SpeechUtil.getInstance().newSpeech("紧急呼叫已发出", true)
+                            SpeechUtil.getInstance().speakSingleText("紧急呼叫已发出")
                         }
 
                     } else if (tcpModel.action == TcpAction.DataAction.REFRESH) {
@@ -1110,7 +1110,7 @@ class CallingbedActivity : BaseActivity<CallingbedActivityPresenter, Callingbed2
 
                         var speakStr = "已发送" + interactionVO.data + "事件//请耐心等待"
                         SpeechUtil.getInstance().stopSpeak()
-                        SpeechUtil.getInstance().newSpeech(speakStr, false)
+                        SpeechUtil.getInstance().speakSingleText(speakStr)
 
                     } else if (tcpModel.action == TcpAction.IMAction.MSG) {
 //                        if(Constant.SCREENSTATE.equals(Display.STATE_OFF)) {

+ 2 - 2
android_bed/src/main/h7_z_3128_2/java/com/wdkl/app/ncs/callingbed/fragment/MainFragment.kt

@@ -119,10 +119,10 @@ class MainFragment: BaseFragment<MainFragmentPresenter, MainViewLayoutBinding>()
 
             if(Constant.TCP_CONNECTED) {
                 SpeechUtil.getInstance().stopSpeak()
-                SpeechUtil.getInstance().newSpeech("已发送" + v_text + "事件//请耐心等待", false)
+                SpeechUtil.getInstance().speakSingleText("已发送" + v_text + "事件//请耐心等待")
             }else{
                 SpeechUtil.getInstance().stopSpeak()
-                SpeechUtil.getInstance().newSpeech("设备没有网络  事件发送失败", false)
+                SpeechUtil.getInstance().speakSingleText("设备没有网络  事件发送失败")
              }
         }
     }

+ 11 - 0
android_bed/src/main/h7_z_3128_2/java/com/wdkl/app/ncs/callingbed/fragment/QrCodeFragment.kt

@@ -16,6 +16,7 @@ import com.wdkl.app.ncs.callingbed.databinding.QrCodeLayBinding
 import com.wdkl.app.ncs.callingbed.helper.AppUpdateHelper
 import com.wdkl.app.ncs.callingbed.helper.NetHelper
 import com.wdkl.app.ncs.callingbed.launch.CallingbedLaunch
+import com.wdkl.app.ncs.callingbed.settings.SettingConfig
 import com.wdkl.ncs.android.lib.base.BaseFragment
 import com.wdkl.ncs.android.lib.utils.EcodeHelper
 import com.wdkl.ncs.android.lib.utils.errorLog
@@ -85,6 +86,8 @@ class QrCodeFragment : BaseFragment<QrCodeFragmentPresenter, QrCodeLayBinding>()
                 + "\r\nAndroid版本: " + Build.VERSION.RELEASE
                 + "\r\nMCU: " + Constant.MCU_VERSION_NUMBER
                 + "\r\n发布日期:" + BuildConfig.BUILD_TIME)
+
+        tv_switch_tts.isChecked = SettingConfig.getTtsOn(activity)
     }
 
     override fun bindEvent() {
@@ -116,6 +119,14 @@ class QrCodeFragment : BaseFragment<QrCodeFragmentPresenter, QrCodeLayBinding>()
             }
 
         }
+
+        tv_switch_tts.setOnCheckedChangeListener { buttonView, isChecked ->
+            if (isChecked) {
+                SettingConfig.setTtsOn(activity, true)
+            } else {
+                SettingConfig.setTtsOn(activity, false)
+            }
+        }
     }
 
     override fun destory() {

+ 35 - 0
android_bed/src/main/h7_z_3128_2/java/com/wdkl/app/ncs/callingbed/helper/SpeechUtil.java

@@ -6,6 +6,7 @@ import android.speech.tts.UtteranceProgressListener;
 import android.text.TextUtils;
 import android.util.Log;
 
+import com.wdkl.app.ncs.callingbed.settings.SettingConfig;
 import com.wdkl.ncs.android.lib.base.BaseApplication;
 import com.wdkl.ncs.android.middleware.common.Constant;
 
@@ -75,6 +76,10 @@ public class SpeechUtil {
     }
 
     public synchronized void speak(final String text) {
+        if (!SettingConfig.getTtsOn(BaseApplication.appContext)) {
+            return;
+        }
+
         isStop = false;
         Integer speakStatus = textToSpeech.speak(text, TextToSpeech.QUEUE_FLUSH, null, "uniqueId");
         if(speakStatus.equals(-1)){
@@ -110,6 +115,36 @@ public class SpeechUtil {
         });
     }
 
+    public synchronized void speakSingleText(final String text) {
+        if (!SettingConfig.getTtsOn(BaseApplication.appContext)) {
+            return;
+        }
+
+        Integer speakStatus = textToSpeech.speak(text, TextToSpeech.QUEUE_FLUSH, null, "uniqueId");
+        if(speakStatus.equals(-1)){
+            SpeechUtil.getInstance().init(BaseApplication.appContext);
+            SpeechUtil.getInstance().startSpeechThread();
+            textToSpeech.speak(text, TextToSpeech.QUEUE_FLUSH, null, "uniqueId");
+        }
+        textToSpeech.setOnUtteranceProgressListener(new UtteranceProgressListener() {
+            @Override
+            public void onStart(String utteranceId) {
+                //LogUtil.d(TAG, "speak onStart..." + utteranceId);
+            }
+
+            @Override
+            public void onDone(String utteranceId) {
+                isStop = true;
+            }
+
+            @Override
+            public void onError(String utteranceId) {
+                isStop = true;
+                Log.d(TAG, "speak onError..." + utteranceId);
+            }
+        });
+    }
+
     public void stopSpeak() {
         if (textToSpeech != null && textToSpeech.isSpeaking()) {
             textToSpeech.stop();

+ 10 - 0
android_bed/src/main/h7_z_3128_2/java/com/wdkl/app/ncs/callingbed/settings/SettingConfig.java

@@ -68,6 +68,8 @@ public class SettingConfig {
     private static final String KEY_LANGUAGE_ID = "KEY_LANGUAGE_ID";
     private static final String KEY_LANGUAGE_MODE = "KEY_LANGUAGE_MODE";
 
+    private static final String KEY_TTS_ON = "KEY_TTS_ON";
+
     public static int getLanguageId(Context context) {
         //0--auto, 1--English, 2--中文, 3--西班牙语, 4--俄语
         return getSP(context).getInt(KEY_LANGUAGE_ID, 2);
@@ -85,6 +87,14 @@ public class SettingConfig {
         getEditor(context).putInt(KEY_LANGUAGE_MODE, mode).apply();
     }
 
+    public static boolean getTtsOn(Context context) {
+        return getSP(context).getBoolean(KEY_TTS_ON, true);
+    }
+
+    public static void setTtsOn(Context context, boolean on) {
+        getEditor(context).putBoolean(KEY_TTS_ON, on).apply();
+    }
+
     /**
      * 获取分机白天亮度
      *

+ 1 - 1
android_bed/src/main/h7_z_3128_2/java/com/wdkl/app/ncs/callingbed/window/EventHandleWindow.kt

@@ -92,7 +92,7 @@ class EventHandleWindow(var contexts: Context) {
             windowIncidentBinding.btnCancel.setOnClickListener {
                 var tcpModel = EventUtil.cancelEvent(interactionVO)
                 SpeechUtil.getInstance().stopSpeak()
-                SpeechUtil.getInstance().speak("您已取消"+interactionVO!!.data.toString() + "事件")
+                SpeechUtil.getInstance().speakSingleText("您已取消"+interactionVO!!.data.toString() + "事件")
                 TcpClient.getInstance().sendMsg(tcpModel.toJson())
                 release()
             }

+ 18 - 0
android_bed/src/main/h7_z_3128_2/res/drawable/gray_thumb.xml

@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android"
+    android:shape="rectangle">
+
+    <!-- 高度40 -->
+    <size android:height="20dp" android:width="20dp"/>
+    <!-- 圆角弧度 20 -->
+    <corners android:radius="10dp"/>
+
+    <!-- 变化率 -->
+    <gradient
+      android:endColor="#ffffff"
+      android:startColor="#ffffff" />
+
+    <stroke android:width="4dp"
+      android:color="#9e9e9e"/>
+
+  </shape >

+ 18 - 0
android_bed/src/main/h7_z_3128_2/res/drawable/green_thumb.xml

@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android"
+    android:shape="rectangle">
+
+    <!-- 高度40 -->
+    <size android:height="20dp" android:width="20dp"/>
+    <!-- 圆角弧度 20 -->
+    <corners android:radius="10dp"/>
+
+    <!-- 变化率 -->
+    <gradient
+      android:endColor="#ffffff"
+      android:startColor="#ffffff" />
+
+    <stroke android:width="4dp"
+      android:color="#F7A1A7"/>
+
+  </shape >

+ 8 - 0
android_bed/src/main/h7_z_3128_2/res/drawable/thumb.xml

@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+    <!-- 设置按钮在不同状态下的时候,按钮不同的颜色 -->
+    <selector xmlns:android="http://schemas.android.com/apk/res/android">
+
+      <item android:state_checked="true" android:drawable="@drawable/green_thumb" />
+      <item android:drawable="@drawable/gray_thumb" />
+
+    </selector>

+ 15 - 1
android_bed/src/main/h7_z_3128_2/res/layout/qr_code_lay.xml

@@ -87,6 +87,20 @@
             android:textColor="@drawable/selector_bottom_btn_text_color"
             android:textSize="24sp"/>
 
+        <Switch
+            android:id="@+id/tv_switch_tts"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_above="@id/tv_btn_screenoff"
+            android:layout_marginBottom="10dp"
+            android:switchPadding="20dp"
+            android:padding="10dp"
+            android:gravity="center_horizontal"
+            android:thumb="@drawable/thumb"
+            android:text="语音播报"
+            android:textSize="24sp"
+            android:textColor="#949494"/>
+
         <TextView
             android:id="@+id/tv_detail_title"
             android:layout_width="wrap_content"
@@ -100,7 +114,7 @@
             android:layout_width="match_parent"
             android:layout_height="match_parent"
             android:layout_below="@id/tv_detail_title"
-            android:layout_above="@id/tv_btn_screenoff"
+            android:layout_above="@id/tv_switch_tts"
             android:layout_marginTop="20dp"
             android:layout_marginBottom="20dp"
             android:text="暂无"