liugl
2021-01-14 40f9ac00ec5e4d6363450d1c8e0b0937cc0b1de4
app/src/main/java/com/okgoincar/base/MyApplication.kt
@@ -3,31 +3,33 @@
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.Cache.CacheUtil
import cn.sinata.rxnetty.NettyClient
import cn.sinata.xldutils.BaseApplication
import cn.sinata.xldutils.utils.sysErr
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.getUserId
import com.okgoincar.slab.MySlabBaseActivity
import com.okgoincar.utils.Cache.CacheKey
import com.tencent.bugly.crashreport.CrashReport
import org.jetbrains.anko.toast
import org.json.JSONObject
import java.security.SecureRandom
@@ -68,12 +70,15 @@
//        PlatformConfig.setWeixin("wx65d2c03f04352f90", "7a3a57f9ba78c1f400b75298eec4c7c0")
//        PlatformConfig.setQQZone("101877032", "eab94b262bf9789eec770cde42a6e71e") //qq互联
//        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 +88,26 @@
                    currentTime = System.currentTimeMillis()
                    val json = JSONObject(message)
                    val method = json.optString("method")
//                    Handler(Looper.getMainLooper()).post {
                    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 +122,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 +134,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 +162,7 @@
            .setOnConnectListener {
                sendHeart()
            }
        sendHeart()
    }
    override fun attachBaseContext(base: Context?) {
@@ -230,13 +264,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 +286,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 +308,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 +332,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 {
@@ -339,6 +388,7 @@
    }
    private val activities = ArrayList<Activity?>()
    private var showNum = 0
    override fun onActivityPaused(activity: Activity?) {
    }
@@ -347,6 +397,7 @@
    }
    override fun onActivityStarted(activity: Activity?) {
        showNum++
    }
    override fun onActivityDestroyed(activity: Activity?) {
@@ -357,9 +408,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)
    }
}