From bd6a8872438a35d47821c5d5da7fe149e5fed3ab Mon Sep 17 00:00:00 2001
From: lmw <125975490@qq.com>
Date: 星期三, 21 六月 2023 09:53:36 +0800
Subject: [PATCH] 处理收不到广播

---
 app/src/main/java/com/okgoincar/base/MyApplication.kt |  111 +++++++++++++++++++++++++++++++++++++++++++++++--------
 1 files changed, 94 insertions(+), 17 deletions(-)

diff --git a/app/src/main/java/com/okgoincar/base/MyApplication.kt b/app/src/main/java/com/okgoincar/base/MyApplication.kt
index dd2a56c..147ba26 100644
--- a/app/src/main/java/com/okgoincar/base/MyApplication.kt
+++ b/app/src/main/java/com/okgoincar/base/MyApplication.kt
@@ -3,31 +3,37 @@
 import android.app.Activity
 import android.app.Application
 import android.content.Context
-import android.location.Location
-import android.os.Build
 import android.os.Bundle
 import android.os.Handler
 import android.os.Looper
 import android.util.Log
-import androidx.annotation.RequiresApi
 import androidx.multidex.MultiDex
 import cn.sinata.rxnetty.NettyClient
 import cn.sinata.xldutils.BaseApplication
+import cn.sinata.xldutils.utils.TimeUtils
 import cn.sinata.xldutils.utils.sysErr
+import cn.sinata.xldutils.utils.toast
 import com.amap.api.location.AMapLocation
 import com.amap.api.track.AMapTrackClient
 import com.amap.api.track.ErrorCode
-import com.amap.api.track.OnTrackLifecycleListener
 import com.amap.api.track.TrackParam
-import com.amap.api.track.query.model.*
-import com.okgoincar.netUtls.getUserId
-import com.okgoincar.utils.Cache.CacheKey
+import com.amap.api.track.query.model.AddTerminalRequest
+import com.amap.api.track.query.model.QueryTerminalRequest
+import com.amap.api.track.query.model.QueryTerminalResponse
 import com.google.gson.Gson
+import com.okgoincar.base.gpsnav.util.TTSController
 import com.okgoincar.bean.CarLocationBean
+import com.okgoincar.bean.OrderResData
 import com.okgoincar.bean.OrderSimpleData
 import com.okgoincar.bean.websocket.HeartBean
 import com.okgoincar.netUtls.Api
+import com.okgoincar.netUtls.callNet
+import com.okgoincar.netUtls.getMapByAny
+import com.okgoincar.netUtls.getUserId
 import com.okgoincar.slab.MySlabBaseActivity
+import com.okgoincar.utils.Cache.CacheKey
+import com.okgoincar.utils.LogUtils
+import com.tencent.bugly.crashreport.CrashReport
 import org.jetbrains.anko.toast
 import org.json.JSONObject
 import java.security.SecureRandom
@@ -67,13 +73,16 @@
         registerActivityLifecycleCallbacks(this)
 //        PlatformConfig.setWeixin("wx65d2c03f04352f90", "7a3a57f9ba78c1f400b75298eec4c7c0")
 //        PlatformConfig.setQQZone("101877032", "eab94b262bf9789eec770cde42a6e71e") //qq互联
-//        LogUtils.OpenLog(true)
+        LogUtils.OpenLog(true)
+        CrashReport.initCrashReport(applicationContext, "666d35fada", false)
         initUpPoint()
         initSocket()
-
     }
 
     private fun initSocket() {
+        Handler(Looper.getMainLooper()).post {
+//            toast("websocket初始化")
+        }
         NettyClient.getInstance().init(this, Api.SOCKET_SERVER, Api.SOCKET_PORT, true)
         NettyClient.getInstance()
             .addOnMessageListener { message: String? ->
@@ -83,15 +92,29 @@
                     currentTime = System.currentTimeMillis()
                     val json = JSONObject(message)
                     val method = json.optString("method")
-//                    Handler(Looper.getMainLooper()).post {
+                    if (method!= "OK"&&method!= "PONG")
+                        upLog("收到服务端推送,method:${method}")
+
+                    Handler(Looper.getMainLooper()).post {
 //                        toast("收到websocket=$method")
-//                    }
+                    }
                     val data = json.optString("data")
                     val code = json.optInt("code", -1)
                     if (code == 200) {
                         when (method) {
                             Const.SOCKET_METHOD.OK -> {
                                 testReceiveNum++
+                            }
+                            Const.SOCKET_METHOD.OFFLINE -> {
+//                                CacheUtil.get().clear()
+//                                NettyClient.getInstance().stopService()
+//                                var intent = Intent()
+//                                intent.setClass(this, SlabLoginActivity::class.java)
+//                                intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
+//                                startActivity(intent)
+//                                Handler(Looper.getMainLooper()).post {
+//                                    toast("您的账号已在其他平台登录")
+//                                }
                             }
                             Const.SOCKET_METHOD.ORDER_STATUS -> {
                                 val orderSimpleData =
@@ -106,7 +129,9 @@
                                     val act = activities[activities.size - 1]
                                     (act as MySlabBaseActivity).showOrder(
                                         orderSimpleData.orderId.toString(),
-                                        orderSimpleData.orderType.toString()
+                                        orderSimpleData.orderType.toString(),
+                                        orderSimpleData.time,
+                                        1
                                     )
                                 }
                                 if (orderSimpleData.status == 2) {
@@ -116,6 +141,21 @@
                                         orderSimpleData.orderType.toString()
                                     )
                                 }
+                            }
+
+                            Const.SOCKET_METHOD.REASSIGN -> {
+                                val orderSimpleData =
+                                    Gson().fromJson(
+                                        data,
+                                        OrderResData::class.java
+                                    )
+                                val act = activities[activities.size - 1]
+                                (act as MySlabBaseActivity).showOrder(
+                                    orderSimpleData.orderId.toString(),
+                                    orderSimpleData.orderType.toString(),
+                                    30,
+                                    2
+                                )
                             }
                         }
                     } else {
@@ -129,6 +169,7 @@
             .setOnConnectListener {
                 sendHeart()
             }
+        sendHeart()
     }
 
     override fun attachBaseContext(base: Context?) {
@@ -230,13 +271,13 @@
             NettyClient.getInstance()
                 .sendMessage(Gson().toJson(bean))
             Handler(Looper.getMainLooper()).post {
-                toast("发送location --> $dataBean")
+//                toast("发送location --> $dataBean")
             }
             sysErr(dataBean.toString())
         }
     }
 
-    private fun sendHeart() {
+    open fun sendHeart() {
         if (getUserId() != -1) {
             Log.i(TAG, "sendHeart: userId === " + getUserId())
             val bean = HeartBean()
@@ -252,7 +293,13 @@
             if ((System.currentTimeMillis() - currentTime) / 1000 > 30) {
                 sysErr("sendHeart_websocket 重新连接")
                 currentTime = System.currentTimeMillis()
-                NettyClient.getInstance().checkNettyState()
+//                var s = CacheUtil.get().getAsString("reConnect")
+//                s = "$s###初始化重连"
+//                CacheUtil.get().put("reConnect", s)
+//                NettyClient.getInstance().checkNettyState()
+                NettyClient.getInstance().checkNettyStateNull() //reconnect
+
+//                initSocket()
                 heartHandler!!.postDelayed({ sendHeart() }, 5000)
             } else {
                 sysErr("sendHeart_websocket 发送心跳")
@@ -268,12 +315,21 @@
     companion object {
         private const val TAG = "MyApplication"
         public var appContext: MyApplication? = null
+        protected var mTtsManager: TTSController? = null
 
         fun getInstance(): MyApplication? {
             if (appContext == null) {
                 appContext = MyApplication()
             }
             return appContext
+        }
+
+        fun getTTsManager(): TTSController {
+            if (mTtsManager == null) {
+                mTtsManager = TTSController.getInstance(getInstance())
+                mTtsManager?.init()
+            }
+            return mTtsManager!!
         }
 
         fun getLocation(): AMapLocation {
@@ -283,8 +339,8 @@
                     return Gson().fromJson(locationStr, AMapLocation::class.java)
                 } else {
                     val amap = AMapLocation("")
-                    amap.latitude = -1.0
-                    amap.longitude = -1.0
+                    amap.latitude = 0.0
+                    amap.longitude = 0.0
                     return amap
                 }
             } else {
@@ -336,9 +392,20 @@
         fun removeOrderView(view: OrderStatueView?) {
             orderStatueViews.remove(view)
         }
+
+
+        fun upLog(msg:String){
+//            val map = getMapByAny()
+//            map["content"] = "${TimeUtils.getCurrentTime()}:=====》$msg"
+//            if (appContext!=null)
+//                callNet(appContext!!,Api.saveVehicleTerminalLog,map,{}){
+//                    toast("丢失一条日志")
+//                }
+        }
     }
 
     private val activities = ArrayList<Activity?>()
+    private var showNum = 0
 
     override fun onActivityPaused(activity: Activity?) {
     }
@@ -347,6 +414,7 @@
     }
 
     override fun onActivityStarted(activity: Activity?) {
+        showNum++
     }
 
     override fun onActivityDestroyed(activity: Activity?) {
@@ -357,9 +425,18 @@
     }
 
     override fun onActivityStopped(activity: Activity?) {
+        showNum--
+        Handler(Looper.getMainLooper()).postDelayed({
+            if (showNum == 0) {
+                getTTsManager().setVideoText("OK出行司机已置于后台,可能会导致听单异常,里程计费差异,请勿切换。")
+            }
+        }, 600)
+
     }
 
     override fun onActivityCreated(activity: Activity?, savedInstanceState: Bundle?) {
         activities.add(activity)
     }
+
+
 }
\ No newline at end of file

--
Gitblit v1.7.1