| | |
| | | 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 |
| | |
| | | // 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? -> |
| | |
| | | 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 = |
| | |
| | | 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) { |
| | |
| | | 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 { |
| | |
| | | .setOnConnectListener { |
| | | sendHeart() |
| | | } |
| | | sendHeart() |
| | | } |
| | | |
| | | override fun attachBaseContext(base: Context?) { |
| | |
| | | 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() |
| | |
| | | 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 发送心跳") |
| | |
| | | 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 { |
| | |
| | | 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 { |
| | |
| | | } |
| | | |
| | | private val activities = ArrayList<Activity?>() |
| | | private var showNum = 0 |
| | | |
| | | override fun onActivityPaused(activity: Activity?) { |
| | | } |
| | |
| | | } |
| | | |
| | | override fun onActivityStarted(activity: Activity?) { |
| | | showNum++ |
| | | } |
| | | |
| | | override fun onActivityDestroyed(activity: Activity?) { |
| | |
| | | } |
| | | |
| | | 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) |
| | | } |
| | | |
| | | |
| | | } |