Bläddra i källkod

<是否播报房和显示房床等字符可以通过护士管理软件设置主机叫号参数来控制,0-不播报房间,1-播报房间,2-房和床字符都不播报>

weizhengliang 4 år sedan
förälder
incheckning
1e60e472d1

+ 29 - 7
app/src/main/java/com/wdkl/callingmainnurse/adapter/CallListAdapter.java

@@ -10,9 +10,11 @@ import android.widget.LinearLayout;
 import android.widget.RelativeLayout;
 import android.widget.TextView;
 
+import com.wdkl.callingmainnurse.MyApplication;
 import com.wdkl.callingmainnurse.R;
 import com.wdkl.callingmainnurse.common.Constants;
 import com.wdkl.callingmainnurse.entity.UdpEntity;
+import com.wdkl.callingmainnurse.util.SharedPreferencesUtil;
 import com.wdkl.callingmainnurse.util.StringUtils;
 
 import java.util.ArrayList;
@@ -28,6 +30,7 @@ public class CallListAdapter extends RecyclerView.Adapter<CallListAdapter.MyView
     private LayoutInflater inflater;
     private CallingListItemOnclickListener itemOnclickListener;
     private int selectedPosition = -1;
+    private String voiceTag = SharedPreferencesUtil.getStringSp(MyApplication.getAppContext(), Constants.MSG_SP, Constants.VOICE_BROADCAST_TAG);
 
     public CallListAdapter(Context context, ArrayList<UdpEntity> list) {
         this.context = context;
@@ -70,7 +73,7 @@ public class CallListAdapter extends RecyclerView.Adapter<CallListAdapter.MyView
         } else {
             holder.rlMain.setBackgroundResource(R.mipmap.bg_bed_stanby_n);
         }
-        holder.tvRoomNumTail.setVisibility(View.VISIBLE);
+        //holder.tvRoomNumTail.setVisibility(View.VISIBLE);
         String type = list.get(position).getType();
         switch (type) {
             case Constants.DOOR_CALL:
@@ -78,16 +81,26 @@ public class CallListAdapter extends RecyclerView.Adapter<CallListAdapter.MyView
                 holder.llRoom.setVisibility(View.VISIBLE);
                 
                 holder.ivLogo.setImageResource(R.mipmap.ic_door);
-                holder.tvRoomNum.setText(list.get(position).getRoomNumber());//房间号
+                if ("0".equals(voiceTag) || "1".equals(voiceTag)) {
+                    holder.tvRoomNum.setText(list.get(position).getRoomNumber() + "房");//房间号
+                } else if ("2".equals(voiceTag)) {
+                    holder.tvRoomNum.setText(list.get(position).getRoomNumber());//房间号
+                }
                 holder.tvName.setText(" 门口机 ");
                 break;
             case Constants.SON_CALL:
             case Constants.TRADITION_CALL:
                 holder.llBed.setVisibility(View.VISIBLE);
                 holder.llRoom.setVisibility(View.VISIBLE);
+
                 holder.ivLogo.setImageResource(R.mipmap.ic_call_bed);
-                holder.tvRoomNum.setText(list.get(position).getRoomNumber());//房间号
-                holder.tvBedNum.setText(list.get(position).getBedNumber());//床号
+                if ("0".equals(voiceTag) || "1".equals(voiceTag)) {
+                    holder.tvRoomNum.setText(list.get(position).getRoomNumber() + "房");//房间号
+                    holder.tvBedNum.setText(list.get(position).getBedNumber() + "床");//床号
+                } else if ("2".equals(voiceTag)) {
+                    holder.tvRoomNum.setText(list.get(position).getRoomNumber());//房间号
+                    holder.tvBedNum.setText(list.get(position).getBedNumber());//床号
+                }
                 holder.tvName.setText(" " + list.get(position).getName() + " ");//机型
                 break;
             case Constants.ROOMHELP_CALL:
@@ -95,8 +108,13 @@ public class CallListAdapter extends RecyclerView.Adapter<CallListAdapter.MyView
                 holder.llRoom.setVisibility(View.VISIBLE);
 
                 holder.ivLogo.setImageResource(R.mipmap.ic_support);
-                holder.tvRoomNum.setText(list.get(position).getRoomNumber());//房间号
-                holder.tvBedNum.setText(list.get(position).getBedNumber());//床号
+                if ("0".equals(voiceTag) || "1".equals(voiceTag)) {
+                    holder.tvRoomNum.setText(list.get(position).getRoomNumber() + "房");//房间号
+                    holder.tvBedNum.setText(list.get(position).getBedNumber() + "床");//床号
+                } else if ("2".equals(voiceTag)) {
+                    holder.tvRoomNum.setText(list.get(position).getRoomNumber());//房间号
+                    holder.tvBedNum.setText(list.get(position).getBedNumber());//床号
+                }
                 holder.tvName.setText(" 请求增援 ");
                 break;
             case Constants.WSHROOM_CALL:
@@ -104,7 +122,11 @@ public class CallListAdapter extends RecyclerView.Adapter<CallListAdapter.MyView
                 holder.llRoom.setVisibility(View.VISIBLE);
 
                 holder.ivLogo.setImageResource(R.mipmap.ic_wc);
-                holder.tvRoomNum.setText(list.get(position).getRoomNumber());
+                if ("0".equals(voiceTag) || "1".equals(voiceTag)) {
+                    holder.tvRoomNum.setText(list.get(position).getRoomNumber() + "房");
+                } else if ("2".equals(voiceTag)) {
+                    holder.tvRoomNum.setText(list.get(position).getRoomNumber());
+                }
                 holder.tvName.setText(" 紧急呼叫 ");
                 break;
             case Constants.MANAGER_CALL:

+ 10 - 1
app/src/main/java/com/wdkl/callingmainnurse/adapter/SicknessBedAdapter.java

@@ -9,9 +9,12 @@ import android.widget.ImageView;
 import android.widget.RelativeLayout;
 import android.widget.TextView;
 
+import com.wdkl.callingmainnurse.MyApplication;
 import com.wdkl.callingmainnurse.R;
+import com.wdkl.callingmainnurse.common.Constants;
 import com.wdkl.callingmainnurse.entity.RoomEntity;
 import com.wdkl.callingmainnurse.util.LogUtil;
+import com.wdkl.callingmainnurse.util.SharedPreferencesUtil;
 import com.wdkl.callingmainnurse.util.StringUtils;
 
 import java.util.ArrayList;
@@ -27,6 +30,7 @@ public class SicknessBedAdapter extends RecyclerView.Adapter<SicknessBedAdapter.
     private LayoutInflater inflater;
     private CallingSicknessBedItemOnclickListener onclickListener;
     private int selectedPosition = -1;
+    private String voiceTag = SharedPreferencesUtil.getStringSp(MyApplication.getAppContext(), Constants.MSG_SP, Constants.VOICE_BROADCAST_TAG);
 
     public SicknessBedAdapter(Context mcontext, ArrayList<RoomEntity.WardInformation.SickbedInformation> list) {
         this.mcontext = mcontext;
@@ -54,7 +58,12 @@ public class SicknessBedAdapter extends RecyclerView.Adapter<SicknessBedAdapter.
     @Override
     public void onBindViewHolder(MyViewHolder holder, int position) {
         try {
-            holder.tvSicknessBedNumber.setText(list.get(position).getBedNum());
+            if ("0".equals(voiceTag) || "1".equals(voiceTag)) {
+                holder.tvSicknessBedNumber.setText(list.get(position).getBedNum() + "床");
+            } else if ("2".equals(voiceTag)) {
+                holder.tvSicknessBedNumber.setText(list.get(position).getBedNum());
+            }
+
             holder.tvSicknessBedName.setText(list.get(position).getPatientName());
             int level = StringUtils.parseInt(list.get(position).getGradeLevel());
             if (level < 65) {

+ 10 - 3
app/src/main/java/com/wdkl/callingmainnurse/adapter/SicknessRoomAdapter.java

@@ -16,6 +16,7 @@ import com.wdkl.callingmainnurse.common.Constants;
 import com.wdkl.callingmainnurse.entity.MessageEvent;
 import com.wdkl.callingmainnurse.entity.RoomEntity;
 import com.wdkl.callingmainnurse.util.LogUtil;
+import com.wdkl.callingmainnurse.util.SharedPreferencesUtil;
 
 import org.greenrobot.eventbus.EventBus;
 
@@ -33,6 +34,7 @@ public class SicknessRoomAdapter extends RecyclerView.Adapter<SicknessRoomAdapte
     private LayoutInflater inflater;
     private CallingSicknessRoomItemOnclickListener itemOnclickListener;
     private int selectedPosition = -1;
+    private String voiceTag = SharedPreferencesUtil.getStringSp(MyApplication.getAppContext(), Constants.MSG_SP, Constants.VOICE_BROADCAST_TAG);
 
     public SicknessRoomAdapter(Context mcontext, ArrayList<RoomEntity.WardInformation> list) {
         this.mcontext = mcontext;
@@ -85,7 +87,12 @@ public class SicknessRoomAdapter extends RecyclerView.Adapter<SicknessRoomAdapte
                 holder.tvRoomNum.setTextColor(Color.parseColor("#000000"));
                 holder.tvBedNum.setTextColor(Color.parseColor("#000000"));
             }
-            holder.tvRoomNum.setText(list.get(position).getRoomNum() + "房");
+            if ("0".equals(voiceTag) || "1".equals(voiceTag)) {
+                holder.tvRoomNum.setText(list.get(position).getRoomNum() + "房");
+            } else if ("2".equals(voiceTag)) {
+                holder.tvRoomNum.setText(list.get(position).getRoomNum());
+            }
+
             if (list.get(position).getTrusteeshipState().equals("1")) {//更新标题栏代托管状态//正在托管中
                 EventBus.getDefault().post(new MessageEvent(1, Constants.EVENT_SIP_INTERNETPING_));
                 Constants.trustStatused = true;
@@ -99,9 +106,9 @@ public class SicknessRoomAdapter extends RecyclerView.Adapter<SicknessRoomAdapte
                 String str = "";
                 if (bedList.size() > 0) {
                     try {
-                        str = bedList.get(0).getBedNum() + "-" + bedList.get(bedList.size() - 1).getBedNum() + "床";
+                        str = bedList.get(0).getBedNum() + "-" + bedList.get(bedList.size() - 1).getBedNum();
                     } catch (Exception e) {
-                        str = bedList.get(0).getBedNum() + "床";
+                        str = bedList.get(0).getBedNum();
                         LogUtil.d("onBindViewHolder", "Exception");
                     }
                     holder.tvBedNum.setText(str);

+ 39 - 26
app/src/main/java/com/wdkl/callingmainnurse/ui/fragment/CallingBedFragment.java

@@ -10,6 +10,7 @@ import android.support.v7.widget.GridLayoutManager;
 import android.support.v7.widget.LinearLayoutManager;
 import android.support.v7.widget.RecyclerView;
 import android.support.v7.widget.helper.ItemTouchHelper;
+import android.text.TextUtils;
 import android.util.Log;
 import android.view.LayoutInflater;
 import android.view.MotionEvent;
@@ -672,14 +673,16 @@ public class CallingBedFragment extends BaseFragment implements SicknessBedAdapt
                 endCall();
             }
         }
+
+        if (enableTTS) {
+            SpeechUtil.getInstance().stopSpeak();
+        }
+
         //viewHolder.getAdapterPosition() 和 iewHolder.getLayoutPosition()有16ms 的差距 之后adpter默认-1
         if (null != loopingUdpentity && loopingUdpentity.equals(deleteEntity)) {
             if (null != loopVoice) {
                 loopVoice.setPalyDismiss(true);
             }
-            if (enableTTS) {
-                SpeechUtil.getInstance().stopSpeak();
-            }
         } else {
             for (int i=0; i<PalyPhonetics.speakEntityList.size(); i++) {//将播报列表也删除该元素 两种实体格式不一样,所以要用循环
                 if(PalyPhonetics.speakEntityList.get(i).equals(deleteEntity)) {
@@ -722,14 +725,16 @@ public class CallingBedFragment extends BaseFragment implements SicknessBedAdapt
                 endCall();
             }
         }
+
+        if (enableTTS) {
+            SpeechUtil.getInstance().stopSpeak();
+        }
+
         //viewHolder.getAdapterPosition() 和 iewHolder.getLayoutPosition()有16ms 的差距 之后adpter默认-1
         if (null != loopingUdpentity && loopingUdpentity.equals(deleteEntity)) {
             if (null != loopVoice) {
                 loopVoice.setPalyDismiss(true);
             }
-            if (enableTTS) {
-                SpeechUtil.getInstance().stopSpeak();
-            }
         } else {
             for (int i=0; i<PalyPhonetics.speakEntityList.size(); i++) {//将播报列表也删除该元素 两种实体格式不一样,所以要用循环
                 if(PalyPhonetics.speakEntityList.get(i).equals(deleteEntity)) {
@@ -1863,11 +1868,9 @@ public class CallingBedFragment extends BaseFragment implements SicknessBedAdapt
     }
 
     //语音播报
-    private void startSpeak(UdpEntity entity) {
+    private synchronized void startSpeak(UdpEntity entity) {
+        //是否要播报"房": 0--不要  1--要  2--"房"和"床"都不要
         String tag = SharedPreferencesUtil.getStringSp(getActivity(), Constants.MSG_SP, Constants.VOICE_BROADCAST_TAG);
-        if ("2".equals(tag)) {
-            return;
-        }
 
         loopingUdpentity = entity;
         showUrgentWindow(entity);
@@ -1877,43 +1880,53 @@ public class CallingBedFragment extends BaseFragment implements SicknessBedAdapt
         String text = "";
         switch (type) {
             case DOOR_CALL: //门口机
-                text = rnb + "房门口机呼叫";
-                SpeechUtil.getInstance().newSpeech(text);
+                if ("0".equals(tag) || "2".equals(tag)) {
+                    text = rnb + "门口机呼叫";
+                } else if ("1".equals(tag)) {
+                    text = rnb + "房门口机呼叫";
+                }
                 break;
             case Constants.MAIN_CALL://主机
-                text = rnb + "号主机呼叫";
-                SpeechUtil.getInstance().newSpeech(text);
+                text = rnb + "主机呼叫";
                 break;
             case Constants.SON_CALL://床位
             case Constants.TRADITION_CALL://传统床位
-                if ("1".equals(tag)) {//是否要播报“房” 0不要  1要
-                    text = rnb + "房" + bnb + "床呼叫";
-                } else {
+                if ("0".equals(tag)) {
                     text = bnb + "床呼叫";
+                } else if ("1".equals(tag)) {
+                    text = rnb + "房" + bnb + "床呼叫";
+                } else if ("2".equals(tag)) {
+                    text = bnb + "呼叫";
                 }
-                SpeechUtil.getInstance().newSpeech(text);
                 break;
             case Constants.ROOMHELP_CALL://请求增援
-                if ("1".equals(tag)) {//是否要播报“房” 0不要  1要
-                    text = rnb + "房" + bnb + "床请求增援";
-                } else {
+                if ("0".equals(tag)) {
                     text = bnb + "床请求增援";
+                } else if ("1".equals(tag)) {
+                    text = rnb + "房" + bnb + "床请求增援";
+                } else if ("2".equals(tag)) {
+                    text = bnb + "请求增援";
                 }
-                SpeechUtil.getInstance().newSpeech(text);
                 break;
             case Constants.WSHROOM_CALL://卫生间
-                text = rnb + "房卫生间请求增援";
-                SpeechUtil.getInstance().newSpeech(text);
+                if ("0".equals(tag) || "2".equals(tag)) {
+                    text = rnb + "卫生间请求增援";
+                } else if ("1".equals(tag)) {
+                    text = rnb + "房卫生间请求增援";
+                }
+
                 break;
             case Constants.MANAGER_CALL://总控机
                 text = "总控制室呼叫";
-                SpeechUtil.getInstance().newSpeech(text);
                 break;
             case Constants.DOCTOR_CALL://医生主机
                 text = "医生主机呼叫";
-                SpeechUtil.getInstance().newSpeech(text);
                 break;
         }
+
+        if (!TextUtils.isEmpty(text)) {
+            SpeechUtil.getInstance().newSpeech(text);
+        }
     }
 
     /**

+ 5 - 2
app/src/main/java/com/wdkl/callingmainnurse/util/SpeechUtil.java

@@ -18,7 +18,7 @@ public class SpeechUtil {
     private int speakIndex = 0;
     private int loopCount = 2;
     private boolean isStop = true;
-    private static List<String> speechTextList = new ArrayList<>();
+    private volatile static List<String> speechTextList = new ArrayList<>();
     private Thread speechThread;
     private boolean isSpeechLoop = true;
 
@@ -58,8 +58,8 @@ public class SpeechUtil {
 
     public void newSpeech(String text) {
         //LogUtil.d(TAG, "add text speech: " + text);
-        startSpeechThread();
         speechTextList.add(text);
+        startSpeechThread();
     }
 
     public synchronized void speak(final String text) {
@@ -98,6 +98,7 @@ public class SpeechUtil {
             textToSpeech.stop();
             speechTextList.clear();
             isStop = true;
+            speakIndex = 0;
             //LogUtil.d(TAG, "stop speak");
         }
     }
@@ -109,6 +110,7 @@ public class SpeechUtil {
     public void release() {
         speechTextList.clear();
         isStop = true;
+        speakIndex = 0;
         if (textToSpeech != null) {
             textToSpeech.stop();
             textToSpeech.shutdown();
@@ -130,6 +132,7 @@ public class SpeechUtil {
             while (isSpeechLoop) {
                 if (speechTextList.size() > 0 && isStop) {
                     String speech = speechTextList.get(0);
+                    //LogUtil.d(TAG, "speech: " + speech);
                     speak(speech);
 
                     if (speechTextList.contains(speech)) {

+ 2 - 1
app/src/main/res/layout/fragment_callng_sickbed_sickness_bed_adapter_layout.xml

@@ -50,7 +50,8 @@
                 android:layout_gravity="center"
                 android:gravity="bottom"
                 android:text="床"
-                android:textSize="@dimen/text_size_20px" />
+                android:textSize="@dimen/text_size_20px"
+                android:visibility="gone"/>
         </LinearLayout>
     </RelativeLayout>
 

+ 5 - 3
app/src/main/res/layout/item_call_list_layout.xml

@@ -47,7 +47,7 @@
                     android:layout_width="wrap_content"
                     android:layout_height="wrap_content"
                     android:gravity="bottom"
-                    android:text="--  "
+                    android:text="--"
                     android:textSize="@dimen/text_size_14px"
                     android:textStyle="bold" />
 
@@ -58,7 +58,8 @@
                     android:layout_gravity="center"
                     android:gravity="bottom"
                     android:text=" 房"
-                    android:textSize="@dimen/text_size_13px" />
+                    android:textSize="@dimen/text_size_13px"
+                    android:visibility="gone"/>
             </LinearLayout>
 
             <LinearLayout
@@ -83,7 +84,8 @@
                     android:layout_gravity="center"
                     android:gravity="bottom"
                     android:text=" 床"
-                    android:textSize="@dimen/text_size_13px" />
+                    android:textSize="@dimen/text_size_13px"
+                    android:visibility="gone"/>
             </LinearLayout>
         </LinearLayout>
     </RelativeLayout>