Kaynağa Gözat

Merge branch 'yz_watch_wdklwebrtc_1.0.0' of http://git.wdklian.com/allen/ncs_android_frame into yz_watch_wdklwebrtc_1.0.0

# Conflicts:
#	home/src/main/code/com/wdkl/ncs/android/component/home/service/APPService.kt
#	middleware/src/main/code/com/wdkl/ncs/android/middleware/tcp/TcpClientHandler.java
wjk 4 yıl önce
ebeveyn
işleme
70d2251e44
49 değiştirilmiş dosya ile 492 ekleme ve 1603 silme
  1. BIN
      .gradle/4.10.1/fileContent/fileContent.lock
  2. BIN
      .gradle/4.10.1/fileHashes/fileHashes.bin
  3. BIN
      .gradle/4.10.1/fileHashes/fileHashes.lock
  4. BIN
      .gradle/4.10.1/fileHashes/resourceHashesCache.bin
  5. BIN
      .gradle/4.10.1/javaCompile/classAnalysis.bin
  6. BIN
      .gradle/4.10.1/javaCompile/javaCompile.lock
  7. BIN
      .gradle/4.10.1/javaCompile/taskHistory.bin
  8. BIN
      .gradle/4.10.1/taskHistory/taskHistory.bin
  9. BIN
      .gradle/4.10.1/taskHistory/taskHistory.lock
  10. BIN
      .gradle/4.4/fileChanges/last-build.bin
  11. BIN
      .gradle/4.4/fileContent/fileContent.lock
  12. 1 0
      .idea/gradle.xml
  13. 14 256
      build.gradle
  14. 14 10
      common/src/main/res/layout/custom_loading.xml
  15. 1 1
      home/src/main/AndroidManifest.xml
  16. 31 5
      home/src/main/code/com/wdkl/ncs/android/component/home/activity/AppUpdateActivity.kt
  17. 0 4
      home/src/main/code/com/wdkl/ncs/android/component/home/activity/EventActivity.kt
  18. 29 67
      home/src/main/code/com/wdkl/ncs/android/component/home/activity/WatchCallRecordsActivity.kt
  19. 26 75
      home/src/main/code/com/wdkl/ncs/android/component/home/activity/WatchEventDetailActivity.kt
  20. 16 280
      home/src/main/code/com/wdkl/ncs/android/component/home/activity/WatchHome2Activity.kt
  21. 0 480
      home/src/main/code/com/wdkl/ncs/android/component/home/activity/WatchHomeActivity.kt
  22. 3 3
      home/src/main/code/com/wdkl/ncs/android/component/home/activity/WatchRegisterActivity.kt
  23. 20 6
      home/src/main/code/com/wdkl/ncs/android/component/home/activity/WatchUserSettingActivity.java
  24. 14 100
      home/src/main/code/com/wdkl/ncs/android/component/home/activity/WebRTCVoipAudioActivity.kt
  25. 4 8
      home/src/main/code/com/wdkl/ncs/android/component/home/activity/WebRTCVoipAudioRingingActivity.kt
  26. 2 6
      home/src/main/code/com/wdkl/ncs/android/component/home/broadcast/BatteryBroadcastReceiver.java
  27. 0 2
      home/src/main/code/com/wdkl/ncs/android/component/home/di/HomeComponent.kt
  28. 51 177
      home/src/main/code/com/wdkl/ncs/android/component/home/service/APPService.kt
  29. 78 17
      home/src/main/code/com/wdkl/ncs/android/component/home/service/TcpHandleService.kt
  30. 2 2
      home/src/main/code/com/wdkl/ncs/android/component/home/settingconfig/SettingConfig.java
  31. 0 15
      home/src/main/code/com/wdkl/ncs/android/component/home/util/NetHelper.java
  32. 4 2
      home/src/main/code/com/wdkl/ncs/android/component/home/util/Util.kt
  33. 0 13
      home/src/main/java/com/wdkl/ncs/android/component/home/SOSEmergencyCallActivity.kt
  34. 1 0
      home/src/main/res/layout/activity_app_update.xml
  35. 1 0
      home/src/main/res/layout/activity_sos_emergency_call.xml
  36. 1 0
      home/src/main/res/layout/activity_web_rtc_voip_audio.xml
  37. 1 0
      home/src/main/res/layout/activity_web_rtc_voip_audio_ringing.xml
  38. 1 0
      home/src/main/res/layout/watch_activity_event_detail.xml
  39. 6 12
      middleware/src/main/code/com/wdkl/ncs/android/middleware/common/Constants.kt
  40. 5 2
      middleware/src/main/code/com/wdkl/ncs/android/middleware/logic/contract/home/AppUpdateContract.kt
  41. 3 3
      middleware/src/main/code/com/wdkl/ncs/android/middleware/logic/contract/home/WatchCallRecordsFragmentContract.kt
  42. 0 5
      middleware/src/main/code/com/wdkl/ncs/android/middleware/logic/contract/home/WatchHomeActivityContract.kt
  43. 60 0
      middleware/src/main/code/com/wdkl/ncs/android/middleware/logic/presenter/home/AppUpdatePresenter.kt
  44. 2 2
      middleware/src/main/code/com/wdkl/ncs/android/middleware/logic/presenter/home/WatchCallRecordsFragmentPresenter.kt
  45. 0 22
      middleware/src/main/code/com/wdkl/ncs/android/middleware/logic/presenter/home/WatchHomeActivityPresenter.kt
  46. 4 7
      middleware/src/main/code/com/wdkl/ncs/android/middleware/tcp/TcpClientHandler.java
  47. 18 18
      middleware/src/main/code/com/wdkl/ncs/android/middleware/tcp/channel/DeviceChannel.java
  48. 74 0
      readme.md
  49. 5 3
      rtc-chat/src/main/java/com/wdkl/skywebrtc/engine/webrtc/WebRTCEngine.java

BIN
.gradle/4.10.1/fileContent/fileContent.lock


BIN
.gradle/4.10.1/fileHashes/fileHashes.bin


BIN
.gradle/4.10.1/fileHashes/fileHashes.lock


BIN
.gradle/4.10.1/fileHashes/resourceHashesCache.bin


BIN
.gradle/4.10.1/javaCompile/classAnalysis.bin


BIN
.gradle/4.10.1/javaCompile/javaCompile.lock


BIN
.gradle/4.10.1/javaCompile/taskHistory.bin


BIN
.gradle/4.10.1/taskHistory/taskHistory.bin


BIN
.gradle/4.10.1/taskHistory/taskHistory.lock


BIN
.gradle/4.4/fileChanges/last-build.bin


BIN
.gradle/4.4/fileContent/fileContent.lock


+ 1 - 0
.idea/gradle.xml

@@ -28,5 +28,6 @@
         <option name="useQualifiedModuleNames" value="true" />
       </GradleProjectSettings>
     </option>
+    <option name="offlineMode" value="true" />
   </component>
 </project>

+ 14 - 256
build.gradle

@@ -1,248 +1,3 @@
-//buildscript {
-//    /**
-//     * Kotlin统一版本
-//     */
-//    ext.kotlin_version = '1.3.21'
-//
-//    /**
-//     * Aop编制版本
-//     */
-//    ext.aspectj_version = '1.8.9'
-//
-//    /**
-//     * 是否开启单独Module编译
-//     */
-//    ext.componentTag = false
-//
-//    /**
-//     * 路由注解处理器版本
-//     */
-//    ext.router_version = '1.0.2'
-//
-//    /**
-//     * kawo组件化框架版本
-//     */
-//    ext.kawo_version = '1.0.9'
-//
-//    /**
-//     * SDK最小支持版本
-//     */
-//    ext.min_sdk_version = 26
-//
-//    /**
-//     * SDK目标支持版本
-//     */
-//    ext.target_sdk_version = 28
-//
-//    /**
-//     * SDK编译版本
-//     */
-//    ext.build_tools_version = "26.0.2"
-//
-//    /**
-//     * 支持库版本
-//     */
-//    ext.support_library_version = "26.0.1"
-//
-//    /**
-//     * APP版本码
-//     */
-//    ext.app_version_code = 1
-//
-//    /**
-//     * APP版本号
-//     */
-//    ext.app_version = "1.0"
-//
-//    /**
-//     * 项目依赖库
-//     */
-//    dependencies {
-//        repositories {
-//            /**
-//             * 依赖仓储
-//             */
-//            maven { url 'https://maven.aliyun.com/repository/public' }
-//            maven { url 'https://maven.aliyun.com/repository/google'}
-//            maven { url 'https://jitpack.io' }
-//        }
-//        /**
-//         * Gradle插件
-//         */
-//        classpath 'com.android.tools.build:gradle:3.0.1'
-//
-//        /**
-//         * Kawo组件化插件
-//         */
-//        classpath "com.enation.geamtear.gradle:kawo:$kawo_version"
-//
-//        /**
-//         * KotlinGradle插件
-//         */
-//        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
-//
-//        /**
-//         * Kotlin辅助工具
-//         */
-//        classpath "org.jetbrains.kotlin:kotlin-android-extensions:$kotlin_version"
-//
-//        /**
-//         * Aop埋点相关
-//         */
-//        classpath "org.aspectj:aspectjtools:$aspectj_version"
-//    }
-//    repositories {
-//        mavenCentral()
-//    }
-//}
-///**
-// * 统一依赖仓储
-// */
-//allprojects {
-//    repositories {
-//        maven { url 'https://maven.aliyun.com/repository/public' }
-//        maven { url 'https://maven.aliyun.com/repository/google'}
-//        maven { url 'https://jitpack.io' }
-//    }
-//    tasks.withType(Javadoc) { // 新增
-//        options.addStringOption('Xdoclint:none', '-quiet')
-//        options.addStringOption('encoding', 'UTF-8')
-//    }
-//}
-//
-///**
-// *  清除Build配置时 删除根目录Build文件夹
-// */
-//task clean(type: Delete) {
-//    delete rootProject.buildDir
-//}
-
-//buildscript {
-//    /**
-//     * Kotlin统一版本
-//     */
-//    ext.kotlin_version = '1.3.21'
-//
-//    /**
-//     * Aop编制版本
-//     */
-//    ext.aspectj_version = '1.8.9'
-//
-//    /**
-//     * 是否开启单独Module编译
-//     */
-//    ext.componentTag = false
-//
-//    /**
-//     * 路由注解处理器版本
-//     */
-//    ext.router_version = '1.0.2'
-//
-//    /**
-//     * kawo组件化框架版本
-//     */
-//    ext.kawo_version = '1.0.9'
-//
-//    /**
-//     * SDK最小支持版本
-//     */
-//    ext.min_sdk_version = 17
-//
-//    /**
-//     * SDK目标支持版本
-//     */
-//    ext.target_sdk_version = 28
-//
-//    /**
-//     * SDK编译版本
-//     */
-//    ext.build_tools_version = "26.0.2"
-//
-//    /**
-//     * 支持库版本
-//     */
-//    ext.support_library_version = "26.0.1"
-//
-//    /**
-//     * APP版本码
-//     */
-//    ext.app_version_code = 1
-//
-//    /**
-//     * APP版本号
-//     */
-//    ext.app_version = "1.0"
-//
-//    /**
-//     * 项目依赖库
-//     */
-//    dependencies {
-//        repositories {
-//            jcenter()
-//            mavenCentral()
-//            google()
-//            /**
-//             * 依赖仓储
-//             */
-//            maven { url 'http://maven.aliyun.com/nexus/content/repositories/google' }
-//            maven { url 'http://maven.aliyun.com/nexus/content/repositories/jcenter'}
-//            maven { url 'http://maven.aliyun.com/nexus/content/groups/public/' }
-//            maven { url 'https://jitpack.io' }
-//        }
-//        /**
-//         * Gradle插件
-//         */
-//        classpath 'com.android.tools.build:gradle:3.0.1'
-//
-//        /**
-//         * Kawo组件化插件
-//         */
-//        classpath "com.enation.geamtear.gradle:kawo:$kawo_version"
-//
-//        /**
-//         * KotlinGradle插件
-//         */
-//        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
-//
-//        /**
-//         * Kotlin辅助工具
-//         */
-//        classpath "org.jetbrains.kotlin:kotlin-android-extensions:$kotlin_version"
-//
-//        /**
-//         * Aop埋点相关
-//         */
-//        classpath "org.aspectj:aspectjtools:$aspectj_version"
-//    }
-//}
-///**
-// * 统一依赖仓储
-// */
-//allprojects {
-//    repositories {
-//        jcenter()
-//        mavenCentral()
-//        google()
-//
-//        maven { url 'http://maven.aliyun.com/nexus/content/repositories/google' }
-//        maven { url 'http://maven.aliyun.com/nexus/content/repositories/jcenter'}
-//        maven { url 'http://maven.aliyun.com/nexus/content/groups/public/' }
-//        maven { url 'https://jitpack.io' }
-//    }
-//    tasks.withType(Javadoc) { // 新增
-//        options.addStringOption('Xdoclint:none', '-quiet')
-//        options.addStringOption('encoding', 'UTF-8')
-//    }
-//}
-//
-///**
-// *  清除Build配置时 删除根目录Build文件夹
-// */
-//task clean(type: Delete) {
-//    delete rootProject.buildDir
-//}
-
-
 buildscript {
     /**
      * Kotlin统一版本
@@ -292,12 +47,12 @@ buildscript {
     /**
      * APP版本码
      */
-    ext.app_version_code = 1
+    ext.app_version_code = 6
 
     /**
      * APP版本号
      */
-    ext.app_version = "1.0"
+    ext.app_version = "1.0.6"
 
     /**
      * 项目依赖库
@@ -307,9 +62,10 @@ buildscript {
             /**
              * 依赖仓储
              */
-            jcenter()
-            mavenCentral()
-            google()
+            maven { url 'http://maven.aliyun.com/nexus/content/repositories/google' }
+            maven { url 'http://maven.aliyun.com/nexus/content/repositories/jcenter'}
+            maven { url 'http://maven.aliyun.com/nexus/content/groups/public/' }
+            maven { url 'https://jitpack.io' }
         }
         /**
          * Gradle插件
@@ -337,7 +93,10 @@ buildscript {
         classpath "org.aspectj:aspectjtools:$aspectj_version"
     }
     repositories {
-        google()
+        maven { url 'http://maven.aliyun.com/nexus/content/repositories/google' }
+        maven { url 'http://maven.aliyun.com/nexus/content/repositories/jcenter'}
+        maven { url 'http://maven.aliyun.com/nexus/content/groups/public/' }
+        maven { url 'https://jitpack.io' }
     }
 }
 /**
@@ -345,12 +104,11 @@ buildscript {
  */
 allprojects {
     repositories {
-        jcenter()
-        mavenCentral()
-        google()
-
+        maven { url 'http://maven.aliyun.com/nexus/content/repositories/google' }
+        maven { url 'http://maven.aliyun.com/nexus/content/repositories/jcenter'}
+        maven { url 'http://maven.aliyun.com/nexus/content/groups/public/' }
+        maven { url 'https://jitpack.io' }
         maven { url 'https://dl.bintray.com/geamtear/maven' }
-        maven { url "https://jitpack.io" }
 
     }
     tasks.withType(Javadoc) { // 新增

+ 14 - 10
common/src/main/res/layout/custom_loading.xml

@@ -10,15 +10,19 @@
                     android:id="@+id/background"
                     android:layout_width="fill_parent"
                     android:layout_height="fill_parent">
-        <ImageView android:id="@+id/loadding_image"
-                   android:layout_width="30.0dip"
-                   android:layout_height="30.0dip"
-                   android:src="@drawable/load" />
-        <TextView android:textSize="10.0sp"
-                  android:textColor="#ffcccccc"
-                  android:gravity="center"
-                  android:layout_width="30.0dip"
-                  android:layout_height="30.0dip"
-                  android:text="TT" />
+
+        <ImageView
+            android:id="@+id/loadding_image"
+            android:layout_width="150.0dip"
+            android:layout_height="150.0dip"
+            android:src="@drawable/load" />
+
+        <TextView
+            android:layout_width="150.0dip"
+            android:layout_height="150.0dip"
+            android:gravity="center"
+            android:text="请等待"
+            android:textColor="#ffcccccc"
+            android:textSize="30.0sp" />
     </RelativeLayout>
 </LinearLayout>

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

@@ -14,7 +14,7 @@
         <activity
             android:name=".activity.HomeActivity"
             android:launchMode="singleTask" />
-        <activity android:name=".activity.WatchHomeActivity"
+        <activity android:name=".activity.WatchHome2Activity"
             android:launchMode="singleTask"/>
         <activity android:name=".activity.WatchContactsActivity" />
         <activity android:name=".activity.WatchCallRecordsActivity" />

+ 31 - 5
home/src/main/code/com/wdkl/ncs/android/component/home/activity/AppUpdateActivity.kt

@@ -2,26 +2,32 @@ package com.wdkl.ncs.android.component.home.activity
 
 import android.text.TextUtils
 import android.util.Log
+import android.view.View
 import com.enation.javashop.android.jrouter.external.annotation.Router
 import com.enation.javashop.net.engine.model.NetState
+import com.wdkl.ncs.android.component.home.BuildConfig
 import com.wdkl.ncs.android.component.home.R
 import com.wdkl.ncs.android.component.home.databinding.ActivityAppUpdateBinding
 import com.wdkl.ncs.android.component.home.helper.AppUpdateHelper
 import com.wdkl.ncs.android.component.home.helper.HttpHelper
 import com.wdkl.ncs.android.component.home.launch.HomeLaunch
+import com.wdkl.ncs.android.component.home.service.TcpHandleService
 import com.wdkl.ncs.android.component.nursehome.common.Constants
 import com.wdkl.ncs.android.lib.base.BaseActivity
+import com.wdkl.ncs.android.lib.utils.AppTool
+import com.wdkl.ncs.android.lib.utils.push
 import com.wdkl.ncs.android.lib.utils.showMessage
 import com.wdkl.ncs.android.lib.vo.filter
 import com.wdkl.ncs.android.middleware.api.UrlManager
 import com.wdkl.ncs.android.middleware.logic.contract.home.AppUpdateContract
 import com.wdkl.ncs.android.middleware.logic.presenter.home.AppUpdatePresenter
+import com.wdkl.ncs.android.middleware.model.dos.AppVersionDO
 import com.wdkl.ncs.android.middleware.utils.MessageEvent
 import kotlinx.android.synthetic.main.activity_app_update.*
 import org.greenrobot.eventbus.Subscribe
 import org.greenrobot.eventbus.ThreadMode
 
-@Router(path = "/callingbed/update")
+@Router(path = "/app/update")
 class AppUpdateActivity :BaseActivity<AppUpdatePresenter, ActivityAppUpdateBinding>(), AppUpdateContract.View {
     private val TAG = "AppUpdateActivity"
 
@@ -36,11 +42,31 @@ class AppUpdateActivity :BaseActivity<AppUpdatePresenter, ActivityAppUpdateBindi
     }
 
     override fun init() {
-        if (!TextUtils.isEmpty(Constants.APP_PATH)) {
-            downLoadAPK(urlManager.base + ":8006/" + Constants.APP_PATH)
+        checkAppVersion()
+    }
+
+    override fun handleAppVersion(appInfo: AppVersionDO) {
+        if (BuildConfig.VERSION_CODE < appInfo.versionNo){
+            if (!TextUtils.isEmpty(appInfo.appPath)) {
+                downLoadAPK(urlManager.base + ":8006/" + appInfo.appPath)
+            } else {
+                showMessage("下载路径异常")
+                finish()
+            }
         } else {
-            showMessage("下载路径异常")
-            finish()
+            showMessage("本机已经是最新版本")
+            activity_calling_bed_text_download.text = "本机已经是最新版本"
+            activity_appupdate_dialog_progressview.visibility = View.GONE
+            TcpHandleService.updateLastTime = System.currentTimeMillis() / 1000
+            AppTool.Time.delay(1000){
+                finish()
+            }
+        }
+    }
+
+    fun checkAppVersion() {
+        if (Constants.part_id != null) {
+            presenter.getAppVersion(Constants.part_id, 7)
         }
     }
 

+ 0 - 4
home/src/main/code/com/wdkl/ncs/android/component/home/activity/EventActivity.kt

@@ -186,10 +186,6 @@ class EventActivity : BaseActivity<WatchHomeActivityPresenter, WatchActivityEven
 
     }
 
-    override fun render(appInfo: AppVersionDO) {
-
-    }
-
     override fun setDeviceSettingData(partSettingDO: PartSettingDO) {
     }
 

+ 29 - 67
home/src/main/code/com/wdkl/ncs/android/component/home/activity/WatchCallRecordsActivity.kt

@@ -1,7 +1,6 @@
 package com.wdkl.ncs.android.component.home.activity
 
 import android.content.Intent
-import android.graphics.Color
 import android.os.CountDownTimer
 import android.util.Log
 import android.view.View
@@ -9,8 +8,8 @@ import com.alibaba.android.vlayout.DelegateAdapter
 import com.alibaba.android.vlayout.VirtualLayoutManager
 import com.enation.javashop.android.jrouter.external.annotation.Router
 import com.enation.javashop.net.engine.model.NetState
-import com.google.gson.FieldNamingPolicy
-import com.google.gson.GsonBuilder
+import com.enation.javashop.utils.base.tool.CommonTool
+import com.enation.javashop.utils.base.widget.LoadingDialog
 import com.scwang.smartrefresh.layout.footer.ClassicsFooter
 import com.wdkl.ncs.android.component.home.R
 import com.wdkl.ncs.android.component.home.adapter.WatchCallRecordsItemAdapter
@@ -20,13 +19,12 @@ import com.wdkl.ncs.android.component.nursehome.common.Constants
 import com.wdkl.ncs.android.lib.base.BaseActivity
 import com.wdkl.ncs.android.lib.utils.AppTool
 import com.wdkl.ncs.android.lib.utils.showMessage
-import com.wdkl.ncs.android.middleware.logic.contract.home.WatchActivityContract
 import com.wdkl.ncs.android.middleware.logic.contract.home.WatchCallRecordsFragmentContract
-import com.wdkl.ncs.android.middleware.logic.presenter.home.WatchActivityPresenter
 import com.wdkl.ncs.android.middleware.logic.presenter.home.WatchCallRecordsFragmentPresenter
 import com.wdkl.ncs.android.middleware.model.vo.InteractionVO
 import com.wdkl.ncs.android.middleware.model.vo.WatchContactsVO
 import com.wdkl.ncs.android.middleware.tcp.TcpClient
+import com.wdkl.ncs.android.middleware.tcp.channel.DeviceChannel
 import com.wdkl.ncs.android.middleware.tcp.channel.VoiceUtil
 import com.wdkl.ncs.android.middleware.tcp.dto.TcpModel
 import com.wdkl.ncs.android.middleware.tcp.enums.TcpAction
@@ -40,8 +38,6 @@ import org.greenrobot.eventbus.ThreadMode
 
 @Router(path = "/watch/callrecords")
 class WatchCallRecordsActivity : BaseActivity<WatchCallRecordsFragmentPresenter, WatchActivityCallRecordsBinding>(), WatchCallRecordsFragmentContract.View {
-
-
     var TAG = WatchCallRecordsActivity::class.java.getSimpleName()
 
     /**
@@ -60,6 +56,8 @@ class WatchCallRecordsActivity : BaseActivity<WatchCallRecordsFragmentPresenter,
 
     private val watchCallRecordsItemAdapter = WatchCallRecordsItemAdapter(ArrayList())
 
+    private lateinit var loadingDialog: LoadingDialog
+
     private var customerId = ""
     private var ACTION = "ACTION"
     var all = "ALL"
@@ -71,8 +69,6 @@ class WatchCallRecordsActivity : BaseActivity<WatchCallRecordsFragmentPresenter,
     private var CALL_TIMEOUT = 5 //多久可以再次点击
     //呼叫倒计时
     lateinit var countDownTimer: CountDownTimer
-    private var isClick = true //是否可点击
-
 
     override fun getLayId(): Int {
         return R.layout.watch_activity_call_records
@@ -83,9 +79,6 @@ class WatchCallRecordsActivity : BaseActivity<WatchCallRecordsFragmentPresenter,
     }
 
     override fun init() {
-//        AppTool.SystemUI.showNavigationBar(this,false)
-//        AppTool.SystemUI.ImmersiveWithBottomBarColor(this, Color.BLACK)
-
         /**初始化LayoutMannager*/
         virtualLayoutManager = VirtualLayoutManager(this.activity)
 
@@ -98,34 +91,30 @@ class WatchCallRecordsActivity : BaseActivity<WatchCallRecordsFragmentPresenter,
         call_records_recyv.layoutManager = virtualLayoutManager
         call_records_recyv.adapter = delegateAdapter
 
+        loadingDialog = CommonTool.createLoadingDialog(this, R.layout.custom_loading,R.id.loadding_image)
+
         receivedData = intent.getSerializableExtra("data") as WatchContactsVO?
         action = intent.getStringExtra("action")
         customerId = intent.getStringExtra("customer_id")
         if (action == all) {
             if (customerId.equals("")) {
 //            presenter.loadFloor(all, 1,30, Constants.ids.toInt(),0)
-                presenter.loadFloor(all, 1, 30, Constants.ids.toInt(), 0, 0)
+                presenter.loadPage(all, 1, 30, Constants.ids.toInt(), 0, 0)
                 call_relyout.visibility = View.GONE
             }
         } else if (action == unread) {
-            presenter.loadFloor(all, 1, 30, Constants.ids.toInt(), 0, 1)
+            presenter.loadPage(all, 1, 30, Constants.ids.toInt(), 0, 1)
             call_relyout.visibility = View.GONE
 
         } else if (action == initiator) {
             call_relyout.visibility = View.VISIBLE
-            presenter.loadFloor(initiator, 1, 30, Constants.ids.toInt(), customerId.toInt(), -1)
+            presenter.loadPage(initiator, 1, 30, Constants.ids.toInt(), customerId.toInt(), -1)
             call_relyout.setOnClickListener {
-                if (isClick) {
-
-                    Log.i(TAG, "call_relyout click 111")
-                    var tcpModel = VoiceUtil.voiceCall(Integer.parseInt(Constants.ids), receivedData!!.deviceId)
-                    TcpClient.getInstance().sendMsg(tcpModel.toJson())
-
-                    countDownTimer.start()
-                    isClick = false
-                }else{
-                    showMessage("请稍后,请勿频繁点击")
-                }
+                loadingDialog.show()
+                call_relyout.isEnabled = false
+                var tcpModel = VoiceUtil.voiceCall(Integer.parseInt(Constants.ids), receivedData!!.deviceId)
+                TcpClient.getInstance().sendMsg(tcpModel.toJson())
+                countDownTimer.start()
             }
         }
         initCountDownTimer()
@@ -152,21 +141,16 @@ class WatchCallRecordsActivity : BaseActivity<WatchCallRecordsFragmentPresenter,
             intent.putExtra("tcpModelStr", tcpModel.toJson())
             startActivity(intent)
             finish()
-
         }
-
-
     }
 
     override fun destory() {
         if(countDownTimer != null){
             countDownTimer.cancel()
         }
-
     }
 
-    override fun renderFloor(data: ArrayList<InteractionVO>) {
-        Log.i(TAG, "renderFloor() " + data.size)
+    override fun renderList(data: ArrayList<InteractionVO>) {
         if (action.equals(unread)) {
             EventBus.getDefault().post(MessageEvent(data, Constants.EVENT_UNTREATED_QUANTITY))
         }
@@ -192,7 +176,6 @@ class WatchCallRecordsActivity : BaseActivity<WatchCallRecordsFragmentPresenter,
             watchCallRecordsItemAdapter.notifyDataSetChanged()
         }
         refresh.finishLoadMore()
-
     }
 
 
@@ -209,52 +192,31 @@ class WatchCallRecordsActivity : BaseActivity<WatchCallRecordsFragmentPresenter,
     }
 
     fun initCountDownTimer() {
-        countDownTimer = object : CountDownTimer(CALL_TIMEOUT * 1000L, 1000) {
+        countDownTimer = object : CountDownTimer(CALL_TIMEOUT * 3000L, 1000) {
             override fun onTick(millisUntilFinished: Long) {
-
             }
-
             override fun onFinish() {
-                isClick = true
+                call_relyout.isEnabled = true
             }
         }
     }
 
     @Subscribe(threadMode = ThreadMode.MAIN)
     fun onMoonEvent(messageEvent: MessageEvent) {
-        if (messageEvent.tag == 1 ) {
+        if (messageEvent.tag == 1 || messageEvent.tag == 2) {
             var tcpModel = messageEvent.getMessage() as TcpModel
-            if( tcpModel.action == TcpAction.VoiceAction.SUCCESS ) {
-
-                //data 是 InteractionVO
-//            var gson = GsonBuilder().setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES).create()
-//            var interactionVO = gson.fromJson(tcpModel.data.toString(), InteractionVO::class.java)
-                //界面呈现
-                AppTool.Time.delay(100) {
-                    var intent = Intent()
-                    //rtc
-//                intent.setClass(this, RTCVoipAudioActivity::class.java)
-//                intent.putExtra("targetId", receivedData?.deviceSipId)
-//                intent.putExtra("TcpModel", tcpModel)
-//                intent.putExtra(RTCVoipAudioActivity.ACTION, RTCVoipAudioActivity.CALL)
-//                startActivity(intent)
-                    //sip
-//                intent.setClass(this,SipVoipAudioActivity::class.java)
-//                intent.putExtra("targetId", receivedData?.deviceSipId)
-//                intent.putExtra("TcpModel",tcpModel)
-//                intent.putExtra(SipVoipAudioActivity().ACTION, SipVoipAudioActivity().CALL)
-//                startActivity(intent)
-
-                    //webRTC
-                    intent.setClass(this, WebRTCVoipAudioActivity::class.java)
-                    intent.putExtra("targetId", receivedData?.deviceSipId)
-                    intent.putExtra("TcpModel", tcpModel)
-                    intent.putExtra(WebRTCVoipAudioActivity().ACTION, WebRTCVoipAudioActivity().CALL)
-                    startActivity(intent)
-
+            Log.i(TAG, tcpModel.toJson())
+            if (tcpModel.type == TcpType.VOICE) {
+                if (tcpModel.action == TcpAction.VoiceAction.SUCCESS) {
+                    loadingDialog.dismiss()
+                    //界面呈现,逻辑在service中
+                } else if (tcpModel.action == TcpAction.VoiceAction.FAILED) {
+                    loadingDialog.dismiss()
+                    call_relyout.isEnabled = true
+                    DeviceChannel.calling = false;
+                    showMessage("对方不在线")
                 }
             }
         }
     }
-
 }

+ 26 - 75
home/src/main/code/com/wdkl/ncs/android/component/home/activity/WatchEventDetailActivity.kt

@@ -10,6 +10,7 @@ import com.enation.javashop.android.jrouter.external.annotation.Autowired
 import com.enation.javashop.android.jrouter.external.annotation.Router
 import com.enation.javashop.net.engine.model.NetState
 import com.enation.javashop.utils.base.tool.CommonTool
+import com.enation.javashop.utils.base.widget.LoadingDialog
 import com.google.gson.FieldNamingPolicy
 import com.google.gson.Gson
 import com.google.gson.GsonBuilder
@@ -52,7 +53,6 @@ import org.greenrobot.eventbus.ThreadMode
 @Router(path = "/event/detail")
 class WatchEventDetailActivity : BaseActivity<WatchHomeActivityPresenter, WatchActivityEventDetailBinding>(), WatchHomeActivityContract.View {
 
-
     var TAG = WatchEventDetailActivity::class.java.getSimpleName()
     //参数自动注入
     @Autowired(name = "tcpModelStr", required = true)
@@ -64,15 +64,13 @@ class WatchEventDetailActivity : BaseActivity<WatchHomeActivityPresenter, WatchA
     private var CALL_TIMEOUT = 5 //多久可以再次点击
     //呼叫倒计时
     lateinit var countDownTimer: CountDownTimer
-    private var isClick = true //是否可点击
+
+    private lateinit var loadingDialog: LoadingDialog
 
     override fun getLayId(): Int {
         return R.layout.watch_activity_event_detail
     }
 
-    override fun render(appInfo: AppVersionDO) {
-    }
-
     override fun setDeviceSettingData(partSettingDO: PartSettingDO) {
     }
 
@@ -88,7 +86,6 @@ class WatchEventDetailActivity : BaseActivity<WatchHomeActivityPresenter, WatchA
     override fun networkMonitor(state: NetState) {
     }
 
-
     override fun bindDagger() {
         HomeLaunch.component.inject(this)
     }
@@ -103,37 +100,28 @@ class WatchEventDetailActivity : BaseActivity<WatchHomeActivityPresenter, WatchA
         }
 
         call_relyout.setOnClickListener {
-            if (isClick) {
-                Log.i(TAG, "tcpModel 发送的 " + tcpModel?.toJson())
-                var tcpModel: TcpModel? = null
-                if (interactionVO?.actionDirectionType == 1) {
-                    tcpModel = VoiceUtil.voiceCall(Integer.parseInt(Constants.ids), interactionVO?.fromDeviceId)
-                } else {
-                    tcpModel = VoiceUtil.voiceCall(Integer.parseInt(Constants.ids), interactionVO?.toDeviceId)
-//            Log.e(TAG,"Constants.ids"+Constants.ids)
-//            Log.e(TAG,"interactionVO?.fromDeviceId"+interactionVO?.fromDeviceId)
-//                 Log.e(TAG,"interactionVO?.toDeviceId"+interactionVO?.toDeviceId)
-//
-//            Log.e(TAG,"interactionVO?.fromDeviceFrameId"+interactionVO?.fromDeviceFrameId)
-//            Log.e(TAG,"interactionVO?.toDeviceFrameId"+interactionVO?.toDeviceFrameId)
-                }
-
-                TcpClient.getInstance().sendMsg(tcpModel?.toJson())
-                countDownTimer.start()
-                isClick = false
-            }else{
-                showMessage("请稍后,请勿频繁点击")
+            loadingDialog.show()
+            call_relyout.isEnabled = false
+            Log.i(TAG, "tcpModel 发送的 " + tcpModel?.toJson())
+            var tcpModel: TcpModel? = null
+            if (interactionVO?.actionDirectionType == 1) {
+                tcpModel = VoiceUtil.voiceCall(Integer.parseInt(Constants.ids), interactionVO?.fromDeviceId)
+            } else {
+                tcpModel = VoiceUtil.voiceCall(Integer.parseInt(Constants.ids), interactionVO?.toDeviceId)
             }
+
+            TcpClient.getInstance().sendMsg(tcpModel?.toJson())
+            countDownTimer.start()
         }
 
         event_status_img.setOnClickListener {
             //event_status_img.isEnabled = false
             if (tcpModel?.type == TcpType.EVENT) {
+                loadingDialog.show()
                 var tcpModel = EventUtil.eventResponse(Integer.parseInt(Constants.ids), interactionVO!!.fromDeviceId, interactionVO!!.id)
                 TcpClient.getInstance().sendMsg(tcpModel.toJson())
             } else if (tcpModel?.type == TcpType.IM) {
                 //todo: 语音播放
-
                 if (!Constants.ids.equals("")) {
                     if (interactionVO!!.actionEnd == null) {
                         var imUtilTcpModel = ImUtil.imRead(Constants.ids.toInt(), interactionVO!!.fromDeviceId, interactionVO!!.id)
@@ -145,12 +133,10 @@ class WatchEventDetailActivity : BaseActivity<WatchHomeActivityPresenter, WatchA
                     } else {
                         MediaPlayHelper.getInstance().playUrlMusic(ApiManager.urlManager.device_url + interactionVO!!.data, 1f, false)
                     }
-
 //
                 } else {
                     showMessage("获取不到当给前设备id")
                 }
-
             }
         }
     }
@@ -161,11 +147,8 @@ class WatchEventDetailActivity : BaseActivity<WatchHomeActivityPresenter, WatchA
         }
     }
 
-
     override fun init() {
-//        AppTool.SystemUI.showNavigationBar(this,true)
-//        AppTool.SystemUI.ImmersiveWithBottomBarColor(this, Color.BLACK)
-
+        loadingDialog = CommonTool.createLoadingDialog(this, R.layout.custom_loading,R.id.loadding_image)
         initCountDownTimer()
         Log.i(TAG, "参数 tcpModelStr : " + tcpModelStr)
         tcpModel = TcpModel.getModelByJson(tcpModelStr)
@@ -206,7 +189,6 @@ class WatchEventDetailActivity : BaseActivity<WatchHomeActivityPresenter, WatchA
                         } else if (interactionVO?.actionDirectionType == 2 || interactionVO?.actionDirectionType == 3) {
                             event_text.setText("语音呼出已接")
                         }
-
                     } else {
                         //判断是呼入还是呼出 1 分机到主机 2主机到分机
                         if (interactionVO?.actionDirectionType == 1) {
@@ -214,12 +196,9 @@ class WatchEventDetailActivity : BaseActivity<WatchHomeActivityPresenter, WatchA
                         } else if (interactionVO?.actionDirectionType == 2 || interactionVO?.actionDirectionType == 3) {
                             event_text.setText("语音呼出未接")
                         }
-
                     }
-
 //                    event_text.setText("语音呼叫")
 
-
                 } else if (tcpModel?.type == TcpType.VIDEO) {
 
                     event_text.setText("视频呼叫")
@@ -234,11 +213,11 @@ class WatchEventDetailActivity : BaseActivity<WatchHomeActivityPresenter, WatchA
     fun initCountDownTimer() {
         countDownTimer = object : CountDownTimer(CALL_TIMEOUT * 1000L, 1000) {
             override fun onTick(millisUntilFinished: Long) {
-
             }
 
             override fun onFinish() {
-                isClick = true
+                loadingDialog.dismiss()
+                call_relyout.isEnabled = true
             }
         }
     }
@@ -254,54 +233,26 @@ class WatchEventDetailActivity : BaseActivity<WatchHomeActivityPresenter, WatchA
             var resTcpModel = messageEvent.getMessage() as TcpModel
             if (resTcpModel.type == TcpType.DATA && resTcpModel.action == TcpAction.DataAction.INTERACTION) {
                 if (resTcpModel.data != null) {
-
+                    loadingDialog.dismiss()
                     val responseInteractionVO = Gson().fromJson<InteractionVO>(resTcpModel.getData().toString(), InteractionVO::class.java)
 
                     if (tcpModel?.type == TcpType.IM) {
                         event_status_img.setImageResource(R.drawable.icon_hd_live_item)
-                        Toast.makeText(this, "已播放", Toast.LENGTH_SHORT)
+                        showMessage("已播放")
                     } else if (tcpModel?.type == TcpType.EVENT) {
                         event_status_img.setImageResource(R.drawable.icon_switch_on)
-                        Toast.makeText(this, "已响应", Toast.LENGTH_SHORT)
+                        showMessage("已响应")
+                        AppTool.Time.delay(1500){
+                            finish()
+                        }
                     }
 
                     event_end_text.setText(TimeTransition().stampToDate(responseInteractionVO.actionEnd * 1000))
                 }
             }
         } else if (messageEvent.tag == 1) {
-            var tcpModel = messageEvent.getMessage() as TcpModel
-//            //rtc
-//            var intent = Intent()
-//            intent.setClass(this,RTCVoipAudioActivity::class.java)
-//            intent.putExtra("targetId", interactionVO?.fromSipId)
-//            intent.putExtra("TcpModel",tcpModel)
-//            intent.putExtra(RTCVoipAudioActivity.ACTION, RTCVoipAudioActivity.CALL)
-//            startActivity(intent)
-
-            //sip
-//            var intent = Intent()
-//            intent.setClass(this,SipVoipAudioActivity::class.java)
-//            intent.putExtra("targetId", interactionVO?.fromSipId)
-//            intent.putExtra("TcpModel",tcpModel)
-//            intent.putExtra(SipVoipAudioActivity().ACTION, SipVoipAudioActivity().CALL)
-//            startActivity(intent)
-
-            //sip
-            var intent = Intent()
-            intent.setClass(this, WebRTCVoipAudioActivity::class.java)
-
-//            Log.e(TAG,"interactionVO?.actionDirectionType"+interactionVO?.actionDirectionType)
-//            Log.e(TAG,"interactionVO?.fromSipId"+interactionVO?.fromSipId)
-//            Log.e(TAG,"interactionVO?.toSipId"+interactionVO?.toSipId)
-            if(interactionVO?.actionDirectionType == 1){ //呼入
-                intent.putExtra("targetId", interactionVO?.fromSipId)
-            }else { //呼出
-                intent.putExtra("targetId", interactionVO?.toSipId)
-            }
-            intent.putExtra("TcpModel", tcpModel)
-            intent.putExtra(WebRTCVoipAudioActivity().ACTION, WebRTCVoipAudioActivity().CALL)
-            startActivity(intent)
-
+            loadingDialog.dismiss()
+            //具体逻辑在TcpHandleService中处理
         }
     }
 }

+ 16 - 280
home/src/main/code/com/wdkl/ncs/android/component/home/activity/WatchHome2Activity.kt

@@ -20,7 +20,6 @@ import android.text.TextUtils
 import android.util.Log
 import android.view.KeyEvent
 import android.view.View
-import com.enation.javashop.android.jrouter.external.annotation.Router
 import com.enation.javashop.net.engine.model.NetState
 import com.enation.javashop.net.engine.plugin.permission.RxPermissions
 import com.google.gson.Gson
@@ -32,7 +31,6 @@ import com.wdkl.ncs.android.component.home.R
 import com.wdkl.ncs.android.component.home.SOSEmergencyCallActivity
 import com.wdkl.ncs.android.component.home.broadcast.BatteryBroadcastReceiver
 import com.wdkl.ncs.android.component.home.databinding.WatchActivityHome2Binding
-import com.wdkl.ncs.android.component.home.databinding.WatchActivityHomeBinding
 import com.wdkl.ncs.android.component.home.launch.HomeLaunch
 import com.wdkl.ncs.android.component.home.service.APPService
 import com.wdkl.ncs.android.component.home.service.TcpHandleService
@@ -50,7 +48,6 @@ import com.wdkl.ncs.android.lib.utils.showMessage
 import com.wdkl.ncs.android.middleware.logic.contract.home.WatchHomeActivityContract
 import com.wdkl.ncs.android.middleware.logic.presenter.home.WatchHomeActivityPresenter
 import com.wdkl.ncs.android.middleware.model.dos.AppVersionDO
-import com.wdkl.ncs.android.middleware.model.dos.DeviceDO
 import com.wdkl.ncs.android.middleware.model.dos.PartSettingDO
 import com.wdkl.ncs.android.middleware.model.dto.TcpSeverDTO
 import com.wdkl.ncs.android.middleware.model.vo.DeviceVO
@@ -111,20 +108,16 @@ class WatchHome2Activity : BaseActivity<WatchHomeActivityPresenter, WatchActivit
     }
 
     override fun init() {
-//        AppTool.SystemUI.showNavigationBar(this,false)
-//        AppTool.SystemUI.ImmersiveWithBottomBarColor(this, Color.BLACK)
-
         val permissionCheck = ContextCompat.checkSelfPermission(this, Manifest.permission.READ_PHONE_STATE)
 
         if (permissionCheck != PackageManager.PERMISSION_GRANTED) {
             ActivityCompat.requestPermissions(this, arrayOf(Manifest.permission.READ_PHONE_STATE), WRITE_EXTERNAL_STORAGE_REQUEST_CODE)
         } else {
-            //TODO
-        }
 
+        }
 
-        Constants.imei = Util().getIMEI(this)
-        Log.i(TAG, "IMEI " + Util().getIMEI(this))
+        Constants.imei = Util.getIMEI(this)
+        Log.i(TAG, "IMEI " + Util.getIMEI(this))
 
 //        Constants.mac = NetHelper.getInstance().macAddress
         //Constants.mac = "4C:C0:0A:8E:D6:BB"
@@ -143,10 +136,7 @@ class WatchHome2Activity : BaseActivity<WatchHomeActivityPresenter, WatchActivit
                 } catch (e: Exception) {
                 }
             }
-
         }).start()
-
-
     }
 
     private fun requestPermissions() {
@@ -158,23 +148,12 @@ class WatchHome2Activity : BaseActivity<WatchHomeActivityPresenter, WatchActivit
                 Manifest.permission.RECORD_AUDIO,
                 Manifest.permission.READ_PHONE_STATE)).subscribe {
             if (it) {
-//                Constants.imei = Util().getIMEI(this)
-//                Log.e(TAG, "IMEI " + Util().getIMEI(this))
-//
-//                Constants.mac = NetHelper.getInstance().macAddress
-//                //Constants.mac = "4C:C0:0A:8E:D6:BB"
-//                Log.e(TAG, "mac " + Constants.mac)
-//                tv_mac_addr.text = "MAC地址: " + Constants.mac + "\n" + "IMEI号:" + Constants.imei
-
-//                presenter.loadData(Constants.mac)//传Mac
                 presenter.loadData(Constants.imei)// 传imei
             } else {
                 showMessage("请重新授权,进入App")
                 requestPermissions()
             }
         }.joinManager(disposableManager)
-
-
     }
 
     private fun regReceiver() {
@@ -190,8 +169,6 @@ class WatchHome2Activity : BaseActivity<WatchHomeActivityPresenter, WatchActivit
             sip_state_tv.setBackgroundColor(Color.parseColor("#00FFFF"))
         })
 
-
-
         // webRTC呼叫测试
 //        var room = UUID.randomUUID().toString() + System.currentTimeMillis()
 //        var gEngineKit:SkyEngineKit? = null
@@ -213,12 +190,10 @@ class WatchHome2Activity : BaseActivity<WatchHomeActivityPresenter, WatchActivit
         runOnUiThread(Runnable {
             sip_state_tv.setBackgroundColor(Color.parseColor("#FF0000"))
         })
-        Log.i(TAG, "webrtc 注册失败")
-        Log.i(TAG, "webrtc 注册失败,,,, "+(System.currentTimeMillis()-time))
+        Log.i(TAG, "webrtc 注册失败   "+(System.currentTimeMillis()-time))
         if(System.currentTimeMillis()-time >800){
             time = System.currentTimeMillis()
             Log.i(TAG, "webrtc 注册失败//// "+(System.currentTimeMillis()-time))
-
 //
 //     Log.i(TAG, "webrtc 注册失败... "+(System.currentTimeMillis()-time))
 //            var intent = Intent(this,WatchRegisterActivity::class.java)
@@ -231,9 +206,7 @@ class WatchHome2Activity : BaseActivity<WatchHomeActivityPresenter, WatchActivit
                 SocketManager.getInstance().connect(Urls.WS, Constants.sip_id, 0)
             },700)
             Looper.loop()
-
         }
-
     }
 
     private fun unRegReceiver() {
@@ -256,9 +229,6 @@ class WatchHome2Activity : BaseActivity<WatchHomeActivityPresenter, WatchActivit
     override fun destory() {
         unRegReceiver()
         SpeechUtil.getInstance().release()
-//        SipHelperUtil.getInstance(this).unRegisterSip()
-//        SipHelper.getInstance().unRegisterSip()
-
         //注销webRTC
         SocketManager.getInstance().unConnect()
 
@@ -267,30 +237,6 @@ class WatchHome2Activity : BaseActivity<WatchHomeActivityPresenter, WatchActivit
         }
     }
 
-    override fun render(appInfo: AppVersionDO) {
-        Log.d("AppUpdate", "loadAppVersion111 =====>>  version_code: " + appInfo.versionCode + ", path: " + appInfo.appPath)
-        val newAppVersion = appInfo.versionCode.substring(1)
-        Log.d("AppUpdate", "loadAppVersion222 =====>>  newAppVersion: " + newAppVersion + ", curAppVersion: " + BuildConfig.VERSION_NAME)
-        showMessage("获取版本成功,当前版本: " + BuildConfig.VERSION_NAME + ", 服务器版本: " + newAppVersion)
-
-        //服务器版本和当前版本不一致才做升级操作
-        if (!BuildConfig.VERSION_NAME.equals(newAppVersion)) {
-            Constants.APP_PATH = appInfo.appPath
-            AppTool.Time.delay(200) {
-                push("/callingbed/update")
-            }
-        }
-    }
-
-    fun checkAppVersion() {
-        Constants.APP_PATH = ""
-        //获取APP版本信息,7寸分机type=204
-        if (Constants.part_id != null) {
-            presenter.getAppVersion(Constants.part_id, 7)
-        }
-        Log.d("AppUpdate", "checkAppVersion =====>>  Constant.PART_ID: " + Constants.part_id)
-    }
-
     /**
      * 返回的设备信息
      */
@@ -309,10 +255,7 @@ class WatchHome2Activity : BaseActivity<WatchHomeActivityPresenter, WatchActivit
         Constants.user_name = data.memberName
         Constants.user_role_name = data.roleName
 
-        if (TextUtils.isEmpty(Constants.ids) || TextUtils.isEmpty(Constants.sip_id)
-//                || TextUtils.isEmpty(Constants.user_name)
-//                || TextUtils.isEmpty(Constants.user_role_name)
-        ) {
+        if (TextUtils.isEmpty(Constants.ids) || TextUtils.isEmpty(Constants.sip_id)) {
             showMessage("初始化数据时服务器返回数据不全,请联系管理员")
             tv_feedback_device_info.text = "初始化数据时服务器返回数据不全,请联系管理员"
             return
@@ -321,12 +264,6 @@ class WatchHome2Activity : BaseActivity<WatchHomeActivityPresenter, WatchActivit
             tv_feedback_device_info.text = "初始化tcp连接数据为null"
             return
         }
-
-//        //这里的是视频通话有关的
-//        AEvent.setHandler(Handler())
-//        //这里的是视频通话有关的
-//
-////        initSDK("000100")
         initSDK(data.sipId)
         presenter.getDeviceSettingData(""+Constants.part_id)
         initInterfaceData()
@@ -344,39 +281,25 @@ class WatchHome2Activity : BaseActivity<WatchHomeActivityPresenter, WatchActivit
             Constants.heart_beat = tcpSeverDTO.readerIdleTime
 
             startConnectTcpServer()
-            showMessage("开始连接TCP服务器...")
+//            showMessage("开始连接TCP服务器...")
             requestPermissions()
         }
-
-
     }
 
     private fun startConnectTcpServer() {
         Thread(Runnable {
             run {
-                //TcpClient.getInstance().init("192.168.1.138", 5080, 9)
-                //TcpClient.getInstance().init("47.106.200.55", 5080, 9)
-
                 TcpClient.getInstance().init(Constants.tcp_server, Constants.tcp_port, Constants.heart_beat)
             }
         }).start()
     }
 
     private fun initSDK(DeviceSipId: String) {
-//        val intent = Intent(this, KeepLiveService::class.java)
-//        intent.putExtra("DeviceSipId", DeviceSipId)
-//        startService(intent)
-//
         val intent2 = Intent(this, TcpHandleService::class.java)
         startService(intent2)
 
-
         val intent3 = Intent(this, APPService::class.java)
         startService(intent3)
-
-
-//        val intent2 = Intent(this, RTCKeepLiveService::class.java)
-//        startService(intent2)
     }
 
     /**
@@ -393,10 +316,6 @@ class WatchHome2Activity : BaseActivity<WatchHomeActivityPresenter, WatchActivit
             }
         }
 
-        //开始ping网络,30秒ping一次
-//        NetHelper.startNetCheck()
-//        //SIP准备工作
-//        initSip()
         //WEBRTC 语音初始化
         // 添加登录回调
         SocketManager.getInstance().addUserStateCallback(this)
@@ -409,7 +328,7 @@ class WatchHome2Activity : BaseActivity<WatchHomeActivityPresenter, WatchActivit
         teleManager = (applicationContext.getSystemService(Context.TELEPHONY_SERVICE)) as TelephonyManager
 
         netType = NetHelper.getInstance().getNetworkState(applicationContext)
-        Log.i(TAG, "wzlll 网络类型:" + netType)
+        Log.i(TAG, "网络类型:" + netType)
         if (netType == NetHelper.NETWORK_2G || netType == NetHelper.NETWORK_3G || netType == NetHelper.NETWORK_4G) {
             if (teleManager != null) {
                 teleManager.listen(object : PhoneStateListener() {
@@ -420,7 +339,6 @@ class WatchHome2Activity : BaseActivity<WatchHomeActivityPresenter, WatchActivit
                         if (lastSignal > 0) {
                             var mobileNetworkSignal = lastSignal
                         }
-                        Log.i(TAG, "wifi信号强度:" + lastSignal)
                     }
                 }, PhoneStateListener.LISTEN_SIGNAL_STRENGTHS);
             }
@@ -436,10 +354,6 @@ class WatchHome2Activity : BaseActivity<WatchHomeActivityPresenter, WatchActivit
         //TTS初始化
         SpeechUtil.getInstance().init(BaseApplication.appContext)
         SpeechUtil.getInstance().startSpeechThread()
-
-        //检查版本
-//        checkAppVersion()
-
     }
 
     /**
@@ -449,10 +363,12 @@ class WatchHome2Activity : BaseActivity<WatchHomeActivityPresenter, WatchActivit
         Log.i(TAG,"收到设置设备数据 transferDuration"+partSettingDO.transferDuration)
         Log.i(TAG,"收到设置设备数据 transferDurationLeader"+partSettingDO.transferDurationLeader)
         if(partSettingDO != null&&partSettingDO.transferDuration !=null&&partSettingDO.transferDurationLeader != null){
-            if (!Constants.user_role_name!!.contains("护士组长")&& Constants.user_role_name!!.contains("护士")) {
-                SettingConfig.setCountdownTime(application, partSettingDO.transferDuration)
-            }else if(Constants.user_role_name!!.contains("护士组长")){
-                SettingConfig.setCountdownTime(application, partSettingDO.transferDurationLeader)
+            if (Constants.user_role_name != null) {
+                if (!Constants.user_role_name!!.contains("护士组长") && Constants.user_role_name!!.contains("护士")) {
+                    SettingConfig.setCountdownTime(application, partSettingDO.transferDuration)
+                } else if (Constants.user_role_name!!.contains("护士组长")) {
+                    SettingConfig.setCountdownTime(application, partSettingDO.transferDurationLeader)
+                }
             }
         }
     }
@@ -469,58 +385,6 @@ class WatchHome2Activity : BaseActivity<WatchHomeActivityPresenter, WatchActivit
     override fun networkMonitor(state: NetState) {
     }
 
-    private fun initSip() {
-
-
-//        //=============================================Sip启动服务===================================//
-//        SipHelperUtil.getInstance(this).sipStartService(Constants.sip_ip, Constants.sip_id, Constants.sip_password)
-//        //=============================================SIP状态回调===================================//
-//        SipHelperUtil.getInstance(this).setSipCallBack(this)
-//        //=============================================SIP服务监听===================================//
-//        SipHelperUtil.getInstance(this).obtainSipInfo()
-
-//        SipHelper.getInstance().sipStartService()
-//        SipHelper.getInstance().initSip(this, Constants.sip_ip,Constants.sip_id,Constants.sip_password)
-//        SipHelper.getInstance().setSipCallBack(this)
-//        SipHelper.getInstance().setSipListner(this)
-    }
-
-
-//    /**
-//     * sip开始通话    ------------------sip回调操作----------------------
-//     */
-//    override fun startCall(sipAddress: String?) {
-//        SipHelperUtil.getInstance(this).startCall(sipAddress)
-//    }
-//
-//    /**
-//     * sip自动接听
-//     */
-//    override fun autoTalking() {
-//        SipHelperUtil.getInstance(this).autoTalking()
-//    }
-//
-//    /**
-//     * sip结束通话
-//     */
-//    override fun endCall() {
-//        SipHelperUtil.getInstance(this).endCall()
-//    }
-//
-//    override fun onNewVvsipCallEvent(call: VvsipCall?) {
-//        SipHelperUtil.getInstance(this).addCallObject(call)
-//    }
-//
-//    override fun onRemoveVvsipCallEvent(call: VvsipCall?) {
-//        SipHelperUtil.getInstance(this).removeCallObject(call)
-//    }
-//
-//    override fun onStatusVvsipCallEvent(call: VvsipCall?) {
-//    }
-//
-//    override fun onRegistrationEvent(rid: Int, remote_uri: String?, code: Int, reason: String?) {
-//    }
-
     /**
      * 监听
      */
@@ -528,10 +392,8 @@ class WatchHome2Activity : BaseActivity<WatchHomeActivityPresenter, WatchActivit
         when (p0.id) {
             R.id.customer_list_linlyout -> {
                 push("/watch/contacts")
-
             }
             R.id.call_records_linlyout -> {
-//                push("/watch/callrecords")
                 var intent = Intent(this, WatchCallRecordsActivity::class.java)
                 intent.putExtra("action", "ALL")
                 intent.putExtra("customer_id", "")
@@ -547,12 +409,9 @@ class WatchHome2Activity : BaseActivity<WatchHomeActivityPresenter, WatchActivit
                     intent.putExtra("customer_id", "")
                     startActivity(intent)
                 }
-
             }
             R.id.state_linlyout -> {
-
             }
-
             R.id.other_linyout -> {
                 val intent = Intent(this, WatchUserSettingActivity::class.java)
                 startActivity(intent)
@@ -574,55 +433,24 @@ class WatchHome2Activity : BaseActivity<WatchHomeActivityPresenter, WatchActivit
     }
     override fun onKeyUp(keyCode: Int, event: KeyEvent): Boolean {
         return if (keyCode == KeyEvent.KEYCODE_BACK && event.action == KeyEvent.ACTION_UP) {
-
             //不执行父类点击事件
             true
         } else super.onKeyUp(keyCode, event)
         //继续执行父类其他点击事件
     }
 
-    // ====================================== 处理tcp
-    var calling: Boolean = false
-
     @Subscribe(threadMode = ThreadMode.MAIN)
     fun onMoonEvent(messageEvent: MessageEvent) {
-        Log.e(TAG,""+messageEvent.tag)
-//        var tcpModels = messageEvent.getMessage() as TcpModel
-//        Log.e(TAG,""+tcpModels.getAction())
-        if (messageEvent.tag == 14) {
-            //唤醒屏幕并解锁屏幕
-            Util().wakeUpAndUnlock(this)
-
-        } else if (messageEvent.tag == Constants.EVENT_TCP_APP_UPDATE) {
-            //更新APP
-            checkAppVersion()
-        } else if (messageEvent.tag == Constants.EVENT_SIP_REGISTER_STATUS) {
-            var message = messageEvent.getMessage() as String
-            Log.i(TAG, "收到sip註冊消息 " + message)
-            runOnUiThread {
-//                if (message.equals(SipHelperUtil.REGISTERING)) {
-//                    sip_state_tv.setBackgroundColor(Color.parseColor("#FFFF00"))
-//                } else if (message.equals(SipHelperUtil.REGISTERFAIL)) {
-//                    sip_state_tv.setBackgroundColor(Color.parseColor("#FF0000"))
-//                } else if (message.equals(SipHelperUtil.REGISTERCOM)) {
-//                    sip_state_tv.setBackgroundColor(Color.parseColor("#00FFFF"))
-//                }
-            }
-        } else if (messageEvent.tag == Constants.EVENT_INTERNETPING) {
-//            SipHelperUtil.getInstance(this).obtainSipInfo()
-
-        } else if (messageEvent.tag == Constants.EVENT_UNTREATED_QUANTITY) {
+        if (messageEvent.tag == Constants.EVENT_UNTREATED_QUANTITY) {   //电量显示,由广播获取
             var message = messageEvent.getMessage() as ArrayList<InteractionVO>
             list_item_img_icon_num.text = "" + message.size
-
-        } else if (messageEvent.tag == Constants.EVENT_WIFI_RSSI) {
+        } else if (messageEvent.tag == Constants.EVENT_BATTERY_PERCENT) {
             var message = messageEvent.getMessage() as Int
             if (10 < message && message < 20) {
                 electric_quantity_tv.text = "" + message
                 battery_warning_tv.setTextColor(Color.parseColor("#FF3030"))
                 battery_warning_tv.visibility = View.VISIBLE
                 battery_warning_tv.text = "低电量,请注意充电"
-
             } else if (10 > message) {
                 electric_quantity_tv.text = "" + message
                 battery_warning_tv.setTextColor(Color.parseColor("#8B2323"))
@@ -632,95 +460,9 @@ class WatchHome2Activity : BaseActivity<WatchHomeActivityPresenter, WatchActivit
                 battery_warning_tv.visibility = View.GONE
                 electric_quantity_tv.text = "" + message
             }
-
-
-        } else if (messageEvent.tag == 0) {
-            //唤醒屏幕并解锁屏幕
-            Util().wakeUpAndUnlock(this)
-
-            var tcpModel = messageEvent.getMessage() as TcpModel
-            var responseTcpModel: TcpModel
-            Log.i(TAG, "" + tcpModel.getType() + " " + tcpModel.getAction())
-            when (tcpModel.getType()) {
-                TcpType.CALLBACK -> if (tcpModel.getAction() === TcpAction.CallbackAction.SUCCESS) {
-                    //todo: 刷新呼叫记录列表
-
-                } else if (tcpModel.getAction() === TcpAction.CallbackAction.FAILED) {
-                    //呼叫失败
-                }
-                TcpType.VOICE -> if (tcpModel.getAction() === TcpAction.VoiceAction.CALL) { //语音呼入
-                    val interactionVO = Gson().fromJson<InteractionVO>(tcpModel.getData().toString(), InteractionVO::class.java)
-                    //判断当前是否通话
-                    // 通话中
-                    if (calling) {
-                        responseTcpModel = VoiceUtil.voiceCalling(tcpModel.getToId(), tcpModel.getFromId(), interactionVO.getId())
-                        //给服务器发送正在通话中 tcp
-                        TcpClient.getInstance().sendMsg(responseTcpModel.toJson())
-                    } else {
-                        Log.i(TAG, "启动接听界面")
-                        responseTcpModel = VoiceUtil.voiceSuccess(tcpModel.getToId(), tcpModel.getFromId(), interactionVO.getId())
-                        TcpClient.getInstance().sendMsg(responseTcpModel.toJson())
-
-                        //界面呈现
-                        AppTool.Time.delay(300) {
-                            //rtc
-//                            var intent = Intent()
-//                            intent.setClass(this, RTCVoipAudioRingingActivity::class.java)
-//                            intent.putExtra("targetId", interactionVO.fromSipId)
-//                            intent.putExtra("TcpModel", tcpModel)
-//                            startActivity(intent)
-
-                            //sip
-//                            var intent = Intent()
-//                            intent.setClass(this, SipVoipAudioRingingActivity::class.java)
-//                            intent.putExtra("targetId", interactionVO.fromSipId)
-//                            intent.putExtra("TcpModel", tcpModel)
-//                            startActivity(intent)
-
-
-                            //webRTC
-                            var intent = Intent()
-                            intent.setClass(this, WebRTCVoipAudioRingingActivity::class.java)
-                            intent.putExtra("targetId", interactionVO.fromSipId)
-                            intent.putExtra("TcpModel", tcpModel)
-                            startActivity(intent)
-
-                        }
-                    }
-                } else if (tcpModel.getAction() === TcpAction.VoiceAction.HANDOFF) { //对方挂断,不论我方呼出或呼入
-                    //todo: 清掉呼出的TcpModel,通话中界面更新 --- 显示对方已挂断并停留3秒,结束至正常界面;更新左侧
-
-                } else if (tcpModel.getAction() === TcpAction.VoiceAction.SUCCESS) {
-                    //todo 更新呼出的TcpModel,data放置vo
-                }
-                TcpType.VIDEO -> {
-                }
-                TcpType.IM -> if (tcpModel.getAction() === TcpAction.IMAction.MSG) {
-                    //todo: 使用通话中界面,显示有语音留言,停留3秒,结束至正常界面
-
-                }
-                TcpType.EVENT -> if (tcpModel.getAction() === TcpAction.EventAction.KEY_CLICK) { //有新事件过来
-                    //todo: 服务端通过data给出具体的事件名称放置data。使用通话中界面,显示事件名称,停留3秒,结束至正常界面
-                    Log.i(TAG, "收到事件tcp")
-                }
-                TcpType.SOS -> if (tcpModel.getAction() === TcpAction.SOSAction.CALL) {
-                    Log.i(TAG, "" + tcpModel.getType() + " " + tcpModel.getAction())
-
-                    var intent = Intent()
-                    intent.setClass(this, SOSEmergencyCallActivity::class.java)
-                    intent.putExtra("TcpModel", tcpModel)
-                    startActivity(intent)
-                }
-                TcpType.DEVICE -> if (tcpModel.getAction() === TcpAction.DeviceAction.APP_UPDATE) {//更新APP
-                    checkAppVersion()
-                } else if (tcpModel.getAction() === TcpAction.DeviceAction.RESTART) { //刷新数据
-
-                }
-            }
         }
     }
 
-
     //WiFi监听
     inner class WifiReceiver : BroadcastReceiver() {
         override fun onReceive(context: Context, intent: Intent) {
@@ -728,21 +470,15 @@ class WatchHome2Activity : BaseActivity<WatchHomeActivityPresenter, WatchActivit
                 if (wifiManager != null && netType == NetHelper.NETWORK_WIFI) {
                     val wifiInfo = wifiManager.getConnectionInfo()
                     val wifi = wifiInfo.getRssi();//获取wifi信号强度
-//                    Log.e(TAG,"wifi 信号强度"+wifi)
-
                     if (wifi > -50 && wifi < 0) {//最强
-//                        Log.e(TAG, "wzlll 最强")
                         wifi_rssi_tv.text = "较强"
                     } else if (wifi > -70 && wifi < -50) {//较强
-//                        Log.e(TAG, "wzlll 较强")
                         wifi_rssi_tv.text = "一般"
                     } else if (wifi > -80 && wifi < -70) {//较弱
-//                        Log.e(TAG, "wzlll 较弱")
                         wifi_rssi_tv.text = "微弱"
                     } else if (wifi > -100 && wifi < -80) {//微弱
-//                        Log.e(TAG, "wzlll 微弱")
                         wifi_rssi_tv.setTextColor(Color.parseColor("#FF3030"))
-                        wifi_rssi_tv.text = "wifi信号较弱,请注意"
+                        wifi_rssi_tv.text = "信号较弱,请注意"
                     }
                 }
             }

+ 0 - 480
home/src/main/code/com/wdkl/ncs/android/component/home/activity/WatchHomeActivity.kt

@@ -1,480 +0,0 @@
-package com.wdkl.ncs.android.component.home.activity
-
-import android.content.BroadcastReceiver
-import android.content.Context
-import android.content.Intent
-import android.content.IntentFilter
-import android.graphics.Color
-import android.net.wifi.WifiManager
-import android.telephony.PhoneStateListener
-import android.telephony.SignalStrength
-import android.telephony.TelephonyManager
-import android.util.Log
-import android.view.KeyEvent
-import android.view.View
-import com.enation.javashop.android.jrouter.external.annotation.Router
-import com.enation.javashop.net.engine.model.NetState
-import com.google.gson.Gson
-import com.wdkl.core.consts.Urls
-import com.wdkl.core.socket.IUserState
-import com.wdkl.core.socket.SocketManager
-import com.wdkl.ncs.android.component.home.BuildConfig
-import com.wdkl.ncs.android.component.home.R
-import com.wdkl.ncs.android.component.home.SOSEmergencyCallActivity
-import com.wdkl.ncs.android.component.home.broadcast.BatteryBroadcastReceiver
-import com.wdkl.ncs.android.component.home.databinding.WatchActivityHomeBinding
-import com.wdkl.ncs.android.component.home.launch.HomeLaunch
-import com.wdkl.ncs.android.component.home.settingconfig.SettingConfig
-import com.wdkl.ncs.android.component.home.util.NetHelper
-import com.wdkl.ncs.android.component.home.util.SpeechUtil
-import com.wdkl.ncs.android.component.home.util.Util
-import com.wdkl.ncs.android.component.nursehome.common.Constants
-import com.wdkl.ncs.android.lib.base.BaseActivity
-import com.wdkl.ncs.android.lib.base.BaseApplication
-import com.wdkl.ncs.android.lib.utils.AppTool
-import com.wdkl.ncs.android.lib.utils.push
-import com.wdkl.ncs.android.lib.utils.showMessage
-import com.wdkl.ncs.android.middleware.logic.contract.home.WatchHomeActivityContract
-import com.wdkl.ncs.android.middleware.logic.presenter.home.WatchHomeActivityPresenter
-import com.wdkl.ncs.android.middleware.model.dos.AppVersionDO
-import com.wdkl.ncs.android.middleware.model.dos.PartSettingDO
-import com.wdkl.ncs.android.middleware.model.dto.TcpSeverDTO
-import com.wdkl.ncs.android.middleware.model.vo.DeviceVO
-import com.wdkl.ncs.android.middleware.model.vo.InteractionVO
-import com.wdkl.ncs.android.middleware.tcp.TcpClient
-import com.wdkl.ncs.android.middleware.tcp.channel.VoiceUtil
-import com.wdkl.ncs.android.middleware.tcp.dto.TcpModel
-import com.wdkl.ncs.android.middleware.tcp.enums.TcpAction
-import com.wdkl.ncs.android.middleware.tcp.enums.TcpType
-import com.wdkl.ncs.android.middleware.utils.MessageEvent
-import kotlinx.android.synthetic.main.watch_activity_home.*
-import org.greenrobot.eventbus.Subscribe
-import org.greenrobot.eventbus.ThreadMode
-
-@Router(path = "/watch/home")
-class WatchHomeActivity : BaseActivity<WatchHomeActivityPresenter, WatchActivityHomeBinding>(), WatchHomeActivityContract.View, View.OnClickListener, View.OnLongClickListener,IUserState {
-
-
-
-    var TAG = WatchHomeActivity::class.java.getSimpleName()
-
-    //监听网络变化
-    lateinit var wifiManager: WifiManager
-    lateinit var teleManager: TelephonyManager
-    lateinit var wifiReceiver: WifiReceiver
-    private var netType: Int = -1
-
-    lateinit var batteryBroadcastReceiver:BatteryBroadcastReceiver
-
-
-
-    override fun getLayId(): Int {
-        return R.layout.watch_activity_home
-    }
-
-    override fun bindDagger() {
-        HomeLaunch.component.inject(this)
-    }
-
-    override fun init() {
-//        AppTool.SystemUI.showNavigationBar(this,false)
-//        AppTool.SystemUI.ImmersiveWithBottomBarColor(this, Color.BLACK)
-
-
-        watch_name_tv.text = Constants.user_name
-
-        if (Constants.user_name!=null){
-            if (Constants.user_role_name!!.contains("腕表")) {
-                watch_role_name_tv.text = Constants.user_role_name!!.substring(0, (Constants.user_role_name)!!.indexOf("腕表"))
-            } else {
-                watch_role_name_tv.text = Constants.user_role_name
-            }
-        }
-
-         //开始ping网络,30秒ping一次
-//        NetHelper.startNetCheck()
-//        //SIP准备工作
-//        initSip()
-        //WEBRTC 语音初始化
-        // 添加登录回调
-        SocketManager.getInstance().addUserStateCallback(this)
-        // 连接socket:登录
-        SocketManager.getInstance().connect(Urls.WS, Constants.sip_id, 0)
-
-        Log.i(TAG,"Urls.WS "+Urls.WS+" sip_id "+Constants.sip_id)
-
-        wifiManager = (applicationContext.getSystemService(Context.WIFI_SERVICE)) as WifiManager
-        teleManager = (applicationContext.getSystemService(Context.TELEPHONY_SERVICE)) as TelephonyManager
-
-        netType = NetHelper.getInstance().getNetworkState(applicationContext)
-        Log.i(TAG, "wzlll 网络类型:" + netType)
-        if (netType == NetHelper.NETWORK_2G || netType == NetHelper.NETWORK_3G || netType == NetHelper.NETWORK_4G) {
-            if (teleManager != null) {
-                teleManager.listen(object : PhoneStateListener() {
-                    override fun onSignalStrengthsChanged(signalStrength: SignalStrength) {
-                        super.onSignalStrengthsChanged(signalStrength)
-                        val asu = signalStrength.gsmSignalStrength
-                        val lastSignal = -113 + 2 * asu;
-                        if (lastSignal > 0) {
-                            var mobileNetworkSignal = lastSignal
-                        }
-                        Log.i(TAG, "wzlll 数据连接信号强度:" + lastSignal)
-                    }
-                }, PhoneStateListener.LISTEN_SIGNAL_STRENGTHS);
-            }
-        }
-        regReceiver()
-
-        batteryBroadcastReceiver = BatteryBroadcastReceiver(electric_quantity_tv)
-
-        val intentFilter = IntentFilter()
-        intentFilter.addAction(Intent.ACTION_BATTERY_CHANGED)
-        registerReceiver(batteryBroadcastReceiver, intentFilter)
-
-        //TTS初始化
-        SpeechUtil.getInstance().init(BaseApplication.appContext)
-        SpeechUtil.getInstance().startSpeechThread()
-
-        //检查版本
-//        checkAppVersion()
-    }
-
-    private fun regReceiver() {
-        wifiReceiver = WifiReceiver()
-        val intentFilter = IntentFilter()
-        intentFilter.addAction(WifiManager.RSSI_CHANGED_ACTION)
-        registerReceiver(wifiReceiver, intentFilter)
-    }
-
-    override fun userLogin() {
-        Log.i(TAG,"webrtc 注册完成")
-        sip_state_tv.setBackgroundColor(Color.parseColor("#00FFFF"))
-          // webRTC呼叫测试
-//        var room = UUID.randomUUID().toString() + System.currentTimeMillis()
-//        var gEngineKit:SkyEngineKit? = null
-//        try {
-//            SkyEngineKit.init(VoipEvent()) //重新初始化
-//          gEngineKit = SkyEngineKit.Instance()
-//        } catch (e: NotInitializedException) {
-//            SkyEngineKit.init(VoipEvent()) //重新初始化
-//            try {
-//                gEngineKit = SkyEngineKit.Instance()
-//            } catch (ex: NotInitializedException) {
-//            }
-//        }
-//        val b = gEngineKit?.startOutCall(applicationContext, room, "4000000210", true)
-
-    }
-
-    override fun userLogout() {
-        sip_state_tv.setBackgroundColor(Color.parseColor("#FF0000"))
-        Log.i(TAG,"webrtc 注册失败")
-        var intent = Intent(this,WatchRegisterActivity::class.java)
-        startActivity(intent)
-        finish()
-    }
-
-    private fun unRegReceiver() {
-        unregisterReceiver(wifiReceiver)
-    }
-
-    override fun bindEvent() {
-        customer_list_linlyout.setOnClickListener(this)
-        call_records_linlyout.setOnClickListener(this)
-        user_name_linlyout.setOnClickListener(this)
-        user_name_linlyout.setOnLongClickListener(this)
-        state_linlyout.setOnClickListener(this)
-        other_linyout.setOnClickListener(this)
-    }
-
-    override fun destory() {
-        unRegReceiver()
-        SpeechUtil.getInstance().release()
-//        SipHelperUtil.getInstance(this).unRegisterSip()
-//        SipHelper.getInstance().unRegisterSip()
-
-         //注销webRTC
-        SocketManager.getInstance().unConnect()
-
-        if(batteryBroadcastReceiver != null){
-            unregisterReceiver(batteryBroadcastReceiver)
-        }
-    }
-
-    override fun render(appInfo: AppVersionDO) {
-        Log.d("AppUpdate", "loadAppVersion111 =====>>  version_code: " + appInfo.versionCode + ", path: " + appInfo.appPath)
-        val newAppVersion = appInfo.versionCode.substring(1)
-        Log.d("AppUpdate", "loadAppVersion222 =====>>  newAppVersion: " + newAppVersion + ", curAppVersion: " + BuildConfig.VERSION_NAME)
-        showMessage("获取版本成功,当前版本: " + BuildConfig.VERSION_NAME + ", 服务器版本: " + newAppVersion)
-
-        //服务器版本和当前版本不一致才做升级操作
-        if (!BuildConfig.VERSION_NAME.equals(newAppVersion)) {
-            Constants.APP_PATH = appInfo.appPath
-            AppTool.Time.delay(200) {
-                push("/callingbed/update")
-            }
-        }
-    }
-
-    /**
-     * 设置设备数据
-     */
-    override fun setDeviceSettingData(partSettingDO: PartSettingDO) {
-        Log.i(TAG,"收到设置设备数据 transferDuration"+partSettingDO.transferDuration)
-        Log.i(TAG,"收到设置设备数据 transferDurationLeader"+partSettingDO.transferDurationLeader)
-        if(partSettingDO != null){
-            if (!Constants.user_role_name!!.contains("护士组长")&& Constants.user_role_name!!.contains("护士")) {
-                SettingConfig.setCountdownTime(application, partSettingDO.transferDuration)
-            }else if(Constants.user_role_name!!.contains("护士组长")){
-                SettingConfig.setCountdownTime(application, partSettingDO.transferDurationLeader)
-            }
-        }
-    }
-
-    override fun showData(data: DeviceVO) {
-    }
-
-    override fun setTcpServerHost(tcpSeverDTO: TcpSeverDTO) {
-    }
-
-    fun checkAppVersion() {
-        Constants.APP_PATH = ""
-        //获取APP版本信息,7寸分机type=204
-        if (Constants.part_id != null) {
-            presenter.getAppVersion(Constants.part_id, 7)
-        }
-        Log.d("AppUpdate", "checkAppVersion =====>>  Constant.PART_ID: " + Constants.part_id)
-    }
-
-
-    override fun onError(message: String, type: Int) {
-    }
-
-    override fun complete(message: String, type: Int) {
-    }
-
-    override fun start() {
-    }
-
-    override fun networkMonitor(state: NetState) {
-    }
-    /**
-     * 监听
-     */
-    override fun onClick(p0: View) {
-        when(p0.id){
-            R.id.customer_list_linlyout ->{
-                push("/watch/contacts")
-
-            }
-            R.id.call_records_linlyout ->{
-//                push("/watch/callrecords")
-                var intent = Intent(this, WatchCallRecordsActivity::class.java)
-                intent.putExtra("action", "ALL")
-                intent.putExtra("customer_id", "")
-                startActivity(intent)
-            }
-            R.id.user_name_linlyout ->{
-                if (Constants.user_name==null){
-                    var intent = Intent(this, TakeoverActivity().javaClass)
-                    startActivity(intent)
-                } else {
-                    var intent = Intent(this, WatchCallRecordsActivity::class.java)
-                    intent.putExtra("action", "UNREAD")
-                    intent.putExtra("customer_id", "")
-                    startActivity(intent)
-                }
-            }
-            R.id.state_linlyout ->{
-
-            }
-
-            R.id.other_linyout ->{
-                val intent = Intent(this, WatchUserSettingActivity::class.java)
-                startActivity(intent)
-            }
-        }
-    }
-
-    /**
-     * 长按进入
-     */
-    override fun onLongClick(p0: View): Boolean {
-        when (p0.id) {
-            R.id.user_name_linlyout ->{
-                var intent = Intent(this, TakeoverActivity().javaClass)
-                startActivity(intent)
-            }
-        }
-        return true
-    }
-    override fun onKeyUp(keyCode: Int, event: KeyEvent): Boolean {
-        return if (keyCode == KeyEvent.KEYCODE_BACK && event.action == KeyEvent.ACTION_UP) {
-
-            //不执行父类点击事件
-            true
-        } else super.onKeyUp(keyCode, event)
-        //继续执行父类其他点击事件
-    }
-
-    // ====================================== 处理tcp
-    var calling :Boolean=false
-
-    @Subscribe(threadMode = ThreadMode.MAIN)
-    fun onMoonEvent(messageEvent: MessageEvent) {
-        Log.i(TAG,""+messageEvent.tag)
-//        var tcpModels = messageEvent.getMessage() as TcpModel
-//        Log.e(TAG,""+tcpModels.getAction())
-        if(messageEvent.tag == 14){
-            //唤醒屏幕并解锁屏幕
-            Util().wakeUpAndUnlock(this)
-
-        }else if(messageEvent.tag == 13){
-            //更新APP
-            checkAppVersion()
-        }else if(messageEvent.tag == Constants.EVENT_SIP_REGISTER_STATUS){
-            var message = messageEvent.getMessage() as String
-            Log.i(TAG,"收到sip註冊消息 "+ message)
-
-        }else if(messageEvent.tag == Constants.EVENT_INTERNETPING){
-
-
-        }else  if(messageEvent.tag == Constants.EVENT_UNTREATED_QUANTITY){
-            var message = messageEvent.getMessage() as ArrayList<InteractionVO>
-            list_item_img_icon_num.text = ""+message.size
-
-        }else if(messageEvent.tag == Constants.EVENT_WIFI_RSSI){
-            var message = messageEvent.getMessage() as Int
-            if(10< message && message < 20){
-                electric_quantity_tv.text = ""+message
-                battery_warning_tv.setTextColor(Color.parseColor("#FF3030"))
-                battery_warning_tv.visibility = View.VISIBLE
-                battery_warning_tv.text = "低电量,请注意充电"
-
-            }else if(10 > message){
-                electric_quantity_tv.text = ""+message
-                battery_warning_tv.setTextColor(Color.parseColor("#8B2323"))
-                battery_warning_tv.visibility = View.VISIBLE
-                battery_warning_tv.text = "电量过低,请充电"
-            }else{
-                battery_warning_tv.visibility = View.GONE
-                electric_quantity_tv.text = ""+message
-            }
-
-
-        }else if (messageEvent.tag == 0) {
-            //唤醒屏幕并解锁屏幕
-            Util().wakeUpAndUnlock(this)
-
-            var tcpModel = messageEvent.getMessage() as TcpModel
-            var responseTcpModel: TcpModel
-            Log.i(TAG,""+tcpModel.getType()+" "+tcpModel.getAction())
-            when (tcpModel.getType()) {
-                TcpType.CALLBACK -> if (tcpModel.getAction() === TcpAction.CallbackAction.SUCCESS) {
-                    //todo: 刷新呼叫记录列表
-
-                } else if (tcpModel.getAction() === TcpAction.CallbackAction.FAILED) {
-                    //呼叫失败
-                }
-                TcpType.VOICE -> if (tcpModel.getAction() === TcpAction.VoiceAction.CALL) { //语音呼入
-                    val interactionVO = Gson().fromJson<InteractionVO>(tcpModel.getData().toString(), InteractionVO::class.java)
-                    //判断当前是否通话
-                    // 通话中
-                    if (calling) {
-                        responseTcpModel = VoiceUtil.voiceCalling(tcpModel.getToId(), tcpModel.getFromId(), interactionVO.getId())
-                        //给服务器发送正在通话中 tcp
-                        TcpClient.getInstance().sendMsg(responseTcpModel.toJson())
-                    } else {
-                        Log.i(TAG,"启动接听界面")
-                        responseTcpModel = VoiceUtil.voiceSuccess(tcpModel.getToId(), tcpModel.getFromId(), interactionVO.getId())
-                        TcpClient.getInstance().sendMsg(responseTcpModel.toJson())
-
-                        //界面呈现
-                        AppTool.Time.delay(300) {
-                            //rtc
-//                            var intent = Intent()
-//                            intent.setClass(this, RTCVoipAudioRingingActivity::class.java)
-//                            intent.putExtra("targetId", interactionVO.fromSipId)
-//                            intent.putExtra("TcpModel", tcpModel)
-//                            startActivity(intent)
-
-                             //sip
-//                            var intent = Intent()
-//                            intent.setClass(this, SipVoipAudioRingingActivity::class.java)
-//                            intent.putExtra("targetId", interactionVO.fromSipId)
-//                            intent.putExtra("TcpModel", tcpModel)
-//                            startActivity(intent)
-
-
-
-                            //webRTC
-                            var intent = Intent()
-                            intent.setClass(this, WebRTCVoipAudioRingingActivity::class.java)
-                            intent.putExtra("targetId", interactionVO.fromSipId)
-                            intent.putExtra("TcpModel", tcpModel)
-                            startActivity(intent)
-
-                        }
-                    }
-                } else if (tcpModel.getAction() === TcpAction.VoiceAction.HANDOFF) { //对方挂断,不论我方呼出或呼入
-                    //todo: 清掉呼出的TcpModel,通话中界面更新 --- 显示对方已挂断并停留3秒,结束至正常界面;更新左侧
-
-                } else if (tcpModel.getAction() === TcpAction.VoiceAction.SUCCESS) {
-                    //todo 更新呼出的TcpModel,data放置vo
-                }
-                TcpType.VIDEO -> {
-                }
-                TcpType.IM -> if (tcpModel.getAction() === TcpAction.IMAction.MSG) {
-                    //todo: 使用通话中界面,显示有语音留言,停留3秒,结束至正常界面
-
-                }
-                TcpType.EVENT -> if (tcpModel.getAction() === TcpAction.EventAction.KEY_CLICK) { //有新事件过来
-                    //todo: 服务端通过data给出具体的事件名称放置data。使用通话中界面,显示事件名称,停留3秒,结束至正常界面
-                    Log.i(TAG, "收到事件tcp")
-                }
-                TcpType.SOS -> if (tcpModel.getAction() === TcpAction.SOSAction.CALL) {
-                    Log.i(TAG,""+tcpModel.getType()+" "+tcpModel.getAction())
-
-                    var intent = Intent()
-                    intent.setClass(this, SOSEmergencyCallActivity::class.java)
-                    intent.putExtra("TcpModel", tcpModel)
-                    startActivity(intent)
-                }
-                TcpType.DEVICE -> if (tcpModel.getAction() === TcpAction.DeviceAction.APP_UPDATE) {//更新APP
-                    checkAppVersion()
-                }else if(tcpModel.getAction() === TcpAction.DeviceAction.RESTART){ //刷新数据
-
-                }
-            }
-        }
-    }
-
-
-    //WiFi监听
-    inner class WifiReceiver: BroadcastReceiver() {
-        override fun onReceive(context: Context, intent: Intent) {
-            if (intent.action == WifiManager.RSSI_CHANGED_ACTION) {
-                if (wifiManager != null && netType == NetHelper.NETWORK_WIFI) {
-                    val wifiInfo = wifiManager.getConnectionInfo()
-                    val wifi = wifiInfo.getRssi ();//获取wifi信号强度
-//                    Log.e(TAG,"wifi 信号强度"+wifi)
-
-                    if (wifi > -50 && wifi < 0) {//最强
-//                        Log.e(TAG, "wzlll 最强")
-                        wifi_rssi_tv.text = "较强"
-                    } else if (wifi > -70 && wifi < -50) {//较强
-//                        Log.e(TAG, "wzlll 较强")
-                        wifi_rssi_tv.text = "一般"
-                    } else if (wifi > -80 && wifi < -70) {//较弱
-//                        Log.e(TAG, "wzlll 较弱")
-                        wifi_rssi_tv.text = "微弱"
-                    } else if (wifi > -100 && wifi < -80) {//微弱
-//                        Log.e(TAG, "wzlll 微弱")
-                        wifi_rssi_tv.setTextColor(Color.parseColor("#FF3030"))
-                        wifi_rssi_tv.text = "wifi信号较弱,请注意"
-                    }
-                }
-            }
-        }
-    }
-}

+ 3 - 3
home/src/main/code/com/wdkl/ncs/android/component/home/activity/WatchRegisterActivity.kt

@@ -61,8 +61,8 @@ class WatchRegisterActivity : BaseActivity<WatchDevicePresenter, WatchActivityRe
             //TODO
         }
 
-        Constants.imei = Util().getIMEI(this)
-        Log.i(TAG, "IMEI " + Util().getIMEI(this))
+        Constants.imei = Util.getIMEI(this)
+        Log.i(TAG, "IMEI " + Util.getIMEI(this))
 
         Constants.mac = NetHelper.getInstance().macAddress
         //Constants.mac = "4C:C0:0A:8E:D6:BB"
@@ -176,7 +176,7 @@ class WatchRegisterActivity : BaseActivity<WatchDevicePresenter, WatchActivityRe
 //            finish()
 //        }
 
-        var intent = Intent(this,WatchHomeActivity::class.java)
+        var intent = Intent(this,WatchHome2Activity::class.java)
         startActivity(intent)
         finish()
 

+ 20 - 6
home/src/main/code/com/wdkl/ncs/android/component/home/activity/WatchUserSettingActivity.java

@@ -2,6 +2,7 @@ package com.wdkl.ncs.android.component.home.activity;
 
 import android.Manifest;
 import android.app.Activity;
+import android.content.Context;
 import android.content.Intent;
 import android.content.pm.PackageManager;
 import android.os.Build;
@@ -14,13 +15,17 @@ import android.view.View;
 import android.widget.Button;
 import android.widget.SeekBar;
 import android.widget.TextView;
+import android.widget.Toast;
 
+import com.google.common.base.Strings;
 import com.hp.hpl.sparta.xpath.ThisNodeTest;
 import com.wdkl.ncs.android.component.home.BuildConfig;
 import com.wdkl.ncs.android.component.home.R;
+import com.wdkl.ncs.android.component.home.service.TcpHandleService;
 import com.wdkl.ncs.android.component.home.settingconfig.SettingConfig;
 import com.wdkl.ncs.android.component.home.util.NetHelper;
 import com.wdkl.ncs.android.component.nursehome.common.Constants;
+import com.wdkl.ncs.android.lib.base.BaseApplication;
 import com.wdkl.ncs.android.lib.utils.ExtendMethodsKt;
 import com.wdkl.ncs.android.middleware.tcp.TcpClient;
 import com.wdkl.ncs.android.middleware.tcp.channel.DeviceUtil;
@@ -72,10 +77,12 @@ public class WatchUserSettingActivity extends Activity {
         tv_device_imei.setText("设备IMEI: " + Constants.Companion.getImei());
         tvDeviceIp.setText("设备IP: " + NetHelper.getInstance().getLocalIP());
         tvDeviceUser.setText("当前用户: " + Constants.Companion.getUser_name());
-        if(Constants.Companion.getUser_role_name().contains("腕表")){
-            tv_device_user_role_name.setText( "用户角色: " +Constants.Companion.getUser_role_name().substring(0,(Constants.Companion.getUser_role_name()).indexOf("腕表")));
-        }else{
-            tv_device_user_role_name.setText("用户角色: " + Constants.Companion.getUser_role_name());
+        if (!Strings.isNullOrEmpty(Constants.Companion.getUser_role_name())) {
+            if (Constants.Companion.getUser_role_name().contains("腕表")) {
+                tv_device_user_role_name.setText("用户角色: " + Constants.Companion.getUser_role_name().substring(0, (Constants.Companion.getUser_role_name()).indexOf("腕表")));
+            } else {
+                tv_device_user_role_name.setText("用户角色: " + Constants.Companion.getUser_role_name());
+            }
         }
 
         //设置呼叫转接时间
@@ -124,11 +131,18 @@ public class WatchUserSettingActivity extends Activity {
             //TODO
         }
 
-
+        final Context _this = this;
         update_app_tv.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View view) {
-                EventBus.getDefault().post(new MessageEvent("", 13));
+            if ((System.currentTimeMillis() / 1000) - TcpHandleService.instance.getUpdateLastTime() > 10) {
+                TcpHandleService.instance.setUpdateLastTime(System.currentTimeMillis() / 1000);
+                Intent intent = new Intent();
+                intent.setClass(_this, AppUpdateActivity.class);
+                startActivity(intent);
+            } else {
+                Toast.makeText(_this, "请10秒后再尝试", Toast.LENGTH_SHORT).show();
+            }
             }
         });
 

+ 14 - 100
home/src/main/code/com/wdkl/ncs/android/component/home/activity/WebRTCVoipAudioActivity.kt

@@ -45,7 +45,6 @@ import java.util.*
 class WebRTCVoipAudioActivity : Activity(), View.OnClickListener {
     var TAG = WebRTCVoipAudioActivity::class.java.simpleName
 
-
     var ACTION = "ACTION"
     var RING = "RING"
     var CALLING = "CALLING"
@@ -74,7 +73,7 @@ class WebRTCVoipAudioActivity : Activity(), View.OnClickListener {
         initCountDownTimer()
         countDownTimer.start()
 
-        //todo 设置为通话状态 有其他用户输入时 DeviceChannel设置返回通话中
+        //设置为通话状态 有其他用户输入时 DeviceChannel设置返回通话中
         DeviceChannel.calling = true
         init()
 
@@ -87,57 +86,14 @@ class WebRTCVoipAudioActivity : Activity(), View.OnClickListener {
             } catch (ex: NotInitializedException) {
                 finish()
             }
-
         }
 
-//        if (t) {
-//            // 创建会话
-//            room = UUID.randomUUID().toString() + System.currentTimeMillis()
-//            val b = gEngineKit?.startOutCall(applicationContext, room, targetId, audioOnly)
-//            if (b!!) {
-//                finish()
-//                return
-//            }
-//            val session = gEngineKit?.getCurrentSession()
-//            if (session == null) {
-//                finish()
-//            } else {
-//                session.setSessionCallback(this)
-//                session.toggleSpeaker(true)
-//            }
-//        } else {
-//            val session = gEngineKit?.getCurrentSession()
-//            if (session == null) {
-//                finish()
-//            } else {
-//                /*if (session.isAudioOnly() && !audioOnly) { //这种情况是,对方切换成音频的时候,activity还没启动,这里启动后需要切换一下
-//                    isAudioOnly = session.isAudioOnly();
-//                    fragment.didChangeMode(true);
-//                }*/
-//                Log.d(TAG, "session = " + session + "; session.getState() = " + session.state)
-//                session.setSessionCallback(this)
-//                session.toggleSpeaker(true)
-//
-//                //之前已经通过tcp接受了,此时sip通话建立,直接接通
-//                if (session.state == EnumType.CallState.Incoming) {
-//                    session.joinHome(session.roomId)
-//                } else {
-//                    session.sendRefuse()
-//                }
-//            }
-//        }
-
-
         targetId = intent.getStringExtra("targetId")
         Log.i(TAG, "SIP账号$targetId")
         tcpModel = intent.getSerializableExtra("TcpModel") as TcpModel
-//        interactionVO = (InteractionVO) getIntent().getSerializableExtra("interactionVO");
         action = intent.getStringExtra(ACTION)
 
         Log.i(TAG, "tcpModel" + tcpModel.action)
-        //测试
-//        SipHelperUtil.getInstance(this).getmSipCallBack().startCall(targetId)
-//        SipHelperUtil.getInstance(this).getmSipCallBack().startCall("3288")
 
         MediaPlayHelper.getInstance().playResMusic(R.raw.outgoing_call, 0.6f, true)
         if (tcpModel.type == TcpType.VOICE) {
@@ -150,35 +106,16 @@ class WebRTCVoipAudioActivity : Activity(), View.OnClickListener {
                 room_number_tv.text = interactionVO.toFrameFullName
                 bao_mother_name_tv.setText(interactionVO.toMemberName)
             }
-//            else if(tcpModel.action === TcpAction.VoiceAction.CALLING){
-//                showMessage("对方正在通话")
-//                val interactionVO = Gson().fromJson(tcpModel.data.toString(), InteractionVO::class.java)
-//                room_number_tv.text =  interactionVO.toFrameFullName
-//                bao_mother_name_tv.setText(interactionVO.toMemberName)
-//                MediaPlayHelper.getInstance().stopMusic()
-//                Log.e(TAG, "对方正在通话")
-//                finish()
-//
-//            }
         }
 
         if (action == CALLING) {
             Log.i(TAG, "自己同意 拨打过去。。。")
-            //主动拨打电话
-//            SipHelperUtil.getInstance(this).getmSipCallBack().startCall(targetId)
-
-
             //webRTC
             var room = UUID.randomUUID().toString() + System.currentTimeMillis()
             Log.i(TAG, "生成的房间号room " + room + "sipid targetId" + targetId)
             val b = gEngineKit?.startOutCall(applicationContext, room, targetId, true)
-            if (b!!) {
-//                finish()
-//                return
-            }
             val session = gEngineKit?.getCurrentSession()
-            if (session == null) {
-            } else {
+            if (session != null) {
                 Handler().postDelayed({
                     //防止建立连接的时候 不能成功切换外音
                     session.toggleSpeaker(true)
@@ -195,8 +132,6 @@ class WebRTCVoipAudioActivity : Activity(), View.OnClickListener {
 
         } else if (action == RING) {
             Log.i(TAG, "接电话。。。")
-            //接听电话
-//            SipHelperUtil.getInstance(this).getmSipCallBack().autoTalking()
         }
 
 
@@ -204,16 +139,11 @@ class WebRTCVoipAudioActivity : Activity(), View.OnClickListener {
 
     override fun onStart() {
         super.onStart()
-//        if(!EventBus.getDefault().isRegistered(this)) {
-//            EventBus.getDefault().register(this)
-//        }
     }
 
-
     fun init() {
         hang_up_imagev.setOnClickListener(this)
         hands_free_image.setOnClickListener(this)
-
     }
 
     override fun onClick(p0: View?) {
@@ -230,11 +160,11 @@ class WebRTCVoipAudioActivity : Activity(), View.OnClickListener {
                 Log.i(TAG, "tcpModel" + interactionVO!!.id!!)
                 Log.i(TAG, "tcpModel" + tcpModel.toJson())
 
-                if(!TcpClientHandler.connecteds){
+                if(!TcpClientHandler.getConnected()){
                     EventBus.getDefault().post(MessageEvent(tcpModel, Constants.EVENT_TCP_BREAK))
                 }
 
-                //todo 给服务器发送挂断 tcp
+                //给服务器发送挂断 tcp
                 if (interactionVO != null) {
                     if (tcpModel.type == TcpType.VOICE) {
                         if (tcpModel.action === TcpAction.VoiceAction.SUCCESS) {
@@ -244,20 +174,15 @@ class WebRTCVoipAudioActivity : Activity(), View.OnClickListener {
                             val voiceUtilTcpModel = VoiceUtil.voiceHandoff(Integer.parseInt(Constants.ids), tcpModel.fromId, interactionVO.id)
                             TcpClient.getInstance().sendMsg(voiceUtilTcpModel.toJson())
                         }
-//                      SipHelperUtil.getInstance(this).getmSipCallBack().endCall()
 
                         //webrtc
                         val session = gEngineKit?.getCurrentSession()
                         if (session != null) {
-                            SkyEngineKit.Instance().endCall()
+                            session.leave()
                         }
-
                         finish()
-
                     }
-
                 }
-
             }
             R.id.hands_free_image -> {
                 Log.i(TAG,"handsFree "+handsFree)
@@ -278,19 +203,14 @@ class WebRTCVoipAudioActivity : Activity(), View.OnClickListener {
                     }
                     handsFree = false
                 }
-
             }
-
-
         }
 
     }
     fun initCountDownTimer() {
         countDownTimer = object : CountDownTimer(CALL_TIMEOUT * 1000L, 1000) {
             override fun onTick(millisUntilFinished: Long) {
-
             }
-
             override fun onFinish() {
                 isClick = true
             }
@@ -306,9 +226,6 @@ class WebRTCVoipAudioActivity : Activity(), View.OnClickListener {
             if (tcpModel.action === TcpAction.VoiceAction.ACCEPT) {
                 MediaPlayHelper.getInstance().stopMusic()
                 Log.i(TAG, "对方接听电话啦")
-                //data 是 InteractionVO
-                //   Gson gson = new GsonBuilder().setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES).create();
-                //  InteractionVO interactionVO = gson.fromJson(tcpModel.getData().toString(), InteractionVO.class);
                 MediaPlayHelper.getInstance().stopMusic()
                 call_duration_tv.visibility = View.VISIBLE
 
@@ -318,44 +235,43 @@ class WebRTCVoipAudioActivity : Activity(), View.OnClickListener {
                     call_duration_tv.start()
 
                 }, 2900)
-//                SipHelperUtil.getInstance(this).getmSipCallBack().startCall(targetId)
 
                 var room = UUID.randomUUID().toString() + System.currentTimeMillis()
                 Log.i(TAG, "生成的房间号room " + room + "sipid targetId" + targetId)
 
                 val b = gEngineKit?.startOutCall(applicationContext, room, targetId, true)
-                if (b!!) {
-//                finish()
-//                return
-                }
                 val session = gEngineKit?.getCurrentSession()
-                if (session == null) {
-                } else {
+                if (session != null) {
                     Handler().postDelayed({
                         session.toggleSpeaker(true)
                     }, 3500)
-
                 }
-
             } else if (tcpModel.action == TcpAction.VoiceAction.HANDOFF) { //对方挂断
                 call_duration_tv.stop()
+                val session = gEngineKit?.getCurrentSession()
+                if (session != null) {
+                    session.leave()
+                }
+                DeviceChannel.calling = false;
                 finish()
             } else if (tcpModel.action === TcpAction.VoiceAction.REJECT) {
                 //voiceStatus.setText("对方拒绝接听");
                 showMessage("对方拒绝接听")
                 MediaPlayHelper.getInstance().stopMusic()
+                DeviceChannel.calling = false;
                 finish()
             } else if (tcpModel.action === TcpAction.VoiceAction.CALLING) {
                 //voiceStatus.setText("对方正在通话");
                 showMessage("对方正在通话")
+                DeviceChannel.calling = false;
                 AppTool.Time.delay(3000) {
                     MediaPlayHelper.getInstance().stopMusic()
                     finish()
                 }
-
             } else if (tcpModel.action === TcpAction.VoiceAction.FAILED) {
                 //voiceStatus.setText("对方拒绝");
                 showMessage("呼叫失败,对方可能不在线")
+                DeviceChannel.calling = false;
                 MediaPlayHelper.getInstance().stopMusic()
                 finish()
             }
@@ -421,7 +337,5 @@ class WebRTCVoipAudioActivity : Activity(), View.OnClickListener {
         }
         MediaPlayHelper.getInstance().stopMusic()
         EventBus.getDefault().unregister(this)
-
     }
-
 }

+ 4 - 8
home/src/main/code/com/wdkl/ncs/android/component/home/activity/WebRTCVoipAudioRingingActivity.kt

@@ -88,17 +88,18 @@ class WebRTCVoipAudioRingingActivity : Activity(), View.OnClickListener {
                 MediaPlayHelper.getInstance().stopMusic()
                 countDownTimer?.cancel()
                 //todo 给服务器发送转接 tcp
+                DeviceChannel.calling = false
                 val interactionVO = Gson().fromJson(tcpModel.data.toString(), InteractionVO::class.java)
                 val voiceTransferTcpModel = VoiceUtil.voiceTransfer(Integer.parseInt(Constants.ids), tcpModel.fromId, interactionVO)
                 TcpClient.getInstance().sendMsg(voiceTransferTcpModel.toJson())
                 finish()
             }
             R.id.hang_up_imagev ->{
+                DeviceChannel.calling = false
                 isAnswerOrHangUp = true
                 MediaPlayHelper.getInstance().stopMusic()
                 countDownTimer?.cancel()
-                //todo 给服务器发送拒接 tcp
-//            InteractionVO interactionVO = (InteractionVO) tcpModel.getData();
+                //t给服务器发送拒接 tcp
                 val interactionVO = Gson().fromJson(tcpModel.data.toString(), InteractionVO::class.java)
                 val voiceUtilTcpModel = VoiceUtil.voiceReject(Integer.parseInt(Constants.ids), tcpModel.fromId, interactionVO.id)
                 TcpClient.getInstance().sendMsg(voiceUtilTcpModel.toJson())
@@ -108,24 +109,19 @@ class WebRTCVoipAudioRingingActivity : Activity(), View.OnClickListener {
                 isAnswerOrHangUp = true
                 MediaPlayHelper.getInstance().stopMusic()
                 countDownTimer?.cancel()
-                //todo 给服务器发送接听 tcp
-//            InteractionVO interactionVO = (InteractionVO) tcpModel.getData();
+                //给服务器发送接听 tcp
                 val interactionVO = Gson().fromJson(tcpModel.data.toString(), InteractionVO::class.java)
                 val voiceUtilTcpModel = VoiceUtil.voiceAccept(Integer.parseInt(Constants.ids), tcpModel.fromId, interactionVO.id)
                 TcpClient.getInstance().sendMsg(voiceUtilTcpModel.toJson())
 
                 val intent = Intent(this, WebRTCVoipAudioActivity::class.java)
                 intent.putExtra("targetId", targetId)
-//            intent.putExtra("interactionVO", interactionVO);
                 intent.putExtra("TcpModel", tcpModel)
                 intent.putExtra(WebRTCVoipAudioActivity().ACTION, WebRTCVoipAudioActivity().CALLING)
                 startActivity(intent)
                 finish()
-
             }
-
         }
-
     }
 
     private fun initCountDownTimer() {

+ 2 - 6
home/src/main/code/com/wdkl/ncs/android/component/home/broadcast/BatteryBroadcastReceiver.java

@@ -4,7 +4,6 @@ import android.annotation.SuppressLint;
 import android.content.BroadcastReceiver;
 import android.content.Context;
 import android.content.Intent;
-import android.util.Log;
 import android.widget.TextView;
 
 import com.wdkl.ncs.android.component.nursehome.common.Constants;
@@ -14,7 +13,7 @@ import org.greenrobot.eventbus.EventBus;
 
 
 public class BatteryBroadcastReceiver extends BroadcastReceiver {
-private String TAG = BatteryBroadcastReceiver.class.getSimpleName();
+    private String TAG = BatteryBroadcastReceiver.class.getSimpleName();
 
     private TextView mBatteryView;
 
@@ -29,10 +28,7 @@ private String TAG = BatteryBroadcastReceiver.class.getSimpleName();
             int level = intent.getIntExtra("level", 0);
             int scale = intent.getIntExtra("scale", 100);
             int power = level * 100 / scale;
-           Log.e(TAG, "电池电量::" + power);
-//            mBatteryView.setText(power);
-
-            EventBus.getDefault().post(new MessageEvent(power, Constants.Companion.getEVENT_WIFI_RSSI()));
+            EventBus.getDefault().post(new MessageEvent(power, Constants.EVENT_BATTERY_PERCENT));
         }
     }
 }

+ 0 - 2
home/src/main/code/com/wdkl/ncs/android/component/home/di/HomeComponent.kt

@@ -24,8 +24,6 @@ interface HomeComponent {
     //手表
     fun inject(activity: WatchRegisterActivity)
 
-    fun inject(activity: WatchHomeActivity)
-
     fun inject(activity: WatchHome2Activity)
 
     fun inject(activity: AppUpdateActivity)

+ 51 - 177
home/src/main/code/com/wdkl/ncs/android/component/home/service/APPService.kt

@@ -1,16 +1,15 @@
 package com.wdkl.ncs.android.component.home.service
 
-import android.app.Notification
 import android.app.Service
 import android.content.Intent
 import android.os.Binder
 import android.os.CountDownTimer
 import android.os.IBinder
 import android.text.TextUtils
-import android.util.Log
 import com.google.gson.Gson
 import com.wdkl.core.consts.Urls
 import com.wdkl.core.socket.SocketManager
+import com.wdkl.ncs.android.component.home.util.Util
 import com.wdkl.ncs.android.component.nursehome.common.Constants
 import com.wdkl.ncs.android.middleware.model.vo.InteractionVO
 import com.wdkl.ncs.android.middleware.tcp.TcpClient
@@ -20,17 +19,14 @@ import com.wdkl.ncs.android.middleware.tcp.dto.TcpModel
 import com.wdkl.ncs.android.middleware.tcp.enums.TcpAction
 import com.wdkl.ncs.android.middleware.tcp.enums.TcpType
 import com.wdkl.ncs.android.middleware.utils.MessageEvent
-import com.wdkl.skywebrtc.SkyEngineKit
 import org.greenrobot.eventbus.EventBus
-import org.greenrobot.eventbus.Subscribe
-import org.greenrobot.eventbus.ThreadMode
 import java.util.*
 
 class APPService : Service() {
     private val TAG = APPService::class.java.simpleName
     internal var myBinder = ServiceBinder()
 
-    private var CALL_TIMEOUT = 12 //多久可以再次点击
+    private var CALL_TIMEOUT = 12 //拨出超时秒数
     //呼叫倒计时
     lateinit var countDownTimer: CountDownTimer
 
@@ -38,15 +34,11 @@ class APPService : Service() {
         var tcpModel: TcpModel? = null
     }
 
-    var isThread: Boolean = true
-
     override fun onCreate() {
         super.onCreate()
-        EventBus.getDefault().register(this)
-//        checkStatus()
-        connectWebsocket()
-        connectWebsocket2()
         initCountDownTimer()
+        connectRTC()
+        resendVoiceCallAndSuccess()
     }
 
     override fun onStartCommand(intent: Intent, flags: Int, startId: Int): Int {
@@ -58,115 +50,87 @@ class APPService : Service() {
         return myBinder
     }
 
-    var timer: Timer? = null
-    var timerTask: TimerTask? = null
-
-    private fun checkStatus() {
-        if (timer != null) timer!!.purge()
-        if (timerTask != null) timerTask!!.cancel()
-        timer = Timer()
-        timerTask = object : TimerTask() {
-            override fun run() {
-                try {
-                } catch (e: Exception) {
-                }
-
-            }
-        }
-        timer!!.schedule(timerTask, 0, 30000)
-    }
-
-    var timer2: Timer? = null
-    var timerTask2: TimerTask? = null
-
-    private fun connectWebsocket() {
-        if (timer2 != null) timer2!!.purge()
-        if (timerTask2 != null) timerTask2!!.cancel()
-        timer2 = Timer()
-        timerTask2 = object : TimerTask() {
+    var rtcTimer: Timer? = null
+    var rtcTimerTask: TimerTask? = null
+
+    /**
+     * 重连wdklRTC
+     */
+    private fun connectRTC() {
+        if (rtcTimer != null) rtcTimer!!.purge()
+        if (rtcTimerTask != null) rtcTimerTask!!.cancel()
+        rtcTimer = Timer()
+        rtcTimerTask = object : TimerTask() {
             override fun run() {
-//                WebsocketUtil.connectWS()//定时检测Websocket;如有断开;及时联接
-                Log.i(TAG,"tcp检测111.。。"+TcpClientHandler.connecteds)
-                if (!TcpClientHandler.connecteds) {
-                    Log.i(TAG,"tcp检测")
+                if (!TcpClientHandler.getConnected()) {
                     EventBus.getDefault().post(MessageEvent("", 14))
                     if (!TextUtils.isEmpty(Constants.sip_id)) {
-                        // 连接socket:登录
                         SocketManager.getInstance().connect(Urls.WS, Constants.sip_id, 0)
                     }
-
                 }
             }
         }
-        timer2!!.schedule(timerTask2, 8000, 5000)
-
+        rtcTimer!!.schedule(rtcTimerTask, 8000, 5000)
     }
 
-
-    var timer3: Timer? = null
-    var timerTask3: TimerTask? = null
-
-    private fun connectWebsocket2() {
-        if (timer3 != null) timer3!!.purge()
-        if (timerTask3 != null) timerTask3!!.cancel()
-        timer3 = Timer()
-        timerTask3 = object : TimerTask() {
+    var resendVoiceTimer: Timer? = null
+    var resendVoiceTimerTask: TimerTask? = null
+
+    /**
+     * 重发拨出成功和去电的挂断命令
+     */
+    private fun resendVoiceCallAndSuccess() {
+        val _this = this
+        if (resendVoiceTimer != null) resendVoiceTimer!!.purge()
+        if (resendVoiceTimerTask != null) resendVoiceTimerTask!!.cancel()
+        resendVoiceTimer = Timer()
+        resendVoiceTimerTask = object : TimerTask() {
             override fun run() {
-//                WebsocketUtil.connectWS()//定时检测Websocket;如有断开;及时联接
-                    if (TcpClientHandler.connecteds && tcpModel != null) {
-
-                        var interactionVO: InteractionVO? = null
-                        if (tcpModel!!.data.javaClass.name == String::class.java.name) {
-                            interactionVO = Gson().fromJson(tcpModel?.data.toString(), InteractionVO::class.java)
-                        } else {
-                            interactionVO = tcpModel?.data as InteractionVO
-                        }
-//                Log.e(TAG, "tcpModel" + interactionVO!!.id!!)
-//                Log.e(TAG, "tcpModel" + tcpModel?.toJson())
-
+                if (!TcpClientHandler.getConnected()) {
+                    //断开连接后亮屏
+                    Util.wakeUpAndUnlock(_this)
+                } else if (tcpModel != null){
+                    var interactionVO: InteractionVO? = null
+                    if (tcpModel!!.data.javaClass.name == String::class.java.name) {
+                        interactionVO = Gson().fromJson(tcpModel?.data.toString(), InteractionVO::class.java)
+                    } else {
+                        interactionVO = tcpModel?.data as InteractionVO
+                    }
 
-                        //todo 给服务器发送挂断 tcp
-                        if (interactionVO != null) {
-                            if (tcpModel?.type == TcpType.VOICE) {
-                                if (tcpModel?.action === TcpAction.VoiceAction.SUCCESS) {
-                                    val voiceUtilTcpModel = VoiceUtil.voiceHandoff(Integer.parseInt(Constants.ids), tcpModel?.toId, interactionVO.id)
-                                    TcpClient.getInstance().sendMsg(voiceUtilTcpModel.toJson())
-                                } else if (tcpModel?.action === TcpAction.VoiceAction.CALL) {
-                                    val voiceUtilTcpModel = VoiceUtil.voiceHandoff(Integer.parseInt(Constants.ids), tcpModel?.fromId, interactionVO.id)
-                                    TcpClient.getInstance().sendMsg(voiceUtilTcpModel.toJson())
-                                }
+                    if (interactionVO != null) {
+                        if (tcpModel?.type == TcpType.VOICE) {
+                            if (tcpModel?.action === TcpAction.VoiceAction.SUCCESS) {
+                                val voiceUtilTcpModel = VoiceUtil.voiceHandoff(Integer.parseInt(Constants.ids), tcpModel?.toId, interactionVO.id)
+                                TcpClient.getInstance().sendMsg(voiceUtilTcpModel.toJson())
+                            } else if (tcpModel?.action === TcpAction.VoiceAction.CALL) {
+                                val voiceUtilTcpModel = VoiceUtil.voiceHandoff(Integer.parseInt(Constants.ids), tcpModel?.fromId, interactionVO.id)
+                                TcpClient.getInstance().sendMsg(voiceUtilTcpModel.toJson())
                             }
-
                         }
-                        tcpModel = null
+                    }
+                    tcpModel = null
                 }
             }
         }
-        timer3!!.schedule(timerTask3, 2000, 1000)
-
+        resendVoiceTimer!!.schedule(resendVoiceTimerTask, 2000, 2000)
     }
 
-
-
     override fun onDestroy() {
         super.onDestroy()
         if (countDownTimer != null) {
             countDownTimer.cancel()
         }
         stopForeground(true)// 停止前台服务--参数:表示是否移除之前的通知
-        EventBus.getDefault().unregister(this)
     }
 
     inner class ServiceBinder : Binder() {
         fun doThings() {
-
         }
     }
 
     fun initCountDownTimer() {
         countDownTimer = object : CountDownTimer(CALL_TIMEOUT * 1000L, 1000) {
             override fun onTick(millisUntilFinished: Long) {
-
             }
 
             override fun onFinish() {
@@ -176,11 +140,8 @@ class APPService : Service() {
                 } else {
                     interactionVO = tcpModel?.data as InteractionVO
                 }
-//                Log.e(TAG, "tcpModel" + interactionVO!!.id!!)
-//                Log.e(TAG, "tcpModel" + tcpModel?.toJson())
-
 
-                //todo 给服务器发送挂断 tcp
+                //给服务器发送挂断 tcp
                 if (interactionVO != null) {
                     if (tcpModel?.type == TcpType.VOICE) {
                         if (tcpModel?.action === TcpAction.VoiceAction.SUCCESS) {
@@ -197,91 +158,4 @@ class APPService : Service() {
             }
         }
     }
-
-//    companion object {
-//        fun hangUp() {
-//
-//        }
-//    }
-
-
-    @Subscribe(threadMode = ThreadMode.MAIN)
-    fun onMoonEvent(messageEvent: MessageEvent) {
-
-
-        Log.e(TAG, "messageEvent.tag" + messageEvent.tag)
-
-        if (messageEvent.tag == Constants.EVENT_TCP_BREAK) {
-            tcpModel = messageEvent.getMessage() as TcpModel
-//            countDownTimer.start()
-
-//            Thread(Runnable {
-//                while (isThread) {
-//                    if (TcpClientHandler.connecteds) {
-//
-//                        var interactionVO: InteractionVO? = null
-//                        if (tcpModel!!.data.javaClass.name == String::class.java.name) {
-//                            interactionVO = Gson().fromJson(tcpModel?.data.toString(), InteractionVO::class.java)
-//                        } else {
-//                            interactionVO = tcpModel?.data as InteractionVO
-//                        }
-////                Log.e(TAG, "tcpModel" + interactionVO!!.id!!)
-////                Log.e(TAG, "tcpModel" + tcpModel?.toJson())
-//
-//
-//                        //todo 给服务器发送挂断 tcp
-//                        if (interactionVO != null) {
-//                            if (tcpModel?.type == TcpType.VOICE) {
-//                                if (tcpModel?.action === TcpAction.VoiceAction.SUCCESS) {
-//                                    val voiceUtilTcpModel = VoiceUtil.voiceHandoff(Integer.parseInt(Constants.ids), tcpModel?.toId, interactionVO.id)
-//                                    TcpClient.getInstance().sendMsg(voiceUtilTcpModel.toJson())
-//                                } else if (tcpModel?.action === TcpAction.VoiceAction.CALL) {
-//                                    val voiceUtilTcpModel = VoiceUtil.voiceHandoff(Integer.parseInt(Constants.ids), tcpModel?.fromId, interactionVO.id)
-//                                    TcpClient.getInstance().sendMsg(voiceUtilTcpModel.toJson())
-//                                }
-//                            }
-//
-//                        }
-//                        tcpModel = null
-//                        isThread = false
-//                    }
-//                    try {
-//                        Thread.sleep(1000)
-//                    } catch (e: InterruptedException) {
-//                        e.printStackTrace()
-//                    }
-//                }
-//
-//            }).start()
-
-        } else if (messageEvent.tag == Constants.EVENT_TCP_RETRANSMISSION) {
-//            var interactionVO: InteractionVO? = null
-//            if (tcpModel!!.data.javaClass.name == String::class.java.name) {
-//                interactionVO = Gson().fromJson(tcpModel?.data.toString(), InteractionVO::class.java)
-//            } else {
-//                interactionVO = tcpModel?.data as InteractionVO
-//            }
-////                Log.e(TAG, "tcpModel" + interactionVO!!.id!!)
-////                Log.e(TAG, "tcpModel" + tcpModel?.toJson())
-//
-//
-//            //todo 给服务器发送挂断 tcp
-//            if (interactionVO != null) {
-//                if (tcpModel?.type == TcpType.VOICE) {
-//                    if (tcpModel?.action === TcpAction.VoiceAction.SUCCESS) {
-//                        val voiceUtilTcpModel = VoiceUtil.voiceHandoff(Integer.parseInt(Constants.ids), tcpModel?.toId, interactionVO.id)
-//                        TcpClient.getInstance().sendMsg(voiceUtilTcpModel.toJson())
-//                    } else if (tcpModel?.action === TcpAction.VoiceAction.CALL) {
-//                        val voiceUtilTcpModel = VoiceUtil.voiceHandoff(Integer.parseInt(Constants.ids), tcpModel?.fromId, interactionVO.id)
-//                        TcpClient.getInstance().sendMsg(voiceUtilTcpModel.toJson())
-//                    }
-//                }
-//
-//            }
-//            tcpModel = null
-//        }
-
-        }
-
-    }
 }

+ 78 - 17
home/src/main/code/com/wdkl/ncs/android/component/home/service/TcpHandleService.kt

@@ -4,15 +4,21 @@ import android.app.Service
 import android.content.Intent
 import android.os.IBinder
 import android.util.Log
-import com.google.gson.FieldNamingPolicy
 import com.google.gson.Gson
-import com.google.gson.GsonBuilder
+import com.wdkl.ncs.android.component.home.SOSEmergencyCallActivity
+import com.wdkl.ncs.android.component.home.activity.AppUpdateActivity
 import com.wdkl.ncs.android.component.home.activity.WatchEventDetailActivity
+import com.wdkl.ncs.android.component.home.activity.WebRTCVoipAudioActivity
+import com.wdkl.ncs.android.component.home.activity.WebRTCVoipAudioRingingActivity
 import com.wdkl.ncs.android.component.home.util.AppUtils
 import com.wdkl.ncs.android.component.home.util.SpeechUtil
+import com.wdkl.ncs.android.component.home.util.Util
 import com.wdkl.ncs.android.component.nursehome.common.Constants
+import com.wdkl.ncs.android.lib.utils.AppTool
+import com.wdkl.ncs.android.lib.utils.TimeEngine
 import com.wdkl.ncs.android.lib.utils.push
 import com.wdkl.ncs.android.middleware.model.vo.InteractionVO
+import com.wdkl.ncs.android.middleware.tcp.channel.DeviceChannel
 import com.wdkl.ncs.android.middleware.tcp.dto.TcpModel
 import com.wdkl.ncs.android.middleware.tcp.enums.TcpAction
 import com.wdkl.ncs.android.middleware.tcp.enums.TcpType
@@ -22,6 +28,10 @@ import org.greenrobot.eventbus.Subscribe
 import org.greenrobot.eventbus.ThreadMode
 
 class TcpHandleService : Service(){
+    companion object instance {
+        var updateLastTime : Long = System.currentTimeMillis() / 1000
+    }
+
     override fun onBind(intent: Intent?): IBinder? {
         TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
     }
@@ -43,19 +53,38 @@ class TcpHandleService : Service(){
 
     @Subscribe(threadMode = ThreadMode.MAIN)
     fun onMoonEvent(messageEvent: MessageEvent) {
-        Log.i("TcpHandleService", "MessageEvent : " + messageEvent.tag)
-        if (messageEvent.tag==2){
-            var tcpModel = messageEvent.getMessage() as TcpModel
-           Log.i("tag",tcpModel.toJson())
-        }
+        if (messageEvent.tag==1){   //拨出成功 || 有来电
+            Util.wakeUpAndUnlock(this)
 
-        if (messageEvent.tag==3){
             var tcpModel = messageEvent.getMessage() as TcpModel
-            Log.i("TcpHandleService", "TcpModel : " + tcpModel.fromId)
+            if (tcpModel.type == TcpType.VOICE){
+//                var gson = GsonBuilder().setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES).create()
+                var interactionVO = Gson().fromJson(tcpModel.data.toString(), InteractionVO::class.java)
+                var intent = Intent()
 
-            //data 是 InteractionVO
-            //var gson = GsonBuilder().setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES).create()
-            //var interactionVO = gson.fromJson(tcpModel.data.toString(), InteractionVO::class.java)
+                if (tcpModel.action == TcpAction.VoiceAction.SUCCESS){  //拨出成功
+                    DeviceChannel.calling = true;
+                    intent.setClass(this, WebRTCVoipAudioActivity::class.java)
+                    intent.putExtra("targetId", interactionVO?.toSipId)
+                    intent.putExtra("TcpModel", tcpModel)
+                    intent.putExtra(WebRTCVoipAudioActivity().ACTION, WebRTCVoipAudioActivity().CALL)
+                    startActivity(intent)
+                } else if (tcpModel.action == TcpAction.VoiceAction.CALL){  //有来电
+                    DeviceChannel.calling = true;
+                    intent.setClass(this, WebRTCVoipAudioRingingActivity::class.java)
+                    intent.putExtra("targetId", interactionVO?.fromSipId)
+                    intent.putExtra("TcpModel", tcpModel)
+                    startActivity(intent)
+                }
+            }
+        } else if (messageEvent.tag==3){   //事件与语音留言通道
+            while (DeviceChannel.calling) {    //通话中不处理,一直等待至结束
+                Thread.sleep(3000)
+            }
+
+            Util.wakeUpAndUnlock(this)
+
+            var tcpModel = messageEvent.getMessage() as TcpModel
             if (tcpModel.type == TcpType.IM) {
                 SpeechUtil.getInstance().newSpeech("您有新的语音留言待处理", false)
             } else if (tcpModel.type == TcpType.EVENT) {
@@ -70,15 +99,47 @@ class TcpHandleService : Service(){
             var intent = Intent()
             intent.setClass(this, WatchEventDetailActivity::class.java)
             intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
-            //todo: 不优雅的传输,应该直接传递对象
-            intent.putExtra("tcpModelStr",tcpModel.toJson())
+            intent.putExtra("tcpModelStr", tcpModel.toJson())
             startActivity(intent)
-        } else if (messageEvent.tag == Constants.EVENT_TCP_APP_UPDATE) {
-            //重新刷新数据
+        } else if (messageEvent.tag == 999){    //SOS通道
+            while (DeviceChannel.calling) {    //通话中不处理,一直等待至结束
+                Thread.sleep(3000)
+            }
+
+            Util.wakeUpAndUnlock(this)
+
+            var tcpModel = messageEvent.getMessage() as TcpModel
+            if (tcpModel.type == TcpType.SOS && tcpModel.action === TcpAction.SOSAction.CALL) {
+                var intent = Intent()
+                intent.setClass(this, SOSEmergencyCallActivity::class.java)
+                intent.putExtra("TcpModel", tcpModel)
+                startActivity(intent)
+            }
+        } else if (messageEvent.tag == Constants.EVENT_DEVICE_CHANGE) {
+            while (DeviceChannel.calling) {    //通话中不处理,一直等待至结束
+                Thread.sleep(3000)
+            }
+
+            Util.wakeUpAndUnlock(this)
             var tcpModel = messageEvent.getMessage() as TcpModel
-            if (tcpModel.action==TcpAction.DeviceAction.RESTART) {
+            if (tcpModel.action == TcpAction.DeviceAction.RESTART) {
                 AppUtils.restartApp()
             }
+        } else if (messageEvent.tag == Constants.EVENT_APP_UPDATE) {
+            while (DeviceChannel.calling) {    //通话中不处理,一直等待至结束
+                Thread.sleep(3000)
+            }
+
+            Util.wakeUpAndUnlock(this)
+            var tcpModel = messageEvent.getMessage() as TcpModel
+            if (tcpModel.action == TcpAction.DeviceAction.APP_UPDATE) {
+                if ((System.currentTimeMillis() / 1000) - updateLastTime > 10){   //大于30秒可继续升级
+                    updateLastTime = System.currentTimeMillis() / 1000
+                    var intent = Intent()
+                    intent.setClass(this, AppUpdateActivity::class.java)
+                    startActivity(intent)
+                }
+            }
         }
     }
 }

+ 2 - 2
home/src/main/code/com/wdkl/ncs/android/component/home/settingconfig/SettingConfig.java

@@ -12,7 +12,7 @@ public class SettingConfig {
     private static final int CountdownTime = 15;
 
     /**
-     * 获取播报次数
+     * 获取转发时间
      *
      * @return
      */
@@ -21,7 +21,7 @@ public class SettingConfig {
     }
 
     /**
-     * 设置播报次数
+     * 设置转发时间
      *
      * @param value
      */

+ 0 - 15
home/src/main/code/com/wdkl/ncs/android/component/home/util/NetHelper.java

@@ -70,21 +70,6 @@ public class NetHelper {
         connManager = (ConnectivityManager) BaseApplication.appContext.getApplicationContext().getSystemService(Context.CONNECTIVITY_SERVICE);
     }
 
-    public static void startNetCheck() {
-        if (timerNetStatus != null) {
-            timerNetStatus.purge();
-        }
-        timerNetStatus = new Timer();
-        timerNetStatus.schedule(new TimerTask() {
-            @Override
-            public void run() {
-                NetConn = ping(getLocalElement(3), 2, null);
-
-                EventBus.getDefault().post(new MessageEvent(ETHERNETSTATUS, Constants.Companion.getEVENT_INTERNETPING()));//循环检测SIP,以太网ping状态
-            }
-        }, 10, SCHEDULE_TIME);
-    }
-
     /**
      * ping 网络
      *

+ 4 - 2
home/src/main/code/com/wdkl/ncs/android/component/home/util/Util.kt

@@ -11,7 +11,7 @@ import android.telephony.TelephonyManager
 import com.umeng.socialize.utils.DeviceConfig
 
 
-class Util {
+object Util {
 
     var IMEI = ""
 
@@ -29,7 +29,9 @@ class Util {
         return IMEI
     }
 
-
+    /**
+     * 亮屏并解锁
+     */
     fun wakeUpAndUnlock(context: Context){
         val pm = context.getSystemService(Context.POWER_SERVICE) as PowerManager
         val screenOn = pm.isScreenOn

+ 0 - 13
home/src/main/java/com/wdkl/ncs/android/component/home/SOSEmergencyCallActivity.kt

@@ -35,11 +35,8 @@ class SOSEmergencyCallActivity : Activity(), View.OnClickListener {
         interactionVO = Gson().fromJson(tcpModel!!.getData().toString(), InteractionVO::class.java)
         init()
         MediaPlayHelper.getInstance().playResMusic(R.raw.sos2, 1.0f, true)
-
-
     }
 
-
     override fun onStart() {
         super.onStart()
         EventBus.getDefault().register(this)
@@ -59,11 +56,8 @@ class SOSEmergencyCallActivity : Activity(), View.OnClickListener {
                 var otherUtilTcpModel = OtherUtil.SOSCancel(Constants.ids.toInt(), tcpModel?.fromId, interactionVO?.id)
                 TcpClient.getInstance().sendMsg(otherUtilTcpModel.toJson())
                 finish()
-
             }
         }
-
-
     }
 
 
@@ -84,22 +78,15 @@ class SOSEmergencyCallActivity : Activity(), View.OnClickListener {
                 TcpType.SOS -> if (tcpModel.getAction() === TcpAction.SOSAction.CANCEL) {
                     finish()
                 }
-
             }
         }
-
-
     }
 
-
     override fun onKeyUp(keyCode: Int, event: KeyEvent): Boolean {
         return if (keyCode == KeyEvent.KEYCODE_BACK && event.getAction() === KeyEvent.ACTION_UP) {
-
             //不执行父类点击事件
             true
         } else super.onKeyUp(keyCode, event)
         //继续执行父类其他点击事件
     }
-
-
 }

+ 1 - 0
home/src/main/res/layout/activity_app_update.xml

@@ -5,6 +5,7 @@
         android:layout_width="match_parent"
         android:layout_height="match_parent"
         android:background="#ffffff"
+        android:keepScreenOn="true"
         android:orientation="vertical">
 
         <TextView

+ 1 - 0
home/src/main/res/layout/activity_sos_emergency_call.xml

@@ -3,6 +3,7 @@
 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
+    android:keepScreenOn="true"
     android:background="#FFE6E8">
 
     <LinearLayout

+ 1 - 0
home/src/main/res/layout/activity_web_rtc_voip_audio.xml

@@ -2,6 +2,7 @@
 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
+    android:keepScreenOn="true"
     android:background="#FFE6E8">
 
     <LinearLayout

+ 1 - 0
home/src/main/res/layout/activity_web_rtc_voip_audio_ringing.xml

@@ -2,6 +2,7 @@
 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
+    android:keepScreenOn="true"
     android:background="#FFE6E8">
 
     <LinearLayout

+ 1 - 0
home/src/main/res/layout/watch_activity_event_detail.xml

@@ -4,6 +4,7 @@
     <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
         android:layout_width="match_parent"
         android:layout_height="match_parent"
+        android:keepScreenOn="true"
         android:background="#FFBDC3">
 
         <LinearLayout

+ 6 - 12
middleware/src/main/code/com/wdkl/ncs/android/middleware/common/Constants.kt

@@ -18,23 +18,17 @@ class Constants {
         var heart_beat: Int = 9    //tcp心跳
         var tts_state: Int = 0
 
+        const val EVENT_BATTERY_PERCENT = 0x07 //WiFi信号强度
 
-        val EVENT_SIP_REGISTER_STATUS = 0x08 //sip 注册状态
+        const val EVENT_UNTREATED_QUANTITY = 0x10 //未处理数量
 
-        val EVENT_INTERNETPING = 0x09 //以太网ping状态
+        const val EVENT_TCP_BREAK = 0x15 //tcp掉线
 
-        val EVENT_WIFI_RSSI = 0x07 //WiFi信号强度
+        const val EVENT_TCP_RETRANSMISSION  = 0x16 //tcp掉线
 
-        val EVENT_UNTREATED_QUANTITY = 0x10 //未处理数量
-
-        val EVENT_TCP_BREAK = 0x15 //tcp掉线
-
-        val EVENT_TCP_RETRANSMISSION  = 0x16 //tcp掉线
-
-        val EVENT_TCP_APP_UPDATE  = 0x13 //app更新
+        const val EVENT_DEVICE_CHANGE = 0x88 //切换设备
+        const val EVENT_APP_UPDATE  = 0x13 //app更新
 
         var APP_PATH = "" //app版本
     }
-
-
 }

+ 5 - 2
middleware/src/main/code/com/wdkl/ncs/android/middleware/logic/contract/home/AppUpdateContract.kt

@@ -1,13 +1,16 @@
 package com.wdkl.ncs.android.middleware.logic.contract.home
 
 import com.wdkl.ncs.android.lib.base.BaseContract
+import com.wdkl.ncs.android.middleware.model.dos.AppVersionDO
 
 interface AppUpdateContract {
     interface View : BaseContract.BaseView {
-
+        //版本号信息
+        fun handleAppVersion(appInfo: AppVersionDO)
     }
 
     interface Presenter : BaseContract.BasePresenter {
-
+        //获取版本信息
+        fun getAppVersion(partId: Int, deviceType: Int)
     }
 }

+ 3 - 3
middleware/src/main/code/com/wdkl/ncs/android/middleware/logic/contract/home/WatchCallRecordsFragmentContract.kt

@@ -26,7 +26,7 @@ interface WatchCallRecordsFragmentContract {
          * @From   HomeFragmentContract.View
          * @Note   展示七巧板数据
          */
-        fun renderFloor(data : ArrayList<InteractionVO>)
+        fun renderList(data : ArrayList<InteractionVO>)
 
         /**
          *  显示呼叫人的呼叫数据
@@ -49,8 +49,8 @@ interface WatchCallRecordsFragmentContract {
          * @Date   2018/1/19 下午5:53
          * @Note   加载七巧板数据
          */
-        fun loadFloor(ACTION:String, page_no:Int, page_size:Int, device_id:Int,
-                      customer_id:Int,choice:Int)
+        fun loadPage(ACTION:String, page_no:Int, page_size:Int, device_id:Int,
+                     customer_id:Int, choice:Int)
 
 //        /**
 //         * 获取呼叫人的呼叫记录

+ 0 - 5
middleware/src/main/code/com/wdkl/ncs/android/middleware/logic/contract/home/WatchHomeActivityContract.kt

@@ -14,8 +14,6 @@ interface WatchHomeActivityContract{
         fun showData(data : DeviceVO)
         //显示tcp通讯地址
         fun setTcpServerHost(tcpSeverDTO: TcpSeverDTO)
-        //版本号信息
-        fun render(appInfo: AppVersionDO)
         //设置设备设置数据
         fun setDeviceSettingData(partSettingDO: PartSettingDO)
     }
@@ -24,9 +22,6 @@ interface WatchHomeActivityContract{
         fun loadData(ethMac:String)
         //获取tcp服务器地址
         fun loadTcpServerHost()
-        //获取版本信息
-        fun getAppVersion(partId: Int, deviceType: Int)
-
         //获取设备设置数据
         fun getDeviceSettingData(partId:String)
     }

+ 60 - 0
middleware/src/main/code/com/wdkl/ncs/android/middleware/logic/presenter/home/AppUpdatePresenter.kt

@@ -1,12 +1,72 @@
 package com.wdkl.ncs.android.middleware.logic.presenter.home
 
+import com.enation.javashop.net.engine.model.NetState
+import com.enation.javashop.net.engine.plugin.connection.ConnectionQuality
+import com.enation.javashop.net.engine.plugin.exception.ExceptionHandle
+import com.enation.javashop.net.engine.utils.ThreadFromUtils
+import com.google.gson.FieldNamingPolicy
+import com.google.gson.GsonBuilder
 import com.wdkl.ncs.android.lib.base.RxPresenter
+import com.wdkl.ncs.android.lib.utils.ConnectionObserver
+import com.wdkl.ncs.android.lib.utils.getEventCenter
+import com.wdkl.ncs.android.lib.utils.getJsonString
+import com.wdkl.ncs.android.lib.vo.NetStateEvent
+import com.wdkl.ncs.android.middleware.api.WatchManageDeviceApi
 import com.wdkl.ncs.android.middleware.di.MiddlewareDaggerComponent
 import com.wdkl.ncs.android.middleware.logic.contract.home.AppUpdateContract
+import com.wdkl.ncs.android.middleware.model.dos.AppVersionDO
+import com.wdkl.ncs.android.middleware.model.dos.PartSettingDO
+import com.wdkl.ncs.android.middleware.model.dto.TcpSeverDTO
+import com.wdkl.ncs.android.middleware.model.vo.DeviceVO
+import io.reactivex.disposables.Disposable
 import javax.inject.Inject
 
 class AppUpdatePresenter @Inject constructor() : RxPresenter<AppUpdateContract.View>(), AppUpdateContract.Presenter {
     override fun bindDagger() {
         MiddlewareDaggerComponent.component.inject(this)
     }
+
+    @Inject
+    protected lateinit var watchManageDeviceApi: WatchManageDeviceApi
+
+    private val observer = object : ConnectionObserver<Any>(){
+        override fun onStartWithConnection() {
+            providerView().start()
+        }
+
+        override fun onNextWithConnection(result: Any, connectionQuality: ConnectionQuality) {
+            providerView().complete()
+            when (result) {
+                is AppVersionDO -> {
+                    //版本信息
+                    providerView().complete("")
+                    providerView().handleAppVersion(result as AppVersionDO)
+                }
+            }
+        }
+
+        override fun onErrorWithConnection(error: ExceptionHandle.ResponeThrowable, connectionQuality: ConnectionQuality) {
+            providerView().onError(error.customMessage)
+        }
+
+        override fun attachSubscribe(var1: Disposable) {
+            addDisposable(var1)
+        }
+
+        override fun onNoneNet() {
+            getEventCenter().post(NetStateEvent(NetState.NONE))
+        }
+    }
+
+    override fun getAppVersion(partId: Int, deviceType: Int) {
+        watchManageDeviceApi.getAppVersion(partId, deviceType)
+                .map {
+                    val gson = GsonBuilder().setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES).create()
+                    val appVersion = gson.fromJson(it.getJsonString(), AppVersionDO::class.java)
+
+                    return@map appVersion
+                }
+                .compose(ThreadFromUtils.defaultSchedulers())
+                .subscribe(observer)
+    }
 }

+ 2 - 2
middleware/src/main/code/com/wdkl/ncs/android/middleware/logic/presenter/home/WatchCallRecordsFragmentPresenter.kt

@@ -51,7 +51,7 @@ class WatchCallRecordsFragmentPresenter @Inject constructor() :RxPresenter<Watch
         override fun onNextWithConnection(result: Any, connectionQuality: ConnectionQuality) {
             providerView().complete()
 //            Log.e("WatchCallRecordsFragmentPresenter","result "+result)
-            providerView().renderFloor(result as ArrayList<InteractionVO>)
+            providerView().renderList(result as ArrayList<InteractionVO>)
 //            providerView().showInitiatorData(result as ArrayList<InteractionVO>)
         }
 
@@ -82,7 +82,7 @@ class WatchCallRecordsFragmentPresenter @Inject constructor() :RxPresenter<Watch
      * @Note   加载七巧板数据
      */
     @SuppressLint("LongLogTag")
-    override fun loadFloor(ACTION:String,page_no:Int,page_size:Int,device_id:Int,customer_id: Int,choice:Int) {
+    override fun loadPage(ACTION:String, page_no:Int, page_size:Int, device_id:Int, customer_id: Int, choice:Int) {
         //page_no页码  page_size每页显示的数量  device_id设备ID
         Log.e("WatchCallRecordsFragmentPresenter","qqqqqqq")
         //获取全部通话记录数据

+ 0 - 22
middleware/src/main/code/com/wdkl/ncs/android/middleware/logic/presenter/home/WatchHomeActivityPresenter.kt

@@ -60,11 +60,6 @@ class WatchHomeActivityPresenter @Inject constructor(): RxPresenter<WatchHomeAct
                     providerView().complete("")
                     providerView().setTcpServerHost(result)
                 }
-                 is AppVersionDO -> {
-                     //版本信息
-                     providerView().complete("")
-                     providerView().render(result as AppVersionDO)
-                 }
                 is PartSettingDO -> {
                     //设备设置数据
                     providerView().complete("")
@@ -118,23 +113,6 @@ class WatchHomeActivityPresenter @Inject constructor(): RxPresenter<WatchHomeAct
                 .subscribe(observer)
     }
 
-
-    override fun getAppVersion(partId: Int, deviceType: Int) {
-
-        watchManageDeviceApi.getAppVersion(partId, deviceType)
-                .map {
-                    val gson = GsonBuilder().setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES).create()
-                    val appVersion = gson.fromJson(it.getJsonString(), AppVersionDO::class.java)
-
-                    return@map appVersion
-                }
-                .compose(ThreadFromUtils.defaultSchedulers())
-                .subscribe(observer)
-
-
-
-    }
-
     override fun getDeviceSettingData(partId: String) {
         registerDeviceApi.getDeviceSettingData(partId).map {
             var partSettingDO = PartSettingDO()

+ 4 - 7
middleware/src/main/code/com/wdkl/ncs/android/middleware/tcp/TcpClientHandler.java

@@ -34,9 +34,9 @@ public class TcpClientHandler extends SimpleChannelInboundHandler<String> {
     private static Integer totalRetryTimes = 0;
     //是否连接成功
     private static Boolean connected = false;
-     //连接断开变量
-    public static Boolean connecteds = false;
-
+    public static Boolean getConnected(){
+        return connected;
+    }
 
     //连接成功执行的方法
     @Override
@@ -45,7 +45,6 @@ public class TcpClientHandler extends SimpleChannelInboundHandler<String> {
         Log.i(TAG,"tcp连接成功");
         this.ctx = ctx;
         connected = true;
-        connecteds = true;
         retryTimes = 0;
 //        TcpModel tcpModel = DeviceUtil.deviceConnect(Constants.Companion.getImei());
 //        TcpClient.getInstance().sendMsg(tcpModel.toJson());
@@ -62,9 +61,8 @@ public class TcpClientHandler extends SimpleChannelInboundHandler<String> {
     public void channelInactive(ChannelHandlerContext ctx) throws Exception {
         super.channelInactive(ctx);
         connected = false;
-        connecteds = false;
-
         Log.i(TAG, "TcpClientHandler 失去连接");
+
         reConnect(ctx);
     }
 
@@ -105,7 +103,6 @@ public class TcpClientHandler extends SimpleChannelInboundHandler<String> {
         cause.printStackTrace();
         ctx.close();
         connected = false;
-        connecteds = false;
         System.out.println("TcpClientHandler 失去连接,错误引起");
     }
 

+ 18 - 18
middleware/src/main/code/com/wdkl/ncs/android/middleware/tcp/channel/DeviceChannel.java

@@ -1,9 +1,5 @@
 package com.wdkl.ncs.android.middleware.tcp.channel;
 
-import android.annotation.SuppressLint;
-import android.annotation.TargetApi;
-import android.content.Context;
-import android.os.PowerManager;
 import android.util.Log;
 
 import com.google.gson.Gson;
@@ -28,17 +24,19 @@ public class DeviceChannel {
 
     public static TcpModel handleTcpReceived(TcpModel tcpModel){
         TcpModel responseTcpModel = null;
-
-        Log.e(TAG,"收到tcp消息 DeviceChannel "+tcpModel.getType());
         Log.e(TAG,"收到tcp消息 DeviceChannel "+tcpModel.toJson());
 
         if (tcpModel.getType()== TcpType.VOICE && tcpModel.getAction()==TcpAction.VoiceAction.SUCCESS){
             EventBus.getDefault().post(new MessageEvent(tcpModel, 1));
-        } else if(tcpModel.getType()== TcpType.VOICE && tcpModel.getAction() == TcpAction.VoiceAction.CALL &&calling){
-            InteractionVO interactionVO = new Gson().fromJson(tcpModel.getData().toString(), InteractionVO.class);
-            responseTcpModel = VoiceUtil.voiceCalling(Integer.parseInt(Constants.Companion.getIds()), tcpModel.getFromId(),interactionVO.getId());
-            //todo 给服务器发送正在通话中 tcp
-            return responseTcpModel;
+        } else if(tcpModel.getType()== TcpType.VOICE && tcpModel.getAction() == TcpAction.VoiceAction.CALL){
+            if (calling) {
+                InteractionVO interactionVO = new Gson().fromJson(tcpModel.getData().toString(), InteractionVO.class);
+                responseTcpModel = VoiceUtil.voiceCalling(Integer.parseInt(Constants.Companion.getIds()), tcpModel.getFromId(), interactionVO.getId());
+                //给服务器发送正在通话中 tcp
+                return responseTcpModel;
+            } else { //得到通话
+                EventBus.getDefault().post(new MessageEvent(tcpModel, 1));
+            }
         }else if ((tcpModel.getType()== TcpType.VOICE && tcpModel.getAction() == TcpAction.VoiceAction.ACCEPT)  //我方呼出,对方接受
             //todo:调用通话中界面;建立数据通话
             || (tcpModel.getType()== TcpType.VOICE && tcpModel.getAction() == TcpAction.VoiceAction.REJECT) //我方呼出,对方拒绝
@@ -72,13 +70,15 @@ public class DeviceChannel {
             EventBus.getDefault().post(new MessageEvent(tcpModel, 4));
         } else if(tcpModel.getType() == TcpType.SOS && tcpModel.getAction() == TcpAction.SOSAction.CALL||
                 tcpModel.getType() == TcpType.SOS && tcpModel.getAction() == TcpAction.SOSAction.CANCEL){
-               //todo 紧急呼叫
-            EventBus.getDefault().post(new MessageEvent(tcpModel, 0));
-        }else if(tcpModel.getType() == TcpType.DEVICE &&tcpModel.getAction() == TcpAction.DeviceAction.RESTART||
-                tcpModel.getType() == TcpType.DEVICE && tcpModel.getAction() == TcpAction.DeviceAction.DEVICE_REFRESH||
-                tcpModel.getType() == TcpType.DEVICE && tcpModel.getAction() == TcpAction.DeviceAction.APP_UPDATE){
-            EventBus.getDefault().post(new MessageEvent(tcpModel, Constants.Companion.getEVENT_TCP_APP_UPDATE()));
-        }else {
+               //紧急呼叫
+            EventBus.getDefault().post(new MessageEvent(tcpModel, 999));
+        } else if(tcpModel.getType() == TcpType.DEVICE &&tcpModel.getAction() == TcpAction.DeviceAction.RESTART){
+            EventBus.getDefault().post(new MessageEvent(tcpModel, Constants.EVENT_DEVICE_CHANGE));
+        } else if (tcpModel.getType() == TcpType.DEVICE && tcpModel.getAction() == TcpAction.DeviceAction.DEVICE_REFRESH){
+            //todo: 未处理
+        } else if (tcpModel.getType() == TcpType.DEVICE && tcpModel.getAction() == TcpAction.DeviceAction.APP_UPDATE) {
+            EventBus.getDefault().post(new MessageEvent(tcpModel, Constants.EVENT_APP_UPDATE));
+        } else {
             EventBus.getDefault().post(new MessageEvent(tcpModel, 0));
         }
 

+ 74 - 0
readme.md

@@ -0,0 +1,74 @@
+#更新日志
+格式化请点击参考 [学习链接](https://keepachangelog.com/en/1.0.0/)
+版本号规范请参考 [学习链接](https://semver.org/spec/v2.0.0.html)
+## 指导原则
+- 记住日志是写给人的,而非机器。
+- 每个版本都应该有独立的入口。
+- 同类改动应该分组放置。
+- 版本与章节应该相互对应。
+- 新版本在前,旧版本在后。
+- 应包括每个版本的发布日期。
+- 注明是否遵守语义化版本格式.
+## 变动类型
+- Added 新添加的功能。
+- Changed 对现有功能的变更。
+- Deprecated 已经不建议使用,准备很快移除的功能。
+- Removed 已经移除的功能。
+- Fixed 对bug的修复
+- Security 对安全的改进
+## [Unreleased]
+此区块记录即将发布的更新内容。
+
+两大意义:
+
+大家可以知道在未来版本中可能会有哪些变更
+在发布新版本时,可以直接将Unreleased区块中的内容移动至新发 布版本的描述区块就可以了
+
+---
+## [1.0.6] version 6 - 2020-07-03
+### Changed 
+- 检测升级按钮点击后10秒以上可用
+- 服务器发送的升级命令10秒以上可用
+---
+## [1.0.5] version 5 - 2020-07-03
+### Changed 
+- 已经是最新版本时,修改升级界面呈现,1秒后结束当前界面
+---
+## [1.0.4] version 4 - 2020-07-03
+### Changed 
+- 修改设置中升级事件
+- 修改 TcpHandleService 中的 isUpdating 为静态变量
+---
+## [1.0.2] version 3 - 2020-07-03
+### Changed 
+- 优化升级,已经在升级时,不再处理升级事件
+---
+## [1.0.1] version 2 - 2020-07-03
+### Added
+- 等待通话界面常亮
+- 事件语音界面常亮
+- 升级界面常亮
+- SOS界面常亮
+### Changed 
+- 优化AppService,监测TCP断线亮屏
+---
+## [1.0.0] version 1 - 2020-07-03
+### Changed
+- 使用物联卡时,网络状态的判断出错的略过
+- 根据重新配置的coturn服务端,改善P2P NAT穿透的隧道表现
+- 重写APP升级逻辑
+    - 得到服务器 DEVICE-APP_UPDATE 指令,通过DeviceChannel 发送 EventBusEvent 通道为 EVENT_APP_UPDATE,由home模块下TcpHandleService EventBus接收,跳转至AppUpdateActivity负责具体升级逻辑处理。在init方法中向服务器接口请求APP版本数据,当根上build.gradle ext.app_version_code (版本号-数字)小于 数据中的versionNo(整数)时,下载并进入安装
+- 优化TCP命令处理
+    - 仍然统一由 DeviceChannel 分类转发 EventBus事件,分发至不同通道
+    - 主体由由home模块下TcpHandleService EventBus处理
+        - 处理来电
+        - 处理拨出到达目标设备成功
+        - 处理语音留言。有通话时等待,通话结束后亮屏并跳转至界面
+        - 处理事件。有通话时等待,通话结束后亮屏、播报并跳转至界面
+        - 处理SOS。有通话时等待,通话结束后亮屏并跳转界面
+        - 处理设备对等变更(用于充电设备更换)。有通话时等待,通话结束后亮屏并重启APP
+        - 处理APP升级。有通话时等待,通话结束后亮屏并跳转升级界面
+    - 其它TCP命令由具体界面中的 EventBus 具体处理
+- 全局通话使用 DeviceChannel 类中的 calling 字段,需优化,如加锁
+### Removed 
+- 去除了WatchHomeActivity.kt

+ 5 - 3
rtc-chat/src/main/java/com/wdkl/skywebrtc/engine/webrtc/WebRTCEngine.java

@@ -66,8 +66,8 @@ public class WebRTCEngine implements IEngine, Peer.IPeerEvent {
 
     // 服务器实例列表
     private String serverIP = "120.76.246.253";
-    private String turnUser = "wdkl";
-    private String turnUserPwd = "Wdkl2021";
+    private String turnUser = "wdklrtc";
+    private String turnUserPwd = "Wdkl2021Rtc";
 
 
     private static final String VIDEO_TRACK_ID = "ARDAMSv0";
@@ -508,6 +508,8 @@ public class WebRTCEngine implements IEngine, Peer.IPeerEvent {
 
         PeerConnection.IceServer var11 = PeerConnection.IceServer
                 .builder("stun:"+serverIP+":3478?transport=udp")
+                .setUsername(turnUser)
+                .setPassword(turnUserPwd)
                 .setTlsCertPolicy(PeerConnection.TlsCertPolicy.TLS_CERT_POLICY_INSECURE_NO_CHECK)
                 .createIceServer();
         PeerConnection.IceServer var12 = PeerConnection.IceServer
@@ -522,7 +524,7 @@ public class WebRTCEngine implements IEngine, Peer.IPeerEvent {
 //                .setPassword(turnUserPwd)
 //                .setTlsCertPolicy(PeerConnection.TlsCertPolicy.TLS_CERT_POLICY_INSECURE_NO_CHECK)
 //                .createIceServer();
-//        iceServers.add(var11);
+        iceServers.add(var11);
         iceServers.add(var12);
 //        iceServers.add(var13);
     }