[2.13.0] taxi/bus司机端 定位权限,长链接异常,网络异常定时提示

This commit is contained in:
wangmingjun
2022-12-02 18:13:36 +08:00
parent 10111ccb13
commit ba175c7290
3 changed files with 104 additions and 0 deletions

View File

@@ -59,6 +59,7 @@ import com.mogo.och.common.module.biz.constant.OchCommonConst;
import com.mogo.och.common.module.biz.network.OchCommonServiceCallback;
import com.mogo.och.common.module.biz.provider.LoginService;
import com.mogo.och.common.module.callback.OchAdasStartFailureCallback;
import com.mogo.och.common.module.manager.AbnormalFactorsLoopManager;
import com.mogo.och.common.module.manager.OCHAdasAbilityManager;
import com.mogo.och.common.module.utils.CoordinateCalculateRouteUtil;
import com.mogo.och.common.module.utils.DateTimeUtil;
@@ -166,6 +167,8 @@ public class BusOrderModel {
OCHSocketMessageManager.INSTANCE.getMsgWriteOffPassengerType(),
mWriteOffPassengeOnMessageListener);
AbnormalFactorsLoopManager.INSTANCE.startLoopAbnormalFactors(mContext);
//2022.1.28
// 调用Disposable.dispose() 时候会出现InterruptedException 导致出现崩溃
// The exception could not be delivered to the consumer because it has already canceled/disposed
@@ -343,6 +346,8 @@ public class BusOrderModel {
OCHSocketMessageManager.INSTANCE.getMsgMonitorType());
OCHSocketMessageManager.INSTANCE.releaseSocketMessageListener(
OCHSocketMessageManager.INSTANCE.getMsgWriteOffPassengerType());
AbnormalFactorsLoopManager.INSTANCE.stopLoopAbnormalFactors();
}
private Object readResolve() {

View File

@@ -0,0 +1,93 @@
package com.mogo.och.common.module.manager
import android.Manifest
import android.content.Context
import com.mogo.commons.module.status.IMogoStatusChangedListener
import com.mogo.commons.module.status.MogoStatusManager
import com.mogo.commons.module.status.StatusDescriptor
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.i
import com.mogo.eagle.core.utilcode.util.NetworkUtils
import com.mogo.eagle.core.utilcode.util.ToastUtils
import com.mogo.och.common.module.utils.PermissionUtil
import io.reactivex.Observable
import io.reactivex.android.schedulers.AndroidSchedulers
import io.reactivex.disposables.Disposable
import io.reactivex.schedulers.Schedulers
import java.util.concurrent.TimeUnit
/**
* @author: wangmingjun
* @date: 2022/12/2
*/
object AbnormalFactorsLoopManager : IMogoStatusChangedListener {
const val TAG = "AbnormalFactorsLoopManager"
private const val LOOP_TIME = 10 *1000L
private const val LOOP_DELAY = 5 * 1000L
private var socketStatus: Boolean = false
private var looperDisposable : Disposable? = null
fun startLoopAbnormalFactors(context: Context){
if (looperDisposable != null && !looperDisposable!!.isDisposed){
return
}
i(TAG, "startLoopAbnormalFactors()")
looperDisposable = Observable.interval(LOOP_DELAY, LOOP_TIME, TimeUnit.MILLISECONDS)
.map { aLong -> aLong+1 }
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe{ aLong -> checkAbnormalFactors(context)}
//长链接监听
MogoStatusManager.getInstance().registerStatusChangedListener(TAG,
StatusDescriptor.CLOUD_SOCKET,this)
}
private fun checkAbnormalFactors(context: Context) {
var locationStatusPermsStatus = false
var networkStatus = false
//定位权限
locationStatusPermsStatus = !(!PermissionUtil.isLocServiceEnable(context) || !PermissionUtil.checkPermission(
context, *arrayOf(
Manifest.permission.ACCESS_FINE_LOCATION
)
))
//网络状态或者网络权限是否打开
if (NetworkUtils.isConnected(context)){
networkStatus = true
}
//长链接状态 socketStatus
var toastStr = ""
if (!locationStatusPermsStatus) toastStr += "定位服务异常 "
if (!networkStatus) toastStr += " 网络异常 "
if (!socketStatus) toastStr += " 长链接异常 "
i(TAG, "abnormal_factors_Str = $toastStr")
if (toastStr !== ""){
ToastUtils.showLong(toastStr + "请开启相应权限或者查看网络")
}
}
fun stopLoopAbnormalFactors(){
looperDisposable!!.dispose()
looperDisposable == null
MogoStatusManager.getInstance().unregisterStatusChangedListener(TAG,
StatusDescriptor.CLOUD_SOCKET,this)
}
override fun onStatusChanged(descriptor: StatusDescriptor?, isTrue: Boolean) {
//长链接监听、
if (StatusDescriptor.CLOUD_SOCKET == descriptor && isTrue){
socketStatus = isTrue
}
}
}

View File

@@ -46,6 +46,7 @@ import com.mogo.och.common.module.biz.constant.OchCommonConst;
import com.mogo.och.common.module.biz.network.OchCommonServiceCallback;
import com.mogo.och.common.module.biz.provider.LoginService;
import com.mogo.och.common.module.callback.OchAdasStartFailureCallback;
import com.mogo.och.common.module.manager.AbnormalFactorsLoopManager;
import com.mogo.och.common.module.manager.OCHAdasAbilityManager;
import com.mogo.och.common.module.map.AmapNaviToDestinationModel;
import com.mogo.och.common.module.utils.CoordinateCalculateRouteUtil;
@@ -233,6 +234,9 @@ public class TaxiModel {
OCHSocketMessageManager.INSTANCE.registerSocketMessageListener(
OCHSocketMessageManager.INSTANCE.getMsgMonitorType(),
mMogoOnMessageListener);
AbnormalFactorsLoopManager.INSTANCE.startLoopAbnormalFactors(mContext);
}
private final IMogoOnMessageListener<OCHOperationalMessage> mMogoOnMessageListener =
@@ -265,6 +269,8 @@ public class TaxiModel {
CallerAutoPilotStatusListenerManager.INSTANCE.removeListener(mGoAutopilotStatusListener);
CallerAutopilotPlanningListenerManager.INSTANCE.removeListener(moGoAutopilotPlanningListener);
OCHAdasAbilityManager.getInstance().setAdasStartFailureCallback(null);
AbnormalFactorsLoopManager.INSTANCE.stopLoopAbnormalFactors();
}
public void startOrStopOrderLoop(boolean start) {