浏览代码

升级优化

allen 4 年之前
父节点
当前提交
2ee2918fab

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

@@ -4,6 +4,7 @@ import android.text.TextUtils
 import android.util.Log
 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
@@ -11,17 +12,20 @@ import com.wdkl.ncs.android.component.home.helper.HttpHelper
 import com.wdkl.ncs.android.component.home.launch.HomeLaunch
 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 +40,23 @@ class AppUpdateActivity :BaseActivity<AppUpdatePresenter, ActivityAppUpdateBindi
     }
 
     override fun init() {
-        if (!TextUtils.isEmpty(Constants.APP_PATH)) {
-            downLoadAPK(urlManager.base + ":8006/" + Constants.APP_PATH)
-        } else {
-            showMessage("下载路径异常")
-            finish()
+        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()
+            }
+        }
+    }
+
+    fun checkAppVersion() {
+        if (Constants.part_id != null) {
+            presenter.getAppVersion(Constants.part_id, 7)
         }
     }
 

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

@@ -237,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)
-    }
-
     /**
      * 返回的设备信息
      */

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

@@ -6,6 +6,7 @@ import android.os.IBinder
 import android.util.Log
 import com.google.gson.Gson
 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
@@ -13,6 +14,8 @@ 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.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
@@ -107,7 +110,7 @@ class TcpHandleService : Service(){
                 intent.putExtra("TcpModel", tcpModel)
                 startActivity(intent)
             }
-        } else if (messageEvent.tag == Constants.EVENT_TCP_APP_UPDATE) {
+        } else if (messageEvent.tag == Constants.EVENT_DEVICE_CHANGE) {
             while (DeviceChannel.calling) {    //通话中不处理,一直等待至结束
                 Thread.sleep(3000)
             }
@@ -117,6 +120,18 @@ class TcpHandleService : Service(){
             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) {
+                var intent = Intent()
+                intent.setClass(this, AppUpdateActivity::class.java)
+                startActivity(intent)
+            }
         }
     }
 }

+ 2 - 1
middleware/src/main/code/com/wdkl/ncs/android/middleware/common/Constants.kt

@@ -26,7 +26,8 @@ class Constants {
 
         const val EVENT_TCP_RETRANSMISSION  = 0x16 //tcp掉线
 
-        const 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)
     }
 }

+ 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)
+    }
 }

+ 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()

+ 7 - 9
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;
@@ -76,11 +72,13 @@ public class DeviceChannel {
                 tcpModel.getType() == TcpType.SOS && tcpModel.getAction() == TcpAction.SOSAction.CANCEL){
                //紧急呼叫
             EventBus.getDefault().post(new MessageEvent(tcpModel, 999));
-        }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.EVENT_TCP_APP_UPDATE));
-        }else {
+        } 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));
         }