Pārlūkot izejas kodu

手表更改的问题
解决呼叫有时没有的问题
解决两个设备同时绑定一个护士,先绑定的护士没解绑 并且收不到消息也没有提示的问题
添加呼叫显示带房间号
解决同一个科室 多个手表,其中一个处理其他的无反应问题
解决先绑定的手表在后台运行 另一个绑定之后 先前绑定的手表 显示的还是绑定状态的问题
2.6和2.5的区别是 2.5是没有蓝牙定位功能 2.6开放了蓝牙定位功能

wangjk 4 gadi atpakaļ
vecāks
revīzija
293ebf379d
23 mainītis faili ar 300 papildinājumiem un 58 dzēšanām
  1. BIN
      .idea/caches/build_file_checksums.ser
  2. BIN
      .idea/caches/gradle_models.ser
  3. 116 0
      .idea/codeStyles/Project.xml
  4. 0 4
      .idea/encodings.xml
  5. 1 3
      .idea/gradle.xml
  6. 1 1
      app/build.gradle
  7. 1 1
      app/src/main/AndroidManifest.xml
  8. 1 1
      app/src/main/java/com/wdkl/nursewatch/adapters/HistoryCallAdapter.java
  9. 1 1
      app/src/main/java/com/wdkl/nursewatch/adapters/HistoryCallAdapterPhone.java
  10. 2 0
      app/src/main/java/com/wdkl/nursewatch/common/Constants.java
  11. 13 7
      app/src/main/java/com/wdkl/nursewatch/entity/MessageEntity.java
  12. 14 1
      app/src/main/java/com/wdkl/nursewatch/entity/WebsocketEntity.java
  13. 6 1
      app/src/main/java/com/wdkl/nursewatch/presentation/ui/activities/HomeActivity.java
  14. 3 1
      app/src/main/java/com/wdkl/nursewatch/presentation/ui/activities/MainActivity.java
  15. 2 2
      app/src/main/java/com/wdkl/nursewatch/presentation/ui/activities/VoiceMessageActivity.java
  16. 6 1
      app/src/main/java/com/wdkl/nursewatch/presentation/ui/activities/WelcomeActivity.java
  17. 33 8
      app/src/main/java/com/wdkl/nursewatch/presentation/ui/activitiesphone/MainActivityPhone.java
  18. 10 1
      app/src/main/java/com/wdkl/nursewatch/presentation/ui/activitiesphone/SettingActivityPhone.java
  19. 1 3
      app/src/main/java/com/wdkl/nursewatch/service/BeaconService.java
  20. 2 2
      app/src/main/java/com/wdkl/nursewatch/utils/PalyPhonetics.java
  21. 84 19
      app/src/main/java/com/wdkl/nursewatch/utils/WebsocketUtil.java
  22. 1 1
      app/src/main/res/layout/activity_voice_message.xml
  23. 2 0
      build.gradle

BIN
.idea/caches/build_file_checksums.ser


BIN
.idea/caches/gradle_models.ser


+ 116 - 0
.idea/codeStyles/Project.xml

@@ -0,0 +1,116 @@
+<component name="ProjectCodeStyleConfiguration">
+  <code_scheme name="Project" version="173">
+    <codeStyleSettings language="XML">
+      <indentOptions>
+        <option name="CONTINUATION_INDENT_SIZE" value="4" />
+      </indentOptions>
+      <arrangement>
+        <rules>
+          <section>
+            <rule>
+              <match>
+                <AND>
+                  <NAME>xmlns:android</NAME>
+                  <XML_ATTRIBUTE />
+                  <XML_NAMESPACE>^$</XML_NAMESPACE>
+                </AND>
+              </match>
+            </rule>
+          </section>
+          <section>
+            <rule>
+              <match>
+                <AND>
+                  <NAME>xmlns:.*</NAME>
+                  <XML_ATTRIBUTE />
+                  <XML_NAMESPACE>^$</XML_NAMESPACE>
+                </AND>
+              </match>
+              <order>BY_NAME</order>
+            </rule>
+          </section>
+          <section>
+            <rule>
+              <match>
+                <AND>
+                  <NAME>.*:id</NAME>
+                  <XML_ATTRIBUTE />
+                  <XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
+                </AND>
+              </match>
+            </rule>
+          </section>
+          <section>
+            <rule>
+              <match>
+                <AND>
+                  <NAME>.*:name</NAME>
+                  <XML_ATTRIBUTE />
+                  <XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
+                </AND>
+              </match>
+            </rule>
+          </section>
+          <section>
+            <rule>
+              <match>
+                <AND>
+                  <NAME>name</NAME>
+                  <XML_ATTRIBUTE />
+                  <XML_NAMESPACE>^$</XML_NAMESPACE>
+                </AND>
+              </match>
+            </rule>
+          </section>
+          <section>
+            <rule>
+              <match>
+                <AND>
+                  <NAME>style</NAME>
+                  <XML_ATTRIBUTE />
+                  <XML_NAMESPACE>^$</XML_NAMESPACE>
+                </AND>
+              </match>
+            </rule>
+          </section>
+          <section>
+            <rule>
+              <match>
+                <AND>
+                  <NAME>.*</NAME>
+                  <XML_ATTRIBUTE />
+                  <XML_NAMESPACE>^$</XML_NAMESPACE>
+                </AND>
+              </match>
+              <order>BY_NAME</order>
+            </rule>
+          </section>
+          <section>
+            <rule>
+              <match>
+                <AND>
+                  <NAME>.*</NAME>
+                  <XML_ATTRIBUTE />
+                  <XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
+                </AND>
+              </match>
+              <order>ANDROID_ATTRIBUTE_ORDER</order>
+            </rule>
+          </section>
+          <section>
+            <rule>
+              <match>
+                <AND>
+                  <NAME>.*</NAME>
+                  <XML_ATTRIBUTE />
+                  <XML_NAMESPACE>.*</XML_NAMESPACE>
+                </AND>
+              </match>
+              <order>BY_NAME</order>
+            </rule>
+          </section>
+        </rules>
+      </arrangement>
+    </codeStyleSettings>
+  </code_scheme>
+</component>

+ 0 - 4
.idea/encodings.xml

@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project version="4">
-  <component name="Encoding" addBOMForNewFiles="with NO BOM" />
-</project>

+ 1 - 3
.idea/gradle.xml

@@ -3,9 +3,6 @@
   <component name="GradleSettings">
     <option name="linkedExternalProjectsSettings">
       <GradleProjectSettings>
-        <compositeConfiguration>
-          <compositeBuild compositeDefinitionSource="SCRIPT" />
-        </compositeConfiguration>
         <option name="distributionType" value="DEFAULT_WRAPPED" />
         <option name="externalProjectPath" value="$PROJECT_DIR$" />
         <option name="modules">
@@ -15,6 +12,7 @@
           </set>
         </option>
         <option name="resolveModulePerSourceSet" value="false" />
+        <option name="testRunner" value="PLATFORM" />
       </GradleProjectSettings>
     </option>
   </component>

+ 1 - 1
app/build.gradle

@@ -8,7 +8,7 @@ android {
         minSdkVersion 19
         targetSdkVersion 26
         versionCode 1
-        versionName "2.2"
+        versionName "2.6"
         testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
         android.defaultConfig.javaCompileOptions.annotationProcessorOptions.includeCompileClasspath = true
 

+ 1 - 1
app/src/main/AndroidManifest.xml

@@ -83,7 +83,7 @@
             </intent-filter>
         </activity>
         <activity
-            android:name=".presentation.ui.activities.HomeActivity"
+            android:name="com.wdkl.nursewatch.presentation.ui.activities.HomeActivity"
             android:launchMode="singleTask"
             android:screenOrientation="portrait" />
         <activity

+ 1 - 1
app/src/main/java/com/wdkl/nursewatch/adapters/HistoryCallAdapter.java

@@ -52,7 +52,7 @@ public class HistoryCallAdapter extends RecyclerArrayAdapter<MessageEntity> {
 
         @Override
         public void setData(final MessageEntity data) {
-            tvName.setText(data.getPatientName());
+            tvName.setText(data.getDataFive()+"房"+data.getPatientName());
             if (data.getDataEight().equals(Constants.SON_CALL)) {//床头机呼叫
                 imgPicture.setImageResource(R.drawable.ic_call_bed);
             } else if (data.getDataEight().equals(Constants.WSHROOM_CALL)) {//卫生间紧急呼叫

+ 1 - 1
app/src/main/java/com/wdkl/nursewatch/adapters/HistoryCallAdapterPhone.java

@@ -62,7 +62,7 @@ public class HistoryCallAdapterPhone extends RecyclerArrayAdapter<MessageEntity>
         @Override
         public void setData(final MessageEntity data) {
             item_tv_name.setText(data.getDataNine());
-            item_tv_content.setText(data.getPatientName());
+            item_tv_content.setText(data.getDataFive()+"房"+data.getPatientName());
             if (data.getDataEight().equals(Constants.SON_CALL)) {//床头机呼叫
                 list_item_img_logo.setImageResource(R.drawable.ic_call_bed);
             } else if (data.getDataEight().equals(Constants.WSHROOM_CALL)) {//卫生间紧急呼叫

+ 2 - 0
app/src/main/java/com/wdkl/nursewatch/common/Constants.java

@@ -48,6 +48,8 @@ public class Constants {
     public static final int TIME_WHAT = 1000;//时间
     //是否退出
     public static boolean IS_LOGOUT = true;
+    //设备Mac地址
+    public static String DeviceMac = "";
 
     //是否震动
     public static boolean IS_Shake = true;

+ 13 - 7
app/src/main/java/com/wdkl/nursewatch/entity/MessageEntity.java

@@ -1,8 +1,11 @@
 package com.wdkl.nursewatch.entity;
 
+import android.nfc.Tag;
 import android.util.Log;
 
 public class MessageEntity {
+private static String TAG = MessageEntity.class.getSimpleName();
+
 
     private Long Id;
     //病人ID
@@ -293,12 +296,15 @@ public class MessageEntity {
 
     public static boolean equalsThisEntity(MessageEntity m1, MessageEntity m2) {
         if (null == m1 || null == m2) return false;
+        Log.e(TAG," m1 "+m1.dataTen+" m2 "+m2.dataTen);
+
         try {
-            if (null == m1.getDataTen() && null != m2.getDataTen()) {
-                return false;
-            } else if (null != m1.getDataTen() && null == m2.getDataTen()) {
-                return false;
-            } else if (null == m1.getDataTen() && null == m2.getDataTen()) {
+//            if (null == m1.getDataTen() && null != m2.getDataTen()) {
+//                return false;
+//            } else if (null != m1.getDataTen() && null == m2.getDataTen()) {
+//                return false;
+//            } else
+            if (null == m1.getDataTen() && null == m2.getDataTen()) {
                 return m1.getPatientName().equals(m2.getPatientName()) && m1.getPatientID().equals(m2.getPatientID())
                         && m1.getDataOne().equals(m2.getDataOne()) && m1.getDataTwo().equals(m2.getDataTwo()) && m1.getDataThree().equals(m2.getDataThree())
                         && m1.getDataFour().equals(m2.getDataFour()) && m1.getDataFive().equals(m2.getDataFive()) && m1.getDataSix().equals(m2.getDataSix())
@@ -321,8 +327,8 @@ public class MessageEntity {
                 return m1.getPatientName().equals(m2.getPatientName()) && m1.getPatientID().equals(m2.getPatientID())
                         && m1.getDataOne().equals(m2.getDataOne()) && m1.getDataTwo().equals(m2.getDataTwo()) && m1.getDataThree().equals(m2.getDataThree())
                         && m1.getDataFour().equals(m2.getDataFour()) && m1.getDataFive().equals(m2.getDataFive()) && m1.getDataSix().equals(m2.getDataSix())
-                        && m1.getDataSeven().equals(m2.getDataSeven()) && m1.getDataEight().equals(m2.getDataEight()) && m1.getDataNine().equals(m2.getDataNine())
-                        && m1.getDataTen().equals(m2.getDataTen());
+                        && m1.getDataSeven().equals(m2.getDataSeven()) && m1.getDataEight().equals(m2.getDataEight()) && m1.getDataNine().equals(m2.getDataNine());
+//                        && m1.getDataTen().equals(m2.getDataTen());
             }
         } catch (Exception e) {
 

+ 14 - 1
app/src/main/java/com/wdkl/nursewatch/entity/WebsocketEntity.java

@@ -18,14 +18,19 @@ public class WebsocketEntity {
     private String UDPData;
     //设备类型
     private String DeviceType;
+    //设备MAC
+    private String DeviceMac;
 
-    public WebsocketEntity(Long id, String ServerID,String DepartmentsID, String NurseID, String UDPData, String DeviceType) {
+
+    public WebsocketEntity(Long id, String ServerID,String DepartmentsID, String NurseID, String UDPData,
+                           String DeviceType,String DeviceMac) {
         this.id = id;
         this.ServerID = ServerID;
         this.DepartmentsID = DepartmentsID;
         this.NurseID = NurseID;
         this.UDPData = UDPData;
         this.DeviceType = DeviceType;
+        this.DeviceMac = DeviceMac;
     }
 
     public WebsocketEntity() {
@@ -78,4 +83,12 @@ public class WebsocketEntity {
     public void setId(Long id) {
         this.id = id;
     }
+
+    public String getDeviceMac() {
+        return DeviceMac;
+    }
+
+    public void setDeviceMac(String deviceMac) {
+        DeviceMac = deviceMac;
+    }
 }

+ 6 - 1
app/src/main/java/com/wdkl/nursewatch/presentation/ui/activities/HomeActivity.java

@@ -103,6 +103,10 @@ public class HomeActivity extends BaseActivity implements View.OnClickListener {
             Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE,
             Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.ACCESS_FINE_LOCATION};
 
+
+    public static HomeActivity homeActivity;
+
+
     @Override
     public int getLayoutId() {
         return R.layout.activity_home;
@@ -110,6 +114,7 @@ public class HomeActivity extends BaseActivity implements View.OnClickListener {
 
     @Override
     protected void initView() {
+        homeActivity = this;
         applyPermission();
         ll_home_all.setOnClickListener(this);
             battery_view.setVisibility(View.VISIBLE);
@@ -253,7 +258,7 @@ public class HomeActivity extends BaseActivity implements View.OnClickListener {
         if (StringUtils.notEmpty(departmentsId)) {
             Constants.IS_LOGOUT = false;
 
-            if (WebsocketUtil.WEBSOCKET_STATE != WebsocketUtil.WEBSOCKET_SUCCESS) {
+            if (WebsocketUtil.WEBSOCKET_STATE != WebsocketUtil.WEBSOCKET_ONOPEN) {
                 WebsocketUtil.connectWS();
                 tv_home_times.setTextColor(Color.RED);
             } else {

+ 3 - 1
app/src/main/java/com/wdkl/nursewatch/presentation/ui/activities/MainActivity.java

@@ -199,7 +199,7 @@ public class MainActivity extends BaseActivity implements View.OnClickListener,
         NetworkUtil.checkNetworkAvailable();
         refreshCallList();
         loginMachineId = SharedPreferencesUtil.getStringSp(SharedPreferencesUtil.LOGIN_DEPARTMENTSID);
-        if (StringUtils.notEmpty(loginMachineId) && WebsocketUtil.WEBSOCKET_STATE != WebsocketUtil.WEBSOCKET_SUCCESS) {
+        if (StringUtils.notEmpty(loginMachineId) && WebsocketUtil.WEBSOCKET_STATE != WebsocketUtil.WEBSOCKET_ONOPEN) {
             WebsocketUtil.connectWS();
         }
     }
@@ -287,6 +287,7 @@ public class MainActivity extends BaseActivity implements View.OnClickListener,
                 MyApplication.speakEntityList.clear();
                 refreshCallList();
             } else if (dialogType == 1) {
+                SharedPreferencesUtil.putStringSp(SharedPreferencesUtil.LOGIN_TAG, "");
                 SharedPreferencesUtil.putStringSp(SharedPreferencesUtil.LOGIN_SERVERID, "");
                 SharedPreferencesUtil.putStringSp(SharedPreferencesUtil.LOGIN_DEPARTMENTSID, "");
                 SharedPreferencesUtil.putStringSp(SharedPreferencesUtil.LOGIN_NURSE_ID, "");
@@ -295,6 +296,7 @@ public class MainActivity extends BaseActivity implements View.OnClickListener,
                 startActivity(intent);
                 Constants.IS_LOGOUT = true;
                 WebsocketUtil.getInstance().getWebSocket().cancel();
+                WebsocketUtil.getHttpClient().dispatcher().executorService().shutdown();
                 PalyPhonetics.setPalyDismiss(true);
                 MyApplication.speakEntityList.clear();
                 SaveCallListUtil.deleteAllEntity();

+ 2 - 2
app/src/main/java/com/wdkl/nursewatch/presentation/ui/activities/VoiceMessageActivity.java

@@ -77,7 +77,7 @@ public class VoiceMessageActivity extends BaseActivity implements View.OnClickLi
         if (StringUtils.listNotEmpty(callList)) {
             // if(callList.size()>1) Collections.reverse(callList);//倒序
             messageEntity = callList.get(callList.size() - 1);
-            mContentName.setText(messageEntity.getPatientName());
+            mContentName.setText(messageEntity.getDataFive()+"房"+messageEntity.getPatientName());
             tv_num.setText(callList.size()+"");
         } else {
             messageEntity =null;
@@ -154,7 +154,7 @@ public class VoiceMessageActivity extends BaseActivity implements View.OnClickLi
                         Character.toString((char) 3) +
                         messageEntity.getDataTen() +
                         Character.toString((char) 3) +
-                        "1"+
+                        machineId+
                         "#\"}"+
                         "}"+
                         "}";

+ 6 - 1
app/src/main/java/com/wdkl/nursewatch/presentation/ui/activities/WelcomeActivity.java

@@ -2,13 +2,17 @@ package com.wdkl.nursewatch.presentation.ui.activities;
 
 import android.content.Intent;
 import android.os.Handler;
+import android.text.TextUtils;
+import android.util.Log;
 
 import com.wdkl.nursewatch.MyApplication;
 import com.wdkl.nursewatch.R;
+import com.wdkl.nursewatch.common.Constants;
 import com.wdkl.nursewatch.entity.MessageEvent;
 import com.wdkl.nursewatch.presentation.ui.activitiesphone.LoginActivityPhone;
 import com.wdkl.nursewatch.presentation.ui.activitiesphone.MainActivityPhone;
 import com.wdkl.nursewatch.presentation.ui.base.BaseActivity;
+import com.wdkl.nursewatch.utils.PhoneUtils;
 import com.wdkl.nursewatch.utils.SharedPreferencesUtil;
 import com.wdkl.nursewatch.utils.StringUtils;
 
@@ -33,7 +37,7 @@ public class WelcomeActivity extends BaseActivity {
 
     @Override
     protected void initData() {
-
+        Constants.DeviceMac = PhoneUtils.getLocalMacAddress(this,false);
     }
 
     @Override
@@ -42,6 +46,7 @@ public class WelcomeActivity extends BaseActivity {
 
         String login_tag = SharedPreferencesUtil.getStringSp( SharedPreferencesUtil.LOGIN_TAG);
         if (StringUtils.notEmpty(login_tag)) {
+            Constants.IS_LOGOUT = false;
             if(isWatch()){
                 startActivity(new Intent(WelcomeActivity.this, HomeActivity.class));
             }else{

+ 33 - 8
app/src/main/java/com/wdkl/nursewatch/presentation/ui/activitiesphone/MainActivityPhone.java

@@ -81,9 +81,29 @@ public class MainActivityPhone extends BaseActivity implements View.OnClickListe
 
     }
 
+//    @Override
+//    protected void onRestart() {
+//        super.onRestart();
+//        Log.e(TAG,"onRestart");
+//    }
+//
+//    @Override
+//    protected void onStart() {
+//        super.onStart();
+//        Log.e(TAG,"onStart");
+
+
+
+//    }
+
     @Override
     protected void onResume() {
         super.onResume();
+
+        String login_tag = SharedPreferencesUtil.getStringSp(SharedPreferencesUtil.LOGIN_TAG);
+        if (!StringUtils.notEmpty(login_tag)) { //判断是否绑定 因为在后台的时候可能被别人的绑定顶掉
+            finish();
+        }
         NetworkUtil.checkNetworkAvailable();
         refreshCallList();
         String serverId = SharedPreferencesUtil.getStringSp(SharedPreferencesUtil.LOGIN_SERVERID);
@@ -91,7 +111,10 @@ public class MainActivityPhone extends BaseActivity implements View.OnClickListe
         String nurseID = SharedPreferencesUtil.getStringSp(SharedPreferencesUtil.LOGIN_NURSE_ID);
         String nurseName = SharedPreferencesUtil.getStringSp(SharedPreferencesUtil.LOGIN_NURSE_NAME);
 
-        if (StringUtils.notEmpty(departmentsId) && WebsocketUtil.WEBSOCKET_STATE != WebsocketUtil.WEBSOCKET_SUCCESS) {
+//        Log.e(TAG,"连接状态 WEBSOCKET_STATE "+WebsocketUtil.WEBSOCKET_STATE);
+
+
+        if (StringUtils.notEmpty(departmentsId) && WebsocketUtil.WEBSOCKET_STATE != WebsocketUtil.WEBSOCKET_ONOPEN) {
             WebsocketUtil.connectWS();
         }
         //启动蓝牙信标扫描服务
@@ -107,6 +130,8 @@ public class MainActivityPhone extends BaseActivity implements View.OnClickListe
     @Override
     protected void onDestroy() {
         super.onDestroy();
+        WebsocketUtil.getInstance().getWebSocket().close(1000, "主动关闭");
+        WebsocketUtil.getHttpClient().dispatcher().executorService().shutdown();
     }
 
     @Subscribe(threadMode = ThreadMode.MAIN)
@@ -230,13 +255,13 @@ public class MainActivityPhone extends BaseActivity implements View.OnClickListe
 //                    serverId = "\"7155458a-c2c2-485c-b6f3-9c5aba3b1bd3\"";
 //                    machineId = "1";
 
-                    String cancelUdpCall = "{\"serverSystemId\":"+ "\""+serverId+"\"" +
+                    String cancelUdpCall = "{\"serverSystemId\":" + "\"" + serverId + "\"" +
                             ",\"msgData\": " +
                             "{\"type\":" + "2" +
                             ",\"msgData\": " +
-                            "{\"partId\":" + "\""+machineId+"\"" +
+                            "{\"partId\":" + "\"" + machineId + "\"" +
                             ",\"udpStr\":" +
-                            "\"$call_1_hang_up"+Character.toString((char) 3)
+                            "\"$call_1_hang_up" + Character.toString((char) 3)
                             + messageEntity.getDataOne() +
                             Character.toString((char) 3) +
                             messageEntity.getDataTwo() +
@@ -257,9 +282,9 @@ public class MainActivityPhone extends BaseActivity implements View.OnClickListe
                             Character.toString((char) 3) +
                             messageEntity.getDataTen() +
                             Character.toString((char) 3) +
-                            "1"+
-                            "#\"}"+
-                            "}"+
+                            machineId +
+                            "#\"}" +
+                            "}" +
                             "}";
 
 
@@ -283,7 +308,7 @@ public class MainActivityPhone extends BaseActivity implements View.OnClickListe
 //                        "}";
 
 
-                    Log.e("MainActivityPhone","cancelUdpCall "+cancelUdpCall);
+                    Log.e("MainActivityPhone", "cancelUdpCall " + cancelUdpCall);
                     WebsocketUtil.getInstance().getWebSocket().send(cancelUdpCall);
 
 

+ 10 - 1
app/src/main/java/com/wdkl/nursewatch/presentation/ui/activitiesphone/SettingActivityPhone.java

@@ -29,6 +29,10 @@ import butterknife.Bind;
 
 public class SettingActivityPhone extends BaseActivity implements View.OnClickListener {
 
+
+
+   public static SettingActivityPhone settingActivityPhone;
+
     @Bind(R.id.view_title_left_tv)
     TextView titleLeftText;
     @Bind(R.id.view_title_right_tv)
@@ -81,6 +85,8 @@ public class SettingActivityPhone extends BaseActivity implements View.OnClickLi
         leftImageView.setOnClickListener(this);
         unbind.setOnClickListener(this);
         into_set.setOnClickListener(this);
+        settingActivityPhone = this;
+
 
         rg_setting_rong.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
             @Override
@@ -170,6 +176,7 @@ public class SettingActivityPhone extends BaseActivity implements View.OnClickLi
     @Override
     public void onClickButtonTwo() {
         try {
+            SharedPreferencesUtil.putStringSp(SharedPreferencesUtil.LOGIN_TAG, "");
             SharedPreferencesUtil.putStringSp(SharedPreferencesUtil.LOGIN_SERVERID, "");
             SharedPreferencesUtil.putStringSp(SharedPreferencesUtil.LOGIN_DEPARTMENTSID, "");
             SharedPreferencesUtil.putStringSp(SharedPreferencesUtil.LOGIN_NURSE_ID, "");
@@ -177,7 +184,9 @@ public class SettingActivityPhone extends BaseActivity implements View.OnClickLi
             Intent intent = new Intent(this, LoginActivityPhone.class);
             startActivity(intent);
             Constants.IS_LOGOUT = true;
-            WebsocketUtil.getInstance().getWebSocket().cancel();
+//            WebsocketUtil.getInstance().getWebSocket().cancel();
+            WebsocketUtil.getInstance().getWebSocket().close(1000,"主动关闭");
+            WebsocketUtil.getHttpClient().dispatcher().executorService().shutdown();
             PalyPhonetics.setPalyDismiss(true);
             MyApplication.speakEntityList.clear();
             SaveCallListUtil.deleteAllEntity();

+ 1 - 3
app/src/main/java/com/wdkl/nursewatch/service/BeaconService.java

@@ -6,7 +6,6 @@ import android.os.Binder;
 import android.os.Build;
 import android.os.IBinder;
 import android.os.RemoteException;
-import android.support.annotation.Nullable;
 import android.util.Log;
 
 import androidx.annotation.RequiresApi;
@@ -52,7 +51,7 @@ public class BeaconService extends Service implements BeaconConsumer, RangeNotif
     public static final String NURSE_NAME_KEY = BeaconService.class.getName() + ".NURSE_NAME_KEY";
 
 //    private static final String UPDATE_BEACON_INFO_URL = "http://id.wdklian.com:10018/api/Beacon/UpdateBeaconPosition";
-    private static final String UPDATE_BEACON_INFO_URL = "http://55682a9da6da.ngrok.io/beacon";
+    private static final String UPDATE_BEACON_INFO_URL = "http://3ef170366661.ngrok.io/beacon";
     private static final String BEACON_FORMAT = "m:2-3=0215,i:4-19,i:20-21,i:22-23,p:24-24";
 
     private static final ExecutorService BEACON_HANDLER = new ThreadPoolExecutor(1, 1, 0L, TimeUnit.MILLISECONDS, new LinkedBlockingQueue<>(), new BeaconThreadFactory());
@@ -88,7 +87,6 @@ public class BeaconService extends Service implements BeaconConsumer, RangeNotif
         this.beaconManager.bind(this);
     }
 
-    @Nullable
     @Override
     public IBinder onBind(Intent intent) {
         return new Binder();

+ 2 - 2
app/src/main/java/com/wdkl/nursewatch/utils/PalyPhonetics.java

@@ -318,7 +318,7 @@ public class PalyPhonetics {
 
     public static boolean thisEntityIsSpeaking(MessageEntity m) {
         if (null == m) return false;
-        return MessageEntity.equalsThisEntity(m, loopingUdpentity);
+        return MessageEntity.equalsThisEntity(loopingUdpentity,m);
     }
 
     public void startPalyPhonetics() {
@@ -342,7 +342,7 @@ public class PalyPhonetics {
      * 播放语音(waderson 20171031)
      */
     public void palyPhonetics() {
-        LogUtil.d("palyPhonetics", "size==" + MyApplication.speakEntityList.size());
+//        LogUtil.d("palyPhonetics", "size==" + MyApplication.speakEntityList.size());
         if (!MyApplication.IS_HAVE_SPEAK) return;
         if (null != MyApplication.speakEntityList && MyApplication.speakEntityList.size() > 0) {
             String voiceBroadcastType;

+ 84 - 19
app/src/main/java/com/wdkl/nursewatch/utils/WebsocketUtil.java

@@ -1,7 +1,10 @@
 package com.wdkl.nursewatch.utils;
 
+import android.content.Intent;
 import android.support.annotation.Nullable;
+import android.text.TextUtils;
 import android.util.Log;
+import android.widget.Toast;
 
 import com.google.gson.Gson;
 import com.google.gson.GsonBuilder;
@@ -11,6 +14,10 @@ import com.wdkl.nursewatch.entity.MessageEntity;
 import com.wdkl.nursewatch.entity.MessageEvent;
 import com.wdkl.nursewatch.entity.WebsocketEntity;
 import com.wdkl.nursewatch.entity.WebsocketEntityReal;
+import com.wdkl.nursewatch.presentation.ui.activities.HomeActivity;
+import com.wdkl.nursewatch.presentation.ui.activities.WelcomeActivity;
+import com.wdkl.nursewatch.presentation.ui.activitiesphone.LoginActivityPhone;
+import com.wdkl.nursewatch.presentation.ui.activitiesphone.SettingActivityPhone;
 
 import org.greenrobot.eventbus.EventBus;
 
@@ -23,15 +30,16 @@ import okhttp3.WebSocket;
 import okhttp3.WebSocketListener;
 import okio.ByteString;
 
-public class WebsocketUtil {
-
+import static com.wdkl.nursewatch.presentation.ui.activitiesphone.SettingActivityPhone.settingActivityPhone;
 
+public class WebsocketUtil {
     private String TAG = WebsocketUtil.class.getSimpleName();
-      //原有的
+    //原有的
 //    public static String serverUrl = "ws://id.wdklian.com:10011/call";
-    //public static String serverUrl = "ws://192.168.3.88:10011/call";//吴总做测试 20190417
 
     //后面修改的
+//    public static String serverUrl = "ws://192.168.1.128:10011/ch/2/";
+
     public static String serverUrl = "ws://39.108.248.223:10011/ch/2/";
 
     public static int WEBSOCKET_SUCCESS = 0;      //连接成功
@@ -41,7 +49,7 @@ public class WebsocketUtil {
     public static int WEBSOCKET_ONFAILURE = 4; //连接失败
     public static int WEBSOCKET_STATE = -1;    //连接状态
 
-    public OkHttpClient client;
+    public static OkHttpClient client;
     public WebSocket webSocket;
     public Gson gson;
     public GsonBuilder builder;
@@ -71,11 +79,11 @@ public class WebsocketUtil {
         return webSocket;
     }
 
-    public OkHttpClient getHttpClient() {
+    public static OkHttpClient getHttpClient() {
         return client;
     }
 
-    public void connect(String serverID,String machineID, String nurseID) {
+    public void connect(String serverID, String machineID, String nurseID) {
         LogUtil.d(TAG, "connect machineID==" + machineID + "==nurseID==" + nurseID);
         if (!StringUtils.notEmpty(machineID)) return;
         WebsocketEntity websocketEntity = new WebsocketEntity();
@@ -84,8 +92,22 @@ public class WebsocketUtil {
         websocketEntity.setNurseID(nurseID);
         websocketEntity.setUDPData("");
         websocketEntity.setDeviceType("2");
-        Log.e(TAG," 网址:"+serverUrl+websocketEntity.getServerID()+
-                "_"+"1"+"_"+websocketEntity.getNurseID());
+        if (!TextUtils.isEmpty(Constants.DeviceMac)) {
+            websocketEntity.setDeviceMac(Constants.DeviceMac);
+        } else {
+            Constants.DeviceMac = PhoneUtils.getLocalMacAddress(MyApplication.getAppContext(), false);
+            websocketEntity.setDeviceMac(Constants.DeviceMac);
+        }
+
+        Log.e(TAG,""+Constants.DeviceMac);
+
+        if (TextUtils.isEmpty(Constants.DeviceMac)) {
+            Toast.makeText(MyApplication.getAppContext(), "获取MAC地址失败 不能注册", Toast.LENGTH_LONG).show();
+            return;
+        }
+
+        Log.e(TAG, " 网址:" + serverUrl + websocketEntity.getServerID() +
+                "_" + websocketEntity.getDepartmentsID() + "_" + websocketEntity.getNurseID() + "_" + websocketEntity.getDeviceMac());
         start(websocketEntity);
     }
 
@@ -95,8 +117,8 @@ public class WebsocketUtil {
 
         this.websocketEntity = websocketEntity;
 
-        Request request = new Request.Builder().url(serverUrl+websocketEntity.getServerID()+
-                "_"+"1"+"_"+websocketEntity.getNurseID()).build();
+        Request request = new Request.Builder().url(serverUrl + websocketEntity.getServerID() +
+                "_" + websocketEntity.getDepartmentsID() + "_" + websocketEntity.getNurseID() + "_" + websocketEntity.getDeviceMac()).build();
 
         EchoWebSocketListener listener = new EchoWebSocketListener(websocketEntity);
         client = new OkHttpClient.Builder().readTimeout(3, TimeUnit.SECONDS).build();
@@ -136,17 +158,17 @@ public class WebsocketUtil {
 
         @Override
         public void onMessage(WebSocket webSocket, String text) {//收到文本信息
-            LogUtil.d(TAG, "onMessage==1" + "text==" + text);
-            WEBSOCKET_STATE = WEBSOCKET_SUCCESS;
+            Log.e(TAG, "onMessage..." + "收到的信息text " + text);
+//            WEBSOCKET_STATE = WEBSOCKET_SUCCESS;
             // 0:索引 1:主机id 2:门口机id 3:子机id 4:sip地址 5:房间号 6:床号 7:护理等级 8:消息类型 9:名称
             if ("Hello!".equals(text)) {
                 EventBus.getDefault().post(new MessageEvent("success", Constants.EVENT_LOGIN_STATUS_MESSAGE));
             } else if (text.equals("{\"type\":\"ping\"}")) {
                 LogUtil.d(TAG, "onMessage 服务端收到心跳信号,返回来了");
             } else {
-                Log.e(TAG,"onMessage..."+text);
+                Log.e(TAG, "IS_LOGOUT..." + Constants.IS_LOGOUT);
 
-//                if (Constants.IS_LOGOUT) return;
+                if (Constants.IS_LOGOUT) return;
 //                WebsocketEntityReal websocketEntityReal = gson.fromJson(text, WebsocketEntityReal.class);
 //                text = websocketEntityReal.getUDPData();
 //                if (!text.equals("") && "$".equals(text.substring(0, 1))) { //判断是否为美元符号开头,如果是则是android 端的命令
@@ -156,6 +178,45 @@ public class WebsocketUtil {
 //                    onMessageCall(text, data);
 //                }
 
+                if ((websocketEntity.getServerID() + "_" + websocketEntity.getDepartmentsID() +
+                        "_" + websocketEntity.getNurseID() + "_" + websocketEntity.getDeviceMac()).equals(text)) {
+
+                    try {
+                        SharedPreferencesUtil.putStringSp(SharedPreferencesUtil.LOGIN_TAG, "");
+                        SharedPreferencesUtil.putStringSp(SharedPreferencesUtil.LOGIN_SERVERID, "");
+                        SharedPreferencesUtil.putStringSp(SharedPreferencesUtil.LOGIN_DEPARTMENTSID, "");
+                        SharedPreferencesUtil.putStringSp(SharedPreferencesUtil.LOGIN_NURSE_ID, "");
+                        SharedPreferencesUtil.putStringSp(SharedPreferencesUtil.LOGIN_NURSE_NAME, "");
+
+                        Log.e(TAG,"当前设备类型 "+PhoneUtils.isWatch(MyApplication.getAppContext()));
+                        if(PhoneUtils.isWatch(MyApplication.getAppContext())){
+                            Log.e(TAG,"当前设备类型 "+MyApplication.getAppContext());
+//                            Intent intent = new Intent(HomeActivity.homeActivity, HomeActivity.class);
+//                            HomeActivity.homeActivity.startActivity(intent);
+                            Intent intent = new Intent(MyApplication.getAppContext(), HomeActivity.class);
+                            intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+                            MyApplication.getAppContext().startActivity(intent);
+
+                         }else {
+                            Intent intent2 = new Intent(MyApplication.getAppContext(), LoginActivityPhone.class);
+                            MyApplication.getAppContext().startActivity(intent2);
+                        }
+
+                        Constants.IS_LOGOUT = true;
+//            WebsocketUtil.getInstance().getWebSocket().cancel();
+                        if(webSocket != null){
+                            webSocket.close(1000, "主动关闭");
+                        }
+                        client.dispatcher().executorService().shutdown();
+                        PalyPhonetics.setPalyDismiss(true);
+                        MyApplication.speakEntityList.clear();
+                        SaveCallListUtil.deleteAllEntity();
+                        SaveCallListUtil.deleteAllEntityNow();
+                        ToastUtil.showToast(MyApplication.getAppContext(), "解绑成功,请重新绑定");
+                        WebsocketUtil.WEBSOCKET_STATE = WebsocketUtil.WEBSOCKET_ONCLOSED;
+                    } catch (Exception e) {
+                    }
+                }
                 if (!text.equals("") && "$".equals(text.substring(0, 1))) { //判断是否为美元符号开头,如果是则是android 端的命令
                     text = delHeadAndEnd(text, "$", "#");
                     String[] data = text.split(Character.toString((char) 3));
@@ -169,7 +230,7 @@ public class WebsocketUtil {
         @Override
         public void onMessage(WebSocket webSocket, ByteString bytes) {//收到二进制信息
             LogUtil.d(TAG, "onMessage==2");
-            WEBSOCKET_STATE = WEBSOCKET_SUCCESS;
+//            WEBSOCKET_STATE = WEBSOCKET_SUCCESS;
             if (Constants.IS_LOGOUT) return;
         }
 
@@ -219,9 +280,13 @@ public class WebsocketUtil {
         String serverId = SharedPreferencesUtil.getStringSp(SharedPreferencesUtil.LOGIN_SERVERID);
         String loginMachineId = SharedPreferencesUtil.getStringSp(SharedPreferencesUtil.LOGIN_DEPARTMENTSID);
         String nurseId = SharedPreferencesUtil.getStringSp(SharedPreferencesUtil.LOGIN_NURSE_ID);
-//        if (StringUtils.notEmpty(loginMachineId) && StringUtils.notEmpty(nurseId) && !Constants.IS_LOGOUT && WEBSOCKET_STATE != WEBSOCKET_SUCCESS && WEBSOCKET_STATE != WEBSOCKET_ONOPEN) {
-        WebsocketUtil.getInstance().connect(serverId,loginMachineId, nurseId);
-//        }
+
+        Log.e("TAG","loginMachineId "+StringUtils.notEmpty(loginMachineId)+" nurseId "+StringUtils.notEmpty(nurseId)+
+                " IS_LOGOUT "+Constants.IS_LOGOUT+ " WEBSOCKET_STATE "+WEBSOCKET_STATE+" WEBSOCKET_STATE "+WEBSOCKET_STATE);
+
+        if (StringUtils.notEmpty(loginMachineId) && StringUtils.notEmpty(nurseId) && !Constants.IS_LOGOUT &&  WEBSOCKET_STATE != WEBSOCKET_ONOPEN) {
+            WebsocketUtil.getInstance().connect(serverId, loginMachineId, nurseId);
+        }
     }
 
     public synchronized void onMessageCall(String text, String[] data) {

+ 1 - 1
app/src/main/res/layout/activity_voice_message.xml

@@ -65,7 +65,7 @@
             android:singleLine="true"
             android:text="- -"
             android:textColor="#ffffff"
-            android:textSize="35sp" />
+            android:textSize="28sp" />
 
 
         <LinearLayout

+ 2 - 0
build.gradle

@@ -3,6 +3,7 @@
 buildscript {
     
     repositories {
+//        jcenter()
         mavenCentral()
         google()
         jcenter(){ url 'https://maven.aliyun.com/repository/jcenter' }
@@ -18,6 +19,7 @@ buildscript {
 
 allprojects {
     repositories {
+//        jcenter()
         mavenCentral()
         google()
         jcenter(){ url 'https://maven.aliyun.com/repository/jcenter' }