Merge branch 'dev_robotaxi-d-app-module_2130_221116_2.13.0' into mutidev_robotaxi-d-app-module_2130_221116_2.13.0_multi_display

# Conflicts:
#	app/src/main/java/com/mogo/launcher/stageone/HttpDnsStartUp.kt
This commit is contained in:
donghongyu
2022-12-02 19:53:12 +08:00
8 changed files with 157 additions and 40 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) {

View File

@@ -385,31 +385,32 @@ public class TaxiBeingServerdOrdersFragment extends BaseTaxiUIFragment
int min = (int)Math.ceil((double)timeInSecond/ 60f);
String strHtml2 = "<font color=\"#CAD6FF\">里程 </font>" + "<b><font color=\"#FFFFFF\">" + dis + "</font></b>" + "<font color=\"#CAD6FF\"> "+disUnit+"</font>"
+ "<font color=\"#CAD6FF\">,剩余 </font>" + "<b><font color=\"#FFFFFF\">" + min + "</font></b>" + "<font color=\"#CAD6FF\"> 分钟</font>";
try {
if (mCurrentOrder != null && mCurrentOrder.orderStatus == TaxiOrderStatusEnum.OnTheWayToStart.getCode()) { //前往上车点
mDistanceAndTime3.setText(Html.fromHtml(strHtml2));
if (mNaviStartIcon.getVisibility() == View.GONE){
mNaviStartIcon.setVisibility(View.VISIBLE);
}
if (mCurrentOrder != null && mCurrentOrder.orderStatus == TaxiOrderStatusEnum.OnTheWayToStart.getCode()) { //前往上车点
} else if (mCurrentOrder != null && mCurrentOrder.orderStatus == TaxiOrderStatusEnum.OnTheWayToEnd.getCode()) { //前往终点 时间单位是分钟
if (mNaviToEndIcon.getVisibility() == View.GONE){
mNaviToEndIcon.setVisibility(View.VISIBLE);
}
mDistanceAndTime3.setText(Html.fromHtml(strHtml2));
if (mNaviStartIcon.getVisibility() == View.GONE){
mNaviStartIcon.setVisibility(View.VISIBLE);
if (mTtsLessThan200Tip < 1 && meters <= 250 && meters > 150){
speekVoice200mTipsOnce();
}
mDistanceAndTime2.setText(Html.fromHtml(strHtml2));
if (isFirstStartAutopilotDone){
VoiceNotice.showNotice(String.format(getResources()
.getString(R.string.module_och_taxi_order_server_start_auto_tip),
dis,disUnit,min));
isFirstStartAutopilotDone = false;
}
}
}catch (NullPointerException e){
} else if (mCurrentOrder != null && mCurrentOrder.orderStatus == TaxiOrderStatusEnum.OnTheWayToEnd.getCode()) { //前往终点 时间单位是分钟
if (mNaviToEndIcon.getVisibility() == View.GONE){
mNaviToEndIcon.setVisibility(View.VISIBLE);
}
if (mTtsLessThan200Tip < 1 && meters <= 250 && meters > 150){
speekVoice200mTipsOnce();
}
mDistanceAndTime2.setText(Html.fromHtml(strHtml2));
if (isFirstStartAutopilotDone){
VoiceNotice.showNotice(String.format(getResources()
.getString(R.string.module_och_taxi_order_server_start_auto_tip),
dis,disUnit,min));
isFirstStartAutopilotDone = false;
}
}
}
private void speekVoice200mTipsOnce() {

View File

@@ -81,7 +81,6 @@ class HttpDnsStartUp : AndroidStartup<Boolean>() {
// if (ProcessUtils.isMainProcess(context)) {
initGDLoc()
initHttpDns()
initCloudClientConfig()
// }
return true
}
@@ -112,8 +111,10 @@ class HttpDnsStartUp : AndroidStartup<Boolean>() {
DebugConfig.getCarMachineType() != DebugConfig.CAR_MACHINE_TYPE_SELF_INNOVATE
// 设置是否输出日志
clientConfig.isShowDebugLog = true
// 使用中台长链接
clientConfig.isUseOriginSocket = true
// 设置是否输出网络日志
clientConfig.isShowNetDebugLog = true //todo test em arrow
clientConfig.isShowNetDebugLog = false
// 设置是否是直播推流的主播
clientConfig.isAnchor = true
when (DebugConfig.getCarMachineType()) {
@@ -205,7 +206,10 @@ class HttpDnsStartUp : AndroidStartup<Boolean>() {
clientConfig.token = token
// 由于存在token过期问题在更新后会回调至此处增加二次判定
if (!gotToken) {
CallerLogger.d(SceneConstant.M_MAIN + TAG, "onTokenGot token : $token , sn :$sn")
CallerLogger.d(
SceneConstant.M_MAIN + TAG,
"onTokenGot token : $token , sn :$sn"
)
CallerCloudListenerManager.invokeCloudTokenGot(token, sn)
// 异步初始化NetConfig
asyncInit()
@@ -315,7 +319,7 @@ class HttpDnsStartUp : AndroidStartup<Boolean>() {
)
override fun onConnectFailure() {
CallerLogger.d(SceneConstant.M_MAIN + TAG, "socket-onConnectFailure")
MogoStatusManager.getInstance().setCloudSocketMode(TAG,false)
MogoStatusManager.getInstance().setCloudSocketMode(TAG, false)
}
@ChainLog(
@@ -328,7 +332,7 @@ class HttpDnsStartUp : AndroidStartup<Boolean>() {
)
override fun onConnectSuccess() {
CallerLogger.d(SceneConstant.M_MAIN + TAG, "socket-onConnectSuccess")
MogoStatusManager.getInstance().setCloudSocketMode(TAG,true)
MogoStatusManager.getInstance().setCloudSocketMode(TAG, true)
}
@ChainLog(
@@ -341,7 +345,7 @@ class HttpDnsStartUp : AndroidStartup<Boolean>() {
)
override fun onConnectLost() {
CallerLogger.d(SceneConstant.M_MAIN + TAG, "socket-onConnectLost")
MogoStatusManager.getInstance().setCloudSocketMode(TAG,false)
MogoStatusManager.getInstance().setCloudSocketMode(TAG, false)
}
@ChainLog(
@@ -366,11 +370,4 @@ class HttpDnsStartUp : AndroidStartup<Boolean>() {
.init(context, DebugConfig.getSocketAppId(), lat, lon)
}
private fun initCloudClientConfig() {
// 使用旧Socket链路 true = 旧链路false = 新链路
if (AppIdentityModeUtils.isTaxi(FunctionBuildConfig.appIdentityMode)||
AppIdentityModeUtils.isBus(FunctionBuildConfig.appIdentityMode)) {
clientConfig.isUseOriginSocket = true
}
}
}

View File

@@ -510,7 +510,7 @@ class MoGoHmiFragment : MvpFragment<MoGoHmiContract.View?, HmiPresenter?>(),
.setGravity(Gravity.LEFT)
.setImmersionStatusBar(true)
.setWindowHeight(LayoutParams.MATCH_PARENT)
.setWindowWidth(AutoSizeUtils.dp2px(context, 960f))
// .setWindowWidth(AutoSizeUtils.dp2px(context, 960f))
.setAnimator(object : DefaultAnimator() {
override fun enterAnim(
view: View,

View File

@@ -78,6 +78,7 @@ import com.mogo.map.MogoMapUIController
import com.mogo.map.uicontroller.VisualAngleMode
import com.mogo.map.uicontroller.VisualAngleMode.*
import com.mogo.eagle.core.function.business.routeoverlay.*
import com.mogo.eagle.core.function.call.telematic.CallerTelematicManager
import com.mogo.eagle.core.function.v2x.vip.VipCarManager
import com.zhidao.easysocket.utils.L
import com.zhidao.support.adas.high.other.permission.BackgrounderPermission
@@ -1651,6 +1652,20 @@ class DebugSettingView @JvmOverloads constructor(
*/
@SuppressLint("SetTextI18n")
private fun drawAppInfo() {
when {
AppIdentityModeUtils.isDriver(FunctionBuildConfig.appIdentityMode) -> {// 司机端
AppConfigInfo.isDriver = true
AppConfigInfo.isConnectedNetty = CallerTelematicManager.getServerStarted()
}
AppIdentityModeUtils.isPassenger(FunctionBuildConfig.appIdentityMode) -> {
AppConfigInfo.isDriver = false
AppConfigInfo.isConnectedNetty = CallerTelematicManager.getClientConnStatus()
AppConfigInfo.serverSn = CallerTelematicManager.getServerToken()
}
else -> {
}
}
/**
* 设备绑定关系
*/

View File

@@ -58,9 +58,9 @@ public class MogoServices implements IMogoIntentListener {
intent.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES);
mContext.sendBroadcast(intent);
if (DebugConfig.isNeedUploadCoordinatesDurationInTime()) {
MoGoAiCloudRealTime.startRealTime(mContext, DebugConfig.getSocketAppId());
}
// if (DebugConfig.isNeedUploadCoordinatesDurationInTime()) {
// MoGoAiCloudRealTime.startRealTime(mContext, DebugConfig.getSocketAppId());
// }
}
private void registerMogoReceiver(Context context) {
@@ -105,9 +105,9 @@ public class MogoServices implements IMogoIntentListener {
public void destroy() {
CallerLogger.INSTANCE.d(M_OLD_OTHER + TAG, "MogoServices do nothings.");
if (DebugConfig.isNeedUploadCoordinatesDurationInTime()) {
MoGoAiCloudRealTime.stopRealTime();
}
// if (DebugConfig.isNeedUploadCoordinatesDurationInTime()) {
// MoGoAiCloudRealTime.stopRealTime();
// }
}
}