From 7804ce8edeba51418b5fde2d306e5f476dfb5993 Mon Sep 17 00:00:00 2001
From: 18034727885 <973609879@qq.com>
Date: 星期三, 18 三月 2026 10:03:22 +0800
Subject: [PATCH] 合并最新代码

---
 app/src/main/java/com/driver/igotrip/base/MyApplication.kt |  299 +++++++++++++++++++++++++++++++++--------------------------
 1 files changed, 165 insertions(+), 134 deletions(-)

diff --git a/app/src/main/java/com/driver/igotrip/base/MyApplication.kt b/app/src/main/java/com/driver/igotrip/base/MyApplication.kt
index 94d16c1..5db1c8f 100644
--- a/app/src/main/java/com/driver/igotrip/base/MyApplication.kt
+++ b/app/src/main/java/com/driver/igotrip/base/MyApplication.kt
@@ -1,6 +1,5 @@
 package com.driver.igotrip.base
 
-import android.R.id.message
 import android.annotation.SuppressLint
 import android.app.Activity
 import android.app.Application
@@ -8,31 +7,29 @@
 import android.content.Intent
 import android.os.*
 import android.util.Log
-import androidx.annotation.RequiresApi
+import androidx.fragment.app.Fragment
+import androidx.fragment.app.FragmentManager
 import cn.jpush.android.api.JPushInterface
 import cn.jpush.android.api.TagAliasCallback
+import cn.sinata.rxnetty.LogHelper.initLogs
+import cn.sinata.rxnetty.LogHelper.logRecord
 import cn.sinata.rxnetty.NettyClient
 import cn.sinata.xldutils.BaseApplication
 import cn.sinata.xldutils.utils.SPUtils
 import cn.sinata.xldutils.utils.sysErr
-import com.driver.igotrip.BuildConfig
 import com.driver.igotrip.R
-import com.driver.igotrip.base.BaseEvent.REFREASH_ORDERLIST
 import com.driver.igotrip.bean.OrderBean
 import com.driver.igotrip.bean.OrderResData
 import com.driver.igotrip.bean.OrderSimpleData
 import com.driver.igotrip.bean.websocket.HeartBean
 import com.driver.igotrip.netUtls.*
-import com.driver.igotrip.netUtls.Api.getDriverOrderMessage
 import com.driver.igotrip.ui.main.TripActivity
 import com.driver.igotrip.ui.main.small_cargo.SmallCargoActivity
 import com.driver.igotrip.ui.pub.LoginActivity
 import com.driver.igotrip.utils.AudioRecoderUtils
 import com.driver.igotrip.utils.Cache.CacheKey
 import com.driver.igotrip.utils.Cache.CacheUtil
-import com.driver.igotrip.utils.DES
 import com.driver.igotrip.utils.LanguageManager
-import com.driver.igotrip.utils.LanguageUtil
 import com.driver.igotrip.utils.LogUtils
 import com.google.android.gms.maps.model.LatLng
 import com.google.cloud.texttospeech.v1.*
@@ -41,11 +38,7 @@
 import com.tencent.bugly.crashreport.CrashReport
 import com.umeng.commonsdk.UMConfigure
 import com.umeng.socialize.PlatformConfig
-import com.umeng.socialize.utils.DeviceConfigInternal.context
 import com.xuexiang.xui.XUI
-import kotlinx.coroutines.MainScope
-import kotlinx.coroutines.delay
-import kotlinx.coroutines.launch
 import org.greenrobot.eventbus.EventBus
 import org.jetbrains.anko.startActivity
 import org.jetbrains.anko.toast
@@ -74,7 +67,6 @@
         return "MyApplication"
     }
 
-    @RequiresApi(api = Build.VERSION_CODES.DONUT)
     override fun onCreate() {
         super.onCreate()
         appContext = this
@@ -94,6 +86,7 @@
         PlatformConfig.setQQZone("1111276329", "JuAotVjQcUiesxgp") //qq互联
         CrashReport.initCrashReport(this, "163c95c374", true);
         LogUtils.OpenLog(true)
+        initLogs()
         initSocket()
         JPushInterface.setDebugMode(true)
         JPushInterface.init(this)
@@ -103,7 +96,7 @@
 
     override fun attachBaseContext(base: Context?) {
         var language = SPUtils.getString("language")
-       // super.attachBaseContext(LanguageUtil.changeAppLanguage(base, language, ""))
+        // super.attachBaseContext(LanguageUtil.changeAppLanguage(base, language, ""))
 
         super.attachBaseContext(LanguageManager.wrapContext(base))
     }
@@ -212,53 +205,48 @@
         }
 
     private fun initSocket() {
-        Log.e("sendLocation: ","开始链接" )
+        Log.e("sendLocation: ", "开始链接")
         NettyClient.getInstance().init(this, Api.SOCKET_SERVER, Api.SOCKET_PORT, true)
-        NettyClient.getInstance()
-            .addOnMessageListener { message: String ->
-                initnetdata(message)
-            }
-        NettyClient.getInstance()
-            .setOnConnectListener {
-                sendHeart()
-            }
-     if(frist){
-        /* MainScope().launch {
-             while (true){
-                 delay(5000)
-                 var map = getMapByAny()
-                 if (getDriverOrderMessage.startsWith("api")) {
-                     map["appid"] = getAppId()
-                     var sign = DES.getSign(map)
-                     map["sign"] = sign
-                 }
-                 HttpManager.getInstance().post(getDriverOrderMessage, map, object : MyNoMsgObserver(this@MyApplication) {
-                     override fun success(responseString: String?) {
-                         Log.e("长连接接口消息: ",responseString.toString() )
-                         initnetdata(responseString.toString())
+        NettyClient.getInstance().addOnMessageListener { message: String ->
+            initnetdata(message)
+        }
+        NettyClient.getInstance().setOnConnectListener {
+            sendHeart()
+        }
+        if (frist) {
+            /* MainScope().launch {
+                 while (true){
+                     delay(5000)
+                     var map = getMapByAny()
+                     if (getDriverOrderMessage.startsWith("api")) {
+                         map["appid"] = getAppId()
+                         var sign = DES.getSign(map)
+                         map["sign"] = sign
                      }
-                 })
-             }
-         }*/
-         frist=false
-     }
+                     HttpManager.getInstance().post(getDriverOrderMessage, map, object : MyNoMsgObserver(this@MyApplication) {
+                         override fun success(responseString: String?) {
+                             Log.e("长连接接口消息: ",responseString.toString() )
+                             initnetdata(responseString.toString())
+                         }
+                     })
+                 }
+             }*/
+            frist = false
+        }
 
     }
 
 
-    fun initnetdata(message:String,isnet: Boolean?=false){
+    fun initnetdata(message: String, isnet: Boolean? = false) {
         try {
-            Log.e("socket_message_by", message)
-            Log.d("zmc-stock", message)
-//                    sysErr("收到websocket消息")
-            if (!isLogin&&isnet==false) {
+            if (!isLogin && isnet == false) {
                 return
             }
             currentTime = System.currentTimeMillis()
             val json = JSONObject(message)
             val method = json.optString("method")
-            Handler(Looper.getMainLooper()).post {
-                //                        ToastUtils.showShortToast(this, "收到websocket=$method")
+            if (method != "OK") {
+                Log.d("zmc-socket", message)
             }
             val data = json.optString("data")
             val code = json.optInt("code", -1)
@@ -279,7 +267,7 @@
                         CacheKey.putKeyStr("isAgreen", "1")
                         NettyClient.getInstance().stopService()
                         isLogin = false
-                        var intent = Intent()
+                        val intent = Intent()
                         intent.setClass(this, LoginActivity::class.java)
                         intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
                         startActivity(intent)
@@ -294,7 +282,10 @@
                             )
                         EventBus.getDefault().post(BaseEvent(BaseEvent.FORCED_OFFLINE))
                         val act = activities[activities.size - 1]
-                        (act as PublicServiceActivity).forceOffline(simpleData.audioUrl, simpleData.msg)
+                        (act as PublicServiceActivity).forceOffline(
+                            simpleData.audioUrl,
+                            simpleData.msg
+                        )
                         if (act is PublicServiceDialogActivity) act.finish()
                     }
 
@@ -354,9 +345,14 @@
                                     )
                                     if (act is PublicServiceDialogActivity) act.finish()
                                 }
-                                4,5->{
-                                    act?.startActivity<SmallCargoActivity>("orderId" to orderSimpleData.orderId.toString(), "orderType" to orderSimpleData.orderType.toString())
+
+                                4, 5 -> {
+                                    act?.startActivity<SmallCargoActivity>(
+                                        "orderId" to orderSimpleData.orderId.toString(),
+                                        "orderType" to orderSimpleData.orderType.toString()
+                                    )
                                 }
+
                                 3 -> {
 
                                 }
@@ -397,32 +393,43 @@
                     }
 
                     Const.SOCKET_METHOD.REASSIGN -> {
+                        Log.e(
+                            "zmc-socket",
+                            "EventBus.getDefault().post(BaseEvent(BaseEvent.REFREASH_MAIN))"
+                        )
                         EventBus.getDefault().post(BaseEvent(BaseEvent.REFREASH_MAIN))
 
-                        val orderSimpleData =
-                            Gson().fromJson(
-                                data,
-                                OrderResData::class.java
-                            )
-                        val act = activities[activities.size - 1]
-                        when (orderSimpleData.orderType) {
-//                                    1, 2, 4 -> {
-//                                        (act as PublicServiceActivity).showOrder(
-//                                            orderSimpleData.audioUrl,
-//                                            orderSimpleData.orderId.toString(),
-//                                            orderSimpleData.orderType.toString(),
-//                                            30,
-//                                            2
-//                                        )
-//                                        if (act is PublicServiceDialogActivity) act.finish()
-//                                    }
-                            4,5->{
-                                act?.startActivity<SmallCargoActivity>("orderId" to orderSimpleData.orderId.toString(), "orderType" to orderSimpleData.orderType.toString())
-                            }
-                            else->{
-                                act?.startActivity<TripActivity>("orderId" to orderSimpleData.orderId.toString(), "orderType" to orderSimpleData.orderType.toString())
-                            }
-                        }
+//                        val orderSimpleData =
+//                            Gson().fromJson(
+//                                data,
+//                                OrderResData::class.java
+//                            )
+//                        val act = activities[activities.size - 1]
+//                        when (orderSimpleData.orderType) {
+////                                    1, 2, 4 -> {
+////                                        (act as PublicServiceActivity).showOrder(
+////                                            orderSimpleData.audioUrl,
+////                                            orderSimpleData.orderId.toString(),
+////                                            orderSimpleData.orderType.toString(),
+////                                            30,
+////                                            2
+////                                        )
+////                                        if (act is PublicServiceDialogActivity) act.finish()
+////                                    }
+//                            4, 5 -> {
+//                                act?.startActivity<SmallCargoActivity>(
+//                                    "orderId" to orderSimpleData.orderId.toString(),
+//                                    "orderType" to orderSimpleData.orderType.toString()
+//                                )
+//                            }
+//
+//                            else -> {
+//                                act?.startActivity<TripActivity>(
+//                                    "orderId" to orderSimpleData.orderId.toString(),
+//                                    "orderType" to orderSimpleData.orderType.toString()
+//                                )
+//                            }
+//                        }
 
                     }
 
@@ -509,62 +516,76 @@
         }
     }
 
+    private fun getOrderWhenNoSocket(){
+        Log.e("sendLocation: ", "定时获取司机订单数据" + (getUserId() != -1).toString())
+        if (getUserId() != -1) {
+            val map = getMapByAny()
+            callNet1(this, Api.getDriverOrderMessage, map, clickAction = {
+                logRecord(TAG, "getOrderWhenNoSocket 获取订单成功 $it")
+                initnetdata(it ?: "")
+            }, {
+                logRecord(TAG, "getOrderWhenNoSocket 获取订单失败")
+            }, false)
+        }
+    }
 
     private fun sendLocation() {
-        Log.e("sendLocation: ","发送定位"+(getUserId() != -1).toString() )
-        Log.e("sendLocation: ","发送定位"+(aMapLocation != null).toString() )
+        Log.e("sendLocation: ", "发送定位 userId = ${getUserId()}, aMapLocation = ${Gson().toJson(aMapLocation)}")
         if (getUserId() != -1 && aMapLocation != null) {
-//            val bean = CarLocationBean()
-//            val dataBean = CarLocationBean.DataBean(
-//                getUserId(),
-//                currentOrderId,
-//                currentOrderType,
-//                aMapLocation!!.longitude,
-//                aMapLocation!!.latitude,
-//                0.0,
-//                0.0
-//            )
-//            bean.data = dataBean
-//            NettyClient.getInstance()
-//                .sendMessage(Gson().toJson(bean))
-//            sysErr(dataBean.toString())
-
-
             val map = getMapByAny()
             map["orderId"] = currentOrderId
             map["orderType"] = currentOrderType
             map["driverId"] = getUserId()
             map["lon"] = aMapLocation!!.longitude
             map["lat"] = aMapLocation!!.latitude
-            Log.e("sendLocation: ","发送定位参数"+Gson().toJson(map) )
-            callNet1(this, Api.saveOrderPosition, map,clickAction={
-            },{
-                Log.e("sendLocation: ","发送定位成功" )
-            },false)
+            logRecord(TAG, "sendLocation 发送定位参数" + Gson().toJson(map))
+            callNet1(this, Api.saveOrderPosition, map, clickAction = {
+                logRecord(TAG, "sendLocation 发送定位成功")
+            }, {
+                logRecord(TAG, "sendLocation 发送定位失败")
+            }, false)
+
+            val map1 = getMapByAny()
+            map1["orderId"] = currentOrderId
+            map1["orderType"] = currentOrderType
+            map1["driverId"] = getUserId()
+            map1["lon"] = aMapLocation!!.longitude
+            map1["lat"] = aMapLocation!!.latitude
+            map1["altitude"] = 0
+            map1["directionAngle"] = 0
+
+            callNet1(this, Api.positionSocket, map1, clickAction = {
+                logRecord(TAG, "positionSocket 发送定位成功")
+            }, {
+                logRecord(TAG, "positionSocket 发送定位失败")
+            }, false)
         }
     }
 
+    val TAG = "MyApplication"
     private fun sendHeart() {
-        Log.e("sendLocation: ","sendHeart" )
         if (getUserId() != -1) {
-            Log.i(TAG, "sendHeart: userId === " + getUserId())
+            logRecord(TAG, "sendHeart: userId = " + getUserId())
             val bean = HeartBean()
             bean.data = HeartBean.DataBean()
-            NettyClient.getInstance()
-                .sendMessage(Gson().toJson(bean))
+            NettyClient.getInstance().sendMessage(Gson().toJson(bean))
             sendLocation()
             if (heartHandler == null) {
                 heartHandler = Handler(mainLooper)
             }
             heartHandler!!.removeCallbacksAndMessages(null)
             testHeartNunm++
-            if ((System.currentTimeMillis() - currentTime) / 1000 > 30) {
-                sysErr("sendHeart_websocket 重新连接")
-                currentTime = System.currentTimeMillis()
-                NettyClient.getInstance().checkNettyState()
-            } else {
-                sysErr("sendHeart_websocket 发送心跳")
+//            if ((System.currentTimeMillis() - currentTime) / 1000 > 3) {
+            // sysErr("sendHeart_websocket 重新连接")
+            logRecord(TAG, "sendHeart check socket status")
+            currentTime = System.currentTimeMillis()
+            val nettyState = NettyClient.getInstance().checkNettyState()
+            if (!nettyState) {
+                getOrderWhenNoSocket()
             }
+//            } else {
+//                sysErr("sendHeart_websocket 发送心跳")
+//            }
         }
         heartHandler!!.postDelayed({ sendHeart() }, 5000)
     }
@@ -575,7 +596,7 @@
 
 
     companion object {
-        var frist=true
+        var frist = true
         private const val TAG = "MyApplication"
         public var appContext: MyApplication? = null
         var mTtsManager: AudioRecoderUtils? = null
@@ -687,7 +708,7 @@
         }
     }
 
-     val activities = ArrayList<Activity?>()
+    val activities = ArrayList<Activity?>()
     private var showNum = 0
 
     fun finishAll() {
@@ -705,36 +726,45 @@
         return act
     }
 
-    override fun onActivityPaused(activity: Activity) {
-        if (BuildConfig.DEBUG)
-            Log.e("zmc-App", "onActivityPaused: " + activity?.javaClass?.name)
-    }
 
-    override fun onActivityResumed(activity: Activity) {
-        if (BuildConfig.DEBUG)
-            Log.i("zmc-App", "onActivityResumed: " + activity?.javaClass?.name)
+    override fun onActivityCreated(activity: Activity, savedInstanceState: Bundle?) {
+        activities.add(activity)
+        Log.i("zmc-pageA", "onActivityCreated: " + activity.javaClass.name)
+        if (activity is MyBaseActivity) {
+            activity.supportFragmentManager.registerFragmentLifecycleCallbacks(object :
+                FragmentManager.FragmentLifecycleCallbacks() {
+                override fun onFragmentCreated(
+                    fm: FragmentManager,
+                    f: Fragment,
+                    savedInstanceState: Bundle?
+                ) {
+                    super.onFragmentCreated(fm, f, savedInstanceState)
+                    Log.i("zmc-pageF", "onFragmentCreated: " + f.javaClass.name)
+                }
+
+                override fun onFragmentDestroyed(fm: FragmentManager, f: Fragment) {
+                    super.onFragmentDestroyed(fm, f)
+                    Log.e("zmc-pageF", "onFragmentDestroyed: " + f.javaClass.name)
+                }
+            }, true)
+        }
     }
 
     override fun onActivityStarted(activity: Activity) {
         showNum++
-        if (BuildConfig.DEBUG)
-            Log.d("zmc-App", "onActivityStarted: " + activity?.javaClass?.name)
+        Log.d("zmc-pageA", "onActivityStarted: " + activity.javaClass.name)
     }
 
-    override fun onActivityDestroyed(activity: Activity) {
-        if (BuildConfig.DEBUG)
-            Log.d("zmc-App", "onActivityDestroyed: " + activity?.javaClass?.name)
-        activities.remove(activity)
+    override fun onActivityResumed(activity: Activity) {
+//        Log.i("zmc-pageA", "onActivityResumed: " + activity.javaClass.name)
     }
 
-    override fun onActivitySaveInstanceState(activity: Activity, outState: Bundle) {
-        if (BuildConfig.DEBUG)
-            Log.d("zmc-App", "onActivitySaveInstanceState: " + activity?.javaClass?.name)
+    override fun onActivityPaused(activity: Activity) {
+//        Log.e("zmc-pageA", "onActivityPaused: " + activity.javaClass.name)
     }
 
     override fun onActivityStopped(activity: Activity) {
-        if (BuildConfig.DEBUG)
-            Log.e("zmc-App", "onActivityStopped: " + activity?.javaClass?.name)
+        Log.e("zmc-pageA", "onActivityStopped: " + activity.javaClass.name)
         showNum--
         Handler(Looper.getMainLooper()).postDelayed({
             if (showNum == 0 && isPlayVoice) {
@@ -745,14 +775,15 @@
             }
             isPlayVoice = true
         }, 600)
-
     }
 
-    override fun onActivityCreated(activity: Activity, savedInstanceState: Bundle?) {
-        activities.add(activity)
-        if (BuildConfig.DEBUG)
-            Log.i("zmc-App", "onActivityCreated: " + activity?.javaClass?.name)
+    override fun onActivityDestroyed(activity: Activity) {
+        Log.d("zmc-pageA", "onActivityDestroyed: " + activity.javaClass.name)
+        activities.remove(activity)
     }
 
+    override fun onActivitySaveInstanceState(activity: Activity, outState: Bundle) {
+//        Log.d("zmc-pageA", "onActivitySaveInstanceState: " + activity.javaClass.name)
+    }
 
 }
\ No newline at end of file

--
Gitblit v1.7.1