[code_opt_3.3.0] fix plugin bug and add trace

This commit is contained in:
zhongchao
2023-06-13 23:25:12 +08:00
parent 1c59412d0e
commit e741d23351
22 changed files with 265 additions and 109 deletions

View File

@@ -443,10 +443,6 @@ public class BusPassengerModel {
public void onAutopilotStatusResponse(@NonNull AutopilotStatusInfo autoPilotStatusInfo) {
}
@Override
public void onAutopilotConnectInfo(boolean connectInfo) {
}
@Override
public void onAutopilotDockerInfo(@NonNull String dockerVersion) {
}

View File

@@ -334,7 +334,4 @@ public class BusPresenter extends Presenter<BusFragment>
public void onAutopilotDockerInfo(@NonNull String dockerVersion) {
}
@Override
public void onAutopilotConnectInfo(boolean connectInfo) {
}
}

View File

@@ -341,7 +341,4 @@ public class BusPresenter extends Presenter<BusFragment>
public void onAutopilotDockerInfo(@NonNull String dockerVersion) {
}
@Override
public void onAutopilotConnectInfo(boolean connectInfo) {
}
}

View File

@@ -498,10 +498,6 @@ public class TaxiPassengerModel implements IOCHTaxiPassengerNaviChangedCallback
private final IMoGoAutopilotStatusListener mGoAutopilotStatusListener = new IMoGoAutopilotStatusListener(){
@Override
public void onAutopilotConnectInfo(boolean connectInfo) {
}
@Override
public void onAutopilotDockerInfo(@NonNull String dockerVersion) {
}

View File

@@ -222,7 +222,7 @@ public class TaxiModel {
MogoStatusManager.getInstance().registerStatusChangedListener(TAG, StatusDescriptor.VR_MODE, mMogoStatusChangedListener);
//定位监听, 传false是高德坐标系
CallerChassisLocationGCJ02ListenerManager.INSTANCE.addListener(TAG,10,mMapLocationLIstener);
CallerChassisLocationGCJ02ListenerManager.INSTANCE.addListener(TAG,10, mMapLocationListener);
//2021.11.1 自动驾驶路线规划接口
CallerPlanningRottingListenerManager.INSTANCE.addListener(TAG, moGoAutopilotPlanningListener);
@@ -1148,10 +1148,6 @@ public class TaxiModel {
private final IMoGoAutopilotStatusListener mGoAutopilotStatusListener = new IMoGoAutopilotStatusListener() {
@Override
public void onAutopilotConnectInfo(boolean connectInfo) {
}
@Override
public void onAutopilotDockerInfo(@NonNull String dockerVersion) {
}

View File

@@ -452,7 +452,4 @@ public class SweeperPresenter extends Presenter<SweeperFragment>
public void onAutopilotDockerInfo(@NonNull String dockerVersion) {
}
@Override
public void onAutopilotConnectInfo(boolean connectInfo) {
}
}

54
app/1
View File

@@ -0,0 +1,54 @@
---------------------------- PROCESS STARTED (10637) for package com.mogo.launcher.f ----------------------------
--------- beginning of system
--------- beginning of main
2023-06-13 19:39:46.747 10637-10637 LogTracing:父节首次创建 addEdge result:true
2023-06-13 19:39:46.747 10637-10637 LogTracing:update chainNode:ChainNode(linkCode=3, linkChainLog=300, parentNodeAliasCode=, nodeAliasCode=CHAIN_CODE_ROMA_CLICK, methodName=log, paramIndexes=[2, 3], recordDataChange=true, endPoint=false, traceId=logc26836f7-f219-4c93-ac16-59b00507670c, spanId=null, thread=main)
2023-06-13 19:39:46.759 10637-10637 LogTracing:子节点:CHAIN_CODE_ROMA_REQUEST , 寻找对应关系 parent :CHAIN_CODE_ROMA_CLICK
2023-06-13 19:39:46.759 10637-10637 LogTracing:找到traceId:logc26836f7-f219-4c93-ac16-59b00507670c , 与父节点建立连接生成spanID:log85cdf360-3b85-47e8-9579-390589f911e6并更新NodeGraph
2023-06-13 19:39:46.761 10637-10637 LogTracing:addEdge new link : logc26836f7-f219-4c93-ac16-59b00507670c , traceName : CHAIN_CODE_ROMA_REQUEST
2023-06-13 19:39:46.761 10637-10637 LogTracing:与父节点建立连接 addEdge result:true
2023-06-13 19:39:46.761 10637-10637 LogTracing:update chainNode:ChainNode(linkCode=3, linkChainLog=300, parentNodeAliasCode=CHAIN_CODE_ROMA_CLICK, nodeAliasCode=CHAIN_CODE_ROMA_REQUEST, methodName=log, paramIndexes=[2, 3], recordDataChange=true, endPoint=false, traceId=logc26836f7-f219-4c93-ac16-59b00507670c, spanId=log85cdf360-3b85-47e8-9579-390589f911e6, thread=main)
2023-06-13 19:39:46.946 10637-10637 LogTracing:子节点:CHAIN_CODE_ROMA_REQUEST_OK , 寻找对应关系 parent :CHAIN_CODE_ROMA_REQUEST
2023-06-13 19:39:46.946 10637-10637 LogTracing:找到traceId:logc26836f7-f219-4c93-ac16-59b00507670c , 与父节点建立连接生成spanID:log38d1125a-212d-4f94-8074-a1462c92958b并更新NodeGraph
2023-06-13 19:39:46.947 10637-10637 LogTracing:addEdge new link : logc26836f7-f219-4c93-ac16-59b00507670c , traceName : CHAIN_CODE_ROMA_REQUEST_OK
2023-06-13 19:39:46.947 10637-10637 LogTracing:与父节点建立连接 addEdge result:true
2023-06-13 19:39:46.947 10637-10637 LogTracing:update chainNode:ChainNode(linkCode=3, linkChainLog=300, parentNodeAliasCode=CHAIN_CODE_ROMA_REQUEST, nodeAliasCode=CHAIN_CODE_ROMA_REQUEST_OK, methodName=log, paramIndexes=[2, 3], recordDataChange=true, endPoint=false, traceId=logc26836f7-f219-4c93-ac16-59b00507670c, spanId=log38d1125a-212d-4f94-8074-a1462c92958b, thread=main)
2023-06-13 19:39:46.947 10637-10637 LogTracing:子节点:CHAIN_CODE_HD_MAP_CALL , 寻找对应关系 parent :CHAIN_CODE_ROMA_REQUEST_OK
2023-06-13 19:39:46.948 10637-10637 LogTracing:找到traceId:logc26836f7-f219-4c93-ac16-59b00507670c , 与父节点建立连接生成spanID:setRomaModea04710e5-095a-4be4-b751-ceff0e50d151并更新NodeGraph
2023-06-13 19:39:46.948 10637-10637 LogTracing:addEdge new link : logc26836f7-f219-4c93-ac16-59b00507670c , traceName : CHAIN_CODE_HD_MAP_CALL
2023-06-13 19:39:46.948 10637-10637 LogTracing:与父节点建立连接 addEdge result:true
2023-06-13 19:39:46.948 10637-10637 LogTracing:update chainNode:ChainNode(linkCode=3, linkChainLog=300, parentNodeAliasCode=CHAIN_CODE_ROMA_REQUEST_OK, nodeAliasCode=CHAIN_CODE_HD_MAP_CALL, methodName=setRomaMode, paramIndexes=[0], recordDataChange=true, endPoint=false, traceId=logc26836f7-f219-4c93-ac16-59b00507670c, spanId=setRomaModea04710e5-095a-4be4-b751-ceff0e50d151, thread=main)
2023-06-13 19:39:47.103 10637-10637 LogTracing:子节点:CHAIN_CODE_ROMA_MAP_START , 寻找对应关系 parent :CHAIN_CODE_ROMA_REQUEST_OK
2023-06-13 19:39:47.103 10637-10637 LogTracing:找到traceId:logc26836f7-f219-4c93-ac16-59b00507670c , 与父节点建立连接生成spanID:log2a87041e-842a-4124-96a8-63bff6226e7d并更新NodeGraph
2023-06-13 19:39:47.104 10637-10637 LogTracing:addEdge new link : logc26836f7-f219-4c93-ac16-59b00507670c , traceName : CHAIN_CODE_ROMA_MAP_START
2023-06-13 19:39:47.104 10637-10637 LogTracing:与父节点建立连接 addEdge result:true
2023-06-13 19:39:47.104 10637-10637 LogTracing:update chainNode:ChainNode(linkCode=3, linkChainLog=300, parentNodeAliasCode=CHAIN_CODE_ROMA_REQUEST_OK, nodeAliasCode=CHAIN_CODE_ROMA_MAP_START, methodName=log, paramIndexes=[2, 3], recordDataChange=true, endPoint=false, traceId=logc26836f7-f219-4c93-ac16-59b00507670c, spanId=log2a87041e-842a-4124-96a8-63bff6226e7d, thread=main)
2023-06-13 19:39:52.110 10637-10637 LogTracing:子节点:CHAIN_CODE_ROMA_CLOUD_ERROR , 寻找对应关系 parent :CHAIN_CODE_ROMA_MAP_START
2023-06-13 19:39:52.110 10637-10637 LogTracing:找到traceId:logc26836f7-f219-4c93-ac16-59b00507670c , 与父节点建立连接生成spanID:log6af6d082-5f94-48b2-8cb5-f370e65132c1并更新NodeGraph
2023-06-13 19:39:52.112 10637-10637 LogTracing:addEdge new link : logc26836f7-f219-4c93-ac16-59b00507670c , traceName : CHAIN_CODE_ROMA_CLOUD_ERROR
2023-06-13 19:39:52.112 10637-10637 LogTracing:与父节点建立连接 addEdge result:true
2023-06-13 19:39:52.113 10637-10637 LogTracing:update chainNode:ChainNode(linkCode=3, linkChainLog=300, parentNodeAliasCode=CHAIN_CODE_ROMA_MAP_START, nodeAliasCode=CHAIN_CODE_ROMA_CLOUD_ERROR, methodName=log, paramIndexes=[2, 3], recordDataChange=true, endPoint=false, traceId=logc26836f7-f219-4c93-ac16-59b00507670c, spanId=log6af6d082-5f94-48b2-8cb5-f370e65132c1, thread=main)
2023-06-13 19:40:29.129 10637-10637 LogTracing:子节点:CHAIN_CODE_ROMA_MAP_START , 寻找对应关系 parent :CHAIN_CODE_ROMA_REQUEST_OK
2023-06-13 19:40:29.129 10637-10637 LogTracing:找到traceId:logc26836f7-f219-4c93-ac16-59b00507670c , 与父节点建立连接生成spanID:log061e57cb-9111-48b9-ba41-3fe71c978e23并更新NodeGraph
2023-06-13 19:40:29.129 10637-10637 LogTracing:addEdge new link : logc26836f7-f219-4c93-ac16-59b00507670c , traceName : CHAIN_CODE_ROMA_MAP_START
2023-06-13 19:40:29.129 10637-10637 LogTracing:与父节点建立连接 addEdge result:true
2023-06-13 19:40:29.129 10637-10637 LogTracing:update chainNode:ChainNode(linkCode=3, linkChainLog=300, parentNodeAliasCode=CHAIN_CODE_ROMA_REQUEST_OK, nodeAliasCode=CHAIN_CODE_ROMA_MAP_START, methodName=log, paramIndexes=[2, 3], recordDataChange=true, endPoint=false, traceId=logc26836f7-f219-4c93-ac16-59b00507670c, spanId=log061e57cb-9111-48b9-ba41-3fe71c978e23, thread=main)
2023-06-13 19:40:29.130 10637-10637 LogTracing:子节点:CHAIN_CODE_ROMA_MAP_END , 寻找对应关系 parent :CHAIN_CODE_ROMA_MAP_START
2023-06-13 19:40:29.131 10637-10637 LogTracing:找到traceId:logc26836f7-f219-4c93-ac16-59b00507670c , 与父节点建立连接生成spanID:logEndc90412f9-d0d4-4b63-a3b7-eff0a8ad1c06并更新NodeGraph
2023-06-13 19:40:29.131 10637-10637 LogTracing:addEdge new link : logc26836f7-f219-4c93-ac16-59b00507670c , traceName : CHAIN_CODE_ROMA_MAP_END
2023-06-13 19:40:29.131 10637-10637 LogTracing:与父节点建立连接 addEdge result:true
2023-06-13 19:40:29.131 10637-10637 LogTracing:end节点删除linkCode : 3 下的对应traceId节点
2023-06-13 19:40:29.136 10637-10637 LogTracing:getGraphWhenDel linkCode:3 , traceId:logc26836f7-f219-4c93-ac16-59b00507670c , graphMap size : 2 , map : {0=[[ChainNode(linkCode=0, linkChainLog=0, parentNodeAliasCode=, nodeAliasCode=CHAIN_CODE_CLOUD_INIT, methodName=initAiCloudSDK, paramIndexes=[-1], recordDataChange=true, endPoint=false, traceId=initAiCloudSDKafc229d3-28cd-4a9e-bcb3-6e6be9981b91, spanId=null, thread=main), ChainNode(linkCode=0, linkChainLog=0, parentNodeAliasCode=CHAIN_CODE_CLOUD_INIT, nodeAliasCode=CHAIN_CODE_CLOUD_PASSPORT_TOKEN, methodName=onTokenGot, paramIndexes=[0, 1], recordDataChange=true, endPoint=false, traceId=initAiCloudSDKafc229d3-28cd-4a9e-bcb3-6e6be9981b91, spanId=onTokenGote83186a5-55b4-464e-81bf-b238bc70b81c, thread=main), ChainNode(linkCode=0, linkChainLog=0, parentNodeAliasCode=CHAIN_CODE_CLOUD_PASSPORT_TOKEN, nodeAliasCode=CHAIN_CODE_CLOUD_SOCKET_INIT, methodName=init, paramIndexes=[1, 2, 3, 4], recordDataChange=true, endPoint=false, traceId=initAiCloudSDKafc229d3-28cd-4a9e-bcb3-6e6be9981b91, spanId=inita2406ece-a715-41c6-a08e-7a859b22be8d, thread=main)]], 3=[[ChainNode(linkCode=3, linkChainLog=300, parentNodeAliasCode=, nodeAliasCode=CHAIN_CODE_ROMA_CLICK, methodName=log, paramIndexes=[2, 3], recordDataChange=true, endPoint=false, traceId=logc26836f7-f219-4c93-ac16-59b00507670c, spanId=null, thread=main), ChainNode(linkCode=3, linkChainLog=300, parentNodeAliasCode=CHAIN_CODE_ROMA_CLICK, nodeAliasCode=CHAIN_CODE_ROMA_REQUEST, methodName=log, paramIndexes=[2, 3], recordDataChange=true, endPoint=false, traceId=logc26836f7-f219-4c93-ac16-59b00507670c, spanId=log85cdf360-3b85-47e8-9579-390589f911e6, thread=main), ChainNode(linkCode=3, linkChainLog=300, parentNodeAliasCode=CHAIN_CODE_ROMA_REQUEST, nodeAliasCode=CHAIN_CODE_ROMA_REQUEST_OK, methodName=log, paramIndexes=[2, 3], recordDataChange=true, endPoint=false, traceId=logc26836f7-f219-4c93-ac16-59b00507670c, spanId=log38d1125a-212d-4f94-8074-a1462c92958b, thread=main), ChainNode(linkCode=3, linkChainLog=300, parentNodeAliasCode=CHAIN_CODE_ROMA_REQUEST_OK, nodeAliasCode=CHAIN_CODE_HD_MAP_CALL, methodName=setRomaMode, paramIndexes=[0], recordDataChange=true, endPoint=false, traceId=logc26836f7-f219-4c93-ac16-59b00507670c, spanId=setRomaModea04710e5-095a-4be4-b751-ceff0e50d151, thread=main), ChainNode(linkCode=3, linkChainLog=300, parentNodeAliasCode=CHAIN_CODE_ROMA_REQUEST_OK, nodeAliasCode=CHAIN_CODE_ROMA_MAP_START, methodName=log, paramIndexes=[2, 3], recordDataChange=true, endPoint=false, traceId=logc26836f7-f219-4c93-ac16-59b00507670c, spanId=log2a87041e-842a-4124-96a8-63bff6226e7d, thread=main), ChainNode(linkCode=3, linkChainLog=300, parentNodeAliasCode=CHAIN_CODE_ROMA_MAP_START, nodeAliasCode=CHAIN_CODE_ROMA_CLOUD_ERROR, methodName=log, paramIndexes=[2, 3], recordDataChange=true, endPoint=false, traceId=logc26836f7-f219-4c93-ac16-59b00507670c, spanId=log6af6d082-5f94-48b2-8cb5-f370e65132c1, thread=main), ChainNode(linkCode=3, linkChainLog=300, parentNodeAliasCode=CHAIN_CODE_ROMA_REQUEST_OK, nodeAliasCode=CHAIN_CODE_ROMA_MAP_START, methodName=log, paramIndexes=[2, 3], recordDataChange=true, endPoint=false, traceId=logc26836f7-f219-4c93-ac16-59b00507670c, spanId=log061e57cb-9111-48b9-ba41-3fe71c978e23, thread=main), ChainNode(linkCode=3, linkChainLog=300, parentNodeAliasCode=CHAIN_CODE_ROMA_MAP_START, nodeAliasCode=CHAIN_CODE_ROMA_MAP_END, methodName=logEnd, paramIndexes=[2, 3], recordDataChange=true, endPoint=true, traceId=logc26836f7-f219-4c93-ac16-59b00507670c, spanId=logEndc90412f9-d0d4-4b63-a3b7-eff0a8ad1c06, thread=main)]]}
2023-06-13 19:40:29.138 10637-10637 LogTracing:hitValue:Optional[ChainNode(linkCode=3, linkChainLog=300, parentNodeAliasCode=, nodeAliasCode=CHAIN_CODE_ROMA_CLICK, methodName=log, paramIndexes=[2, 3], recordDataChange=true, endPoint=false, traceId=logc26836f7-f219-4c93-ac16-59b00507670c, spanId=null, thread=main)]
2023-06-13 19:40:29.138 10637-10637 LogTracing:removeGraph,输出graphMap: type:3 , branchSize:1 , linkSize:8
2023-06-13 19:40:29.138 10637-10637 LogTracing:update chainNode:ChainNode(linkCode=3, linkChainLog=300, parentNodeAliasCode=CHAIN_CODE_ROMA_MAP_START, nodeAliasCode=CHAIN_CODE_ROMA_MAP_END, methodName=logEnd, paramIndexes=[2, 3], recordDataChange=true, endPoint=true, traceId=logc26836f7-f219-4c93-ac16-59b00507670c, spanId=logEndc90412f9-d0d4-4b63-a3b7-eff0a8ad1c06, thread=main)
2023-06-13 19:40:29.139 10637-10637 LogTracing:子节点:CHAIN_CODE_ROMA_REQUEST , 寻找对应关系 parent :CHAIN_CODE_ROMA_CLICK
2023-06-13 19:40:29.139 10637-10637 LogTracing:中间链路调用,产生分支节点,形成新的父节点 traceId :logda586e9f-ee4c-45c2-8f36-8e898654dcc1
2023-06-13 19:40:29.140 10637-10637 LogTracing:update chainNode:ChainNode(linkCode=3, linkChainLog=300, parentNodeAliasCode=CHAIN_CODE_ROMA_CLICK, nodeAliasCode=CHAIN_CODE_ROMA_REQUEST, methodName=log, paramIndexes=[2, 3], recordDataChange=true, endPoint=false, traceId=logda586e9f-ee4c-45c2-8f36-8e898654dcc1, spanId=null, thread=main)
2023-06-13 19:40:29.859 10637-10637 LogTracing:子节点:CHAIN_CODE_ROMA_REQUEST_OK , 寻找对应关系 parent :CHAIN_CODE_ROMA_REQUEST
2023-06-13 19:40:29.860 10637-10637 LogTracing:找到traceId:logda586e9f-ee4c-45c2-8f36-8e898654dcc1 , 与父节点建立连接生成spanID:logfd11a0ba-a61c-418b-b610-eae4a6816fc8并更新NodeGraph
2023-06-13 19:40:29.860 10637-10637 LogTracing:addEdge new trace : logda586e9f-ee4c-45c2-8f36-8e898654dcc1 , traceName : CHAIN_CODE_ROMA_REQUEST_OK
2023-06-13 19:40:29.860 10637-10637 LogTracing:与父节点建立连接 addEdge result:true
2023-06-13 19:40:29.860 10637-10637 LogTracing:update chainNode:ChainNode(linkCode=3, linkChainLog=300, parentNodeAliasCode=CHAIN_CODE_ROMA_REQUEST, nodeAliasCode=CHAIN_CODE_ROMA_REQUEST_OK, methodName=log, paramIndexes=[2, 3], recordDataChange=true, endPoint=false, traceId=logda586e9f-ee4c-45c2-8f36-8e898654dcc1, spanId=logfd11a0ba-a61c-418b-b610-eae4a6816fc8, thread=main)

View File

@@ -348,7 +348,6 @@ class MoGoAutopilotControlProvider :
parentNodeAliasCode = ChainConstant.CHAIN_CODE_EAGLE_START_AUTOPILOT,
nodeAliasCode = ChainConstant.CHAIN_CODE_EAGLE_START_AUTOPILOT_RESULT,
paramIndexes = [0]
)
private fun invokeAutoPilotResult(status: String) {
CallerLogger.e("$M_ADAS_IMPL$TAG", status)

View File

@@ -100,10 +100,10 @@ class CheckSystemView @JvmOverloads constructor(
CallerAutoPilotStatusListenerManager.removeListener(TAG)
}
override fun onAutopilotConnectInfo(connectInfo: Boolean) {
super.onAutopilotConnectInfo(connectInfo)
override fun onAutopilotIpcConnectStatusChanged(status: Int, reason: String?) {
super.onAutopilotIpcConnectStatusChanged(status, reason)
ThreadUtils.runOnUiThread {
setViewStatus(connectInfo)
setViewStatus(status == 0x00)
}
}

View File

@@ -29,8 +29,8 @@ class MapBizProvider :IMoGoFunctionServerProvider, IMogoRoma {
CallerVisualAngleManager.init()
}
override fun trigger(romaStatus: Boolean,requestSuccess:((Boolean) -> Unit)?) {
aiCloudIdentifyDataManager.trigger(romaStatus,requestSuccess)
override fun trigger(romaStatus: Boolean) {
aiCloudIdentifyDataManager.trigger(romaStatus)
}
override fun onDestroy() {

View File

@@ -1,14 +1,25 @@
package com.mogo.eagle.core.function.business.ai
import android.content.Context
import android.os.Handler
import com.mogo.aicloud.services.socket.IMogoOnMessageListener
import com.mogo.aicloud.services.socket.MogoAiCloudSocketManager
import com.mogo.commons.debug.DebugConfig
import com.mogo.commons.module.status.MogoStatusManager
import com.mogo.eagle.core.data.config.FunctionBuildConfig
import com.mogo.eagle.core.data.deva.chain.ChainConstant
import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_CODE_ROMA_CLICK
import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_CODE_ROMA_CLICK_END
import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_CODE_ROMA_CLOUD_ERROR
import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_CODE_ROMA_MAP_END
import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_CODE_ROMA_MAP_START
import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_CODE_ROMA_REQUEST
import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_CODE_ROMA_REQUEST_ERROR
import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_CODE_ROMA_REQUEST_OK
import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_CODE_ROMA_ROUTE_MODE
import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener
import com.mogo.eagle.core.function.api.autopilot.IMoGoPlanningRottingListener
import com.mogo.eagle.core.function.api.map.roma.IMoGoRomaListener
import com.mogo.eagle.core.function.business.ai.net.AiCloudIdentifyNetWorkModel.Companion.aiCloudIdentifyNetWorkModel
import com.mogo.eagle.core.function.business.identify.MapIdentifySubscriber
import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager
@@ -18,18 +29,17 @@ import com.mogo.eagle.core.function.call.map.CallerMapRomaListener
import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager
import com.mogo.eagle.core.function.call.map.CallerVisualAngleManager.updateLongSightLevel
import com.mogo.eagle.core.function.utils.MapBizTrace
import com.mogo.eagle.core.utilcode.util.GsonUtils
import com.mogo.eagle.core.utilcode.util.ToastUtils
import com.mogo.map.MogoMapUIController
import com.mogo.map.listener.IMogoMapListener
import com.mogo.map.listener.MogoMapListenerHandler
import com.mogo.map.uicontroller.VisualAngleMode
import com.zhjt.service.chain.ChainLog
import mogo.telematics.pad.MessagePad
import mogo.yycp.api.proto.SocketDownData
import java.util.concurrent.atomic.AtomicBoolean
class AiCloudIdentifyDataManager : IMogoMapListener,
IMoGoPlanningRottingListener, IMoGoAutopilotStatusListener {
class AiCloudIdentifyDataManager : IMoGoPlanningRottingListener,
IMoGoAutopilotStatusListener, IMoGoRomaListener {
companion object {
private const val TAG = "AiCloudIdentifyData"
@@ -45,10 +55,29 @@ class AiCloudIdentifyDataManager : IMogoMapListener,
private var showAiCloud = AtomicBoolean(false)
private var aiCloudDataChange = AtomicBoolean(false)
private val handler = Handler {
if (it.what == 1) {
if (!aiCloudDataChange.get()) {
MapBizTrace.log(
CHAIN_CODE_ROMA_MAP_START, CHAIN_CODE_ROMA_CLOUD_ERROR, TAG, GsonUtils.toJson(
mutableMapOf(
"msg" to "云端5秒内无感知数据下发",
"socketStatus" to MogoStatusManager.getInstance().isSocketOnLine,
"cityCode" to CallerChassisLocationWGS84ListenerManager.getChassisLocationWGS84().cityCode
)
)
)
}
}
true
}
fun initServer(mContext: Context) {
MogoMapListenerHandler.mogoMapListenerHandler.registerHostMapListener(TAG, this)
CallerAutoPilotStatusListenerManager.addListener(TAG, this)
CallerPlanningRottingListenerManager.addListener(TAG,this)
CallerPlanningRottingListenerManager.addListener(TAG, this)
CallerMapRomaListener.addListener(TAG, this)
MogoAiCloudSocketManager.getInstance(mContext)
.registerOnMessageListener(
0x040003, //低频数据
@@ -66,6 +95,9 @@ class AiCloudIdentifyDataManager : IMogoMapListener,
override fun onMsgReceived(obj: SocketDownData.SocketDownDataProto?) {
obj?.let {
obj.data?.let {
if (it.allListList != null && it.allListList.size > 0) {
aiCloudDataChange.set(true)
}
if (showAiCloud.get()) {
if (it.allListList == null || it.allListList.size == 0) {
MapIdentifySubscriber.instance.clearAiCloudRoma()
@@ -79,8 +111,13 @@ class AiCloudIdentifyDataManager : IMogoMapListener,
})
}
fun trigger(romaStatus: Boolean,connectError: ((Boolean) -> Unit)?) {
MapBizTrace.log(TAG, "trigger")
fun trigger(romaStatus: Boolean) {
MapBizTrace.log(
"",
CHAIN_CODE_ROMA_CLICK,
TAG,
GsonUtils.toJson(mutableMapOf("trigger" to romaStatus))
)
// 乘客司机屏屏各自单独控制漫游
if (romaStatus) {
// 开启roma当前非漫游开启
@@ -103,52 +140,105 @@ class AiCloudIdentifyDataManager : IMogoMapListener,
MapIdentifySubscriber.instance.clearAiCloudRoma()
// 主动关闭roma回到中景视角
if (manual) {
MapBizTrace.logEnd(CHAIN_CODE_ROMA_CLICK, CHAIN_CODE_ROMA_CLICK_END, TAG, "")
MogoMapUIController.getInstance()
.changeMapVisualAngle(VisualAngleMode.MODE_MEDIUM_SIGHT, null)
}
}
fun requestRangeOfIdentify(dataReceive: Boolean) {
val status = MogoStatusManager.getInstance().isSocketOnLine
val gnss = CallerChassisLocationWGS84ListenerManager.getChassisLocationWGS84().gnssInfo
MapBizTrace.log(TAG,"开启请求data:$dataReceive , socketStatus:$status , lon:${gnss.longitude} , lat:${gnss.latitude} , heading:${gnss.heading}")
aiCloudIdentifyNetWorkModel.requestIdentifyRange(dataReceive, gnss.longitude,gnss.latitude,{
MapBizTrace.log(
TAG,
"requestIdentifyRange ok startRange:$START_METRE, endRange:$END_METRE , dataReceive:$dataReceive"
// false改变父节点信息
MapBizTrace.log(
if (dataReceive) CHAIN_CODE_ROMA_CLICK else "", CHAIN_CODE_ROMA_REQUEST, TAG,
GsonUtils.toJson(
mutableMapOf(
"dataReceive" to dataReceive,
"lon" to gnss.longitude,
"lat" to gnss.latitude,
"heading" to gnss.heading,
"socketStatus" to MogoStatusManager.getInstance().isSocketOnLine,
"cityCode" to CallerChassisLocationWGS84ListenerManager.getChassisLocationWGS84().cityCode
)
)
if (dataReceive) {
// 请求地图开始漫游
MogoMapUIController.getInstance().setRomaMode(FunctionBuildConfig.romaModeStyle)
CallerMapRomaListener.invokeMapRoma(true)
} else {
)
aiCloudIdentifyNetWorkModel.requestIdentifyRange(
dataReceive,
gnss.longitude,
gnss.latitude,
{
// false改变父节点信息
MapBizTrace.log(
if (dataReceive) CHAIN_CODE_ROMA_REQUEST else "",
CHAIN_CODE_ROMA_REQUEST_OK,
TAG,
GsonUtils.toJson(
mutableMapOf(
"dataResult" to dataReceive,
"startRange" to START_METRE,
"endRange" to END_METRE,
)
)
)
if (dataReceive) {
// 请求地图开始漫游
MogoMapUIController.getInstance().setRomaMode(FunctionBuildConfig.romaModeStyle)
CallerMapRomaListener.invokeMapRoma(true)
} else {
CallerMapRomaListener.invokeMapRoma(false)
}
},
{ errorMsg ->
// false改变父节点信息
MapBizTrace.logEnd(
if (dataReceive) CHAIN_CODE_ROMA_REQUEST else "",
CHAIN_CODE_ROMA_REQUEST_ERROR,
TAG,
GsonUtils.toJson(
mutableMapOf(
"errorMsg" to errorMsg,
"dataResult" to dataReceive,
"startRange" to START_METRE,
"endRange" to END_METRE
)
)
)
updateLongSightLevel(false)
CallerMapRomaListener.invokeMapRoma(false)
}
}, {
MapBizTrace.log(
TAG,
"requestIdentifyRange error : $it , startRange:$START_METRE, endRange:$END_METRE, dataReceive:$dataReceive"
)
updateLongSightLevel(false)
CallerMapRomaListener.invokeMapRoma(false)
if(DebugConfig.isDebug()){
ToastUtils.showShort("漫游请求异常msg:$it")
}
})
if (DebugConfig.isDebug()) {
ToastUtils.showShort("漫游请求异常msg:$errorMsg")
}
})
}
override fun onMapVisualAngleChanged(visualAngleMode: VisualAngleMode) {
super.onMapVisualAngleChanged(visualAngleMode)
when {
// 解除漫游限制
visualAngleMode.isRoma -> {
MapBizTrace.log(TAG, "onMapVisualAngleChanged, invoke roma , socketStatus: ${ MogoStatusManager.getInstance().isSocketOnLine}")
//status 0进入漫游模式成功 1进入漫游模式失败 2正常结束漫游 3切换视角结束漫游
override fun mapRomaStatus(status: Int, msg: String) {
super.mapRomaStatus(status, msg)
MapBizTrace.log(
CHAIN_CODE_ROMA_REQUEST_OK,
CHAIN_CODE_ROMA_MAP_START,
TAG,
GsonUtils.toJson(mutableMapOf("mapStatus" to status, "mapRomaMsg" to msg))
)
when (status) {
0 -> {
showAiCloud.set(true)
FunctionBuildConfig.isDrawIdentifyData = false
// 5秒没有触发 则预警日志写入
handler.sendEmptyMessageDelayed(1, 5_000L)
}
else -> {
1 -> {
if (DebugConfig.isDebug()) {
ToastUtils.showShort("进入漫游模式失败msg:$msg")
}
}
2, 3 -> {
if (showAiCloud.get()) {
MapBizTrace.log(TAG, "onMapVisualAngleChanged, invoke close roma")
MapBizTrace.logEnd(
CHAIN_CODE_ROMA_MAP_START, CHAIN_CODE_ROMA_MAP_END, TAG, GsonUtils.toJson(
mutableMapOf("romaEnd" to "地图结束回调,状态:$status")
)
)
showAiCloud.set(false)
closeRoma(false)
FunctionBuildConfig.isDrawIdentifyData = true
@@ -181,7 +271,12 @@ class AiCloudIdentifyDataManager : IMogoMapListener,
}
private fun updateRomaStyle(auto: Boolean, route: String? = null) {
MapBizTrace.log(TAG, "updateRomaStyle auto status:$auto, route:${route?:"reset null"}")
MapBizTrace.log(
"",
CHAIN_CODE_ROMA_ROUTE_MODE,
TAG,
"updateRomaStyle auto status:$auto, route:${route ?: "reset null"}"
)
route?.let {
CallerMapUIServiceManager.getMapUIController()?.setRoamTrajectory(route)
}

View File

@@ -143,7 +143,4 @@ public class MogoRouteOverlayManager implements
public void onAutopilotDockerInfo(@NonNull String dockerVersion) {
}
@Override
public void onAutopilotConnectInfo(boolean connectInfo) {
}
}

View File

@@ -5,18 +5,30 @@ import com.mogo.eagle.core.data.deva.chain.ChainConstant
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_MAP
import com.zhjt.service.chain.ChainLog
import com.zhjt.service.chain.ChildNodeAlias
import com.zhjt.service.chain.ParentNodeAlias
class MapBizTrace {
companion object {
@ChainLog(
linkChainLog = ChainConstant.CHAIN_TYPE_HD_MAP,
linkCode = ChainConstant.CHAIN_SOURCE_MAP,
paramIndexes = [2, 3],
endPoint = false
)
fun log(@ParentNodeAlias pN: String, @ChildNodeAlias cN: String, data: Any, data1: Any) {
if (DebugConfig.isDebug()) {
CallerLogger.d("$M_MAP${data.toString()}", data1)
}
}
@ChainLog(
linkChainLog = ChainConstant.CHAIN_TYPE_HD_MAP,
linkCode = ChainConstant.CHAIN_SOURCE_MAP,
nodeAliasCode = ChainConstant.CHAIN_CODE_HD_MAP_BIZ,
paramIndexes = [0, 1]
paramIndexes = [2, 3]
)
fun log(data: Any, data1: Any) {
fun logEnd(@ParentNodeAlias pN: String, @ChildNodeAlias cN: String, data: Any, data1: Any) {
if (DebugConfig.isDebug()) {
CallerLogger.d("$M_MAP${data.toString()}", data1)
}

View File

@@ -71,9 +71,6 @@ class ChainConstant {
const val CHAIN_CODE_RECORD_ANR = "CHAIN_CODE_RECORD_ANR"
const val CHAIN_ALIAS_CODE_RECORD_WEAK_NETWORK = "CHAIN_ALIAS_CODE_RECORD_WEAK_NETWORK"
const val CHAIN_CODE_HD_MAP_CALL = "CHAIN_CODE_HD_MAP_CALL"
const val CHAIN_CODE_HD_MAP_BIZ = "CHAIN_CODE_HD_MAP_BIZ"
const val CHAIN_CODE_INIT_ENV_RESTART = "CHAIN_CODE_INIT_ENV_RESTART"
const val CHAIN_CODE_APP_INFO_CONFIG_UPDATE = "CHAIN_CODE_APP_INFO_CONFIG_UPDATE"
const val CHAIN_CODE_FUNC_CONFIG_CHANGED = "CHAIN_CODE_FUNC_CONFIG_CHANGED"
@@ -102,5 +99,18 @@ class ChainConstant {
const val CHAIN_CODE_EAGLE_START_AUTOPILOT = "CHAIN_CODE_EAGLE_START_AUTOPILOT"
const val CHAIN_CODE_EAGLE_START_AUTOPILOT_RESULT = "CHAIN_CODE_EAGLE_START_AUTOPILOT_RESULT"
const val CHAIN_CODE_HD_MAP_CALL = "CHAIN_CODE_HD_MAP_CALL"
const val CHAIN_CODE_ROMA_CLICK = "CHAIN_CODE_ROMA_CLICK"
const val CHAIN_CODE_ROMA_CLICK_END = "CHAIN_CODE_ROMA_CLICK_END"
const val CHAIN_CODE_ROMA_REQUEST = "CHAIN_CODE_ROMA_REQUEST"
const val CHAIN_CODE_ROMA_REQUEST_OK = "CHAIN_CODE_ROMA_REQUEST_OK"
const val CHAIN_CODE_ROMA_REQUEST_ERROR = "CHAIN_CODE_ROMA_REQUEST_ERROR"
const val CHAIN_CODE_ROMA_MODE_INVOKE = "CHAIN_CODE_ROMA_MODE_INVOKE"
const val CHAIN_CODE_ROMA_MAP_START = "CHAIN_CODE_ROMA_MAP_START"
const val CHAIN_CODE_ROMA_MAP_END = "CHAIN_CODE_ROMA_MAP_END"
const val CHAIN_CODE_ROMA_CLOUD_ERROR = "CHAIN_CODE_ROMA_CLOUD_ERROR"
const val CHAIN_CODE_ROMA_ROUTE_MODE = "CHAIN_CODE_ROMA_ROUTE_MODE"
}
}

View File

@@ -34,13 +34,6 @@ interface IMoGoAutopilotStatusListener {
*/
fun onAutopilotDockerInfo(dockerVersion:String){}
/**
* 自动驾驶连接状态
*
* @param connectInfo 连接状态
*/
fun onAutopilotConnectInfo(connectInfo:Boolean){}
/**
* 自动驾驶到站
*

View File

@@ -2,8 +2,13 @@ package com.mogo.eagle.core.function.api.map.roma
interface IMoGoRomaListener {
/**
* 漫游地图状态回调
*/
fun mapRomaStatus(status:Int, msg:String){}
/**
* 漫游状态回调
*/
fun romaStatus(status:Boolean)
fun romaStatus(status:Boolean){}
}

View File

@@ -8,6 +8,6 @@ interface IMogoRoma : IProvider {
* 触发开启/关闭漫游
* @param romaStatus 漫游状态
*/
fun trigger(romaStatus:Boolean,requestSuccess:((Boolean) -> Unit)? = null)
fun trigger(romaStatus:Boolean)
}

View File

@@ -49,15 +49,6 @@ object CallerAutoPilotStatusListenerManager : CallerBase<IMoGoAutopilotStatusLis
}
}
private var connectStatus:Boolean by Delegates.observable(false){_, oldValue, newValue ->
if(oldValue != newValue){
M_LISTENERS.forEach {
val listener = it.value
listener.onAutopilotConnectInfo(newValue)
}
}
}
@Volatile
private var autoPilotMessageCode: String = ""
@@ -142,7 +133,6 @@ object CallerAutoPilotStatusListenerManager : CallerBase<IMoGoAutopilotStatusLis
*/
@Synchronized
fun invokeAutoPilotStatus() {
connectStatus = mAutopilotStatusInfo.connectStatus
invokeAutoPilotStatus(mAutopilotStatusInfo)
}
@@ -154,7 +144,6 @@ object CallerAutoPilotStatusListenerManager : CallerBase<IMoGoAutopilotStatusLis
fun invokeAutoPilotStatus(autopilotStatusInfo: AutopilotStatusInfo) {
mAutopilotStatusInfo = autopilotStatusInfo
M_LISTENERS.forEach {
val tag = it.key
val listener = it.value
listener.onAutopilotStatusResponse(mAutopilotStatusInfo)
}
@@ -167,7 +156,6 @@ object CallerAutoPilotStatusListenerManager : CallerBase<IMoGoAutopilotStatusLis
@Synchronized
fun invokeArriveAtStation(arrivalNotification: MessagePad.ArrivalNotification?) {
M_LISTENERS.forEach {
val tag = it.key
val listener = it.value
listener.onAutopilotArriveAtStation(arrivalNotification)
}
@@ -179,7 +167,6 @@ object CallerAutoPilotStatusListenerManager : CallerBase<IMoGoAutopilotStatusLis
@Synchronized
fun invokeAutopilotSNRequest() {
M_LISTENERS.forEach {
val tag = it.key
val listener = it.value
listener.onAutopilotSNRequest()
}

View File

@@ -10,8 +10,8 @@ object CallerMapIdentifyManager {
get() = ARouter.getInstance().build( MogoServicePaths.PATH_MAP_BIZ)
.navigation() as IMogoRoma
fun romaTrigger(romaStatus:Boolean, requestSuccess:((Boolean) -> Unit)? = null){
romaApi.trigger(romaStatus, requestSuccess)
fun romaTrigger(romaStatus:Boolean){
romaApi.trigger(romaStatus)
}
}

View File

@@ -6,11 +6,22 @@ import com.mogo.eagle.core.function.call.base.CallerBase
object CallerMapRomaListener : CallerBase<IMoGoRomaListener>() {
private var roma = false
private var romaStatus = -1
private var romaMsg: String = ""
override fun doSomeAfterAddListener(tag: String, listener: IMoGoRomaListener) {
listener.romaStatus(roma)
}
fun invokeMapRomaStatus(status: Int, msg: String) {
romaStatus = status
romaMsg = msg
M_LISTENERS.forEach {
val listener = it.value
listener.mapRomaStatus(romaStatus, romaMsg)
}
}
fun invokeMapRoma(romaStatus: Boolean) {
roma = romaStatus
M_LISTENERS.forEach {

View File

@@ -3,6 +3,6 @@ ext {
kotlin_version = '1.5.30'
plugin_version = '10.0.0_mogo'
hook_log_plugin_version = '1.7.2'
service_chain_version = '5.2.3'
service_chain_version = '5.2.8'
lancetx_plugin_version = '10.0.3_mogo'
}

View File

@@ -3,10 +3,12 @@ package com.mogo.map;
import static com.mogo.eagle.core.data.deva.chain.ChainConstant.CHAIN_CODE_HD_MAP_CALL;
import static com.mogo.eagle.core.data.deva.chain.ChainConstant.CHAIN_CODE_INIT_ON_MAP_INIT;
import static com.mogo.eagle.core.data.deva.chain.ChainConstant.CHAIN_CODE_INIT_ON_MAP_LOADED;
import static com.mogo.eagle.core.data.deva.chain.ChainConstant.CHAIN_CODE_ROMA_MODE_INVOKE;
import static com.mogo.eagle.core.data.deva.chain.ChainConstant.CHAIN_CODE_ROMA_REQUEST_OK;
import static com.mogo.eagle.core.data.deva.chain.ChainConstant.CHAIN_SOURCE_INIT;
import static com.mogo.eagle.core.data.deva.chain.ChainConstant.CHAIN_TYPE_INIT_STATUS;
import static com.mogo.eagle.core.data.deva.chain.ChainConstant.CHAIN_TYPE_HD_MAP;
import static com.mogo.eagle.core.data.deva.chain.ChainConstant.CHAIN_SOURCE_MAP;
import static com.mogo.eagle.core.data.deva.chain.ChainConstant.CHAIN_TYPE_HD_MAP;
import static com.mogo.eagle.core.data.deva.chain.ChainConstant.CHAIN_TYPE_INIT_STATUS;
import static com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.M_MAP;
import static com.mogo.map.uicontroller.VisualAngleMode.MAP_STYLE_VR_ANGLE_300;
import static com.mogo.map.uicontroller.VisualAngleMode.MAP_STYLE_VR_ANGLE_CROSS;
@@ -39,6 +41,7 @@ import com.mogo.eagle.core.function.call.autopilot.CallerChassisLocationWGS84Lis
import com.mogo.eagle.core.function.call.map.CallerMapDataCollectorManager;
import com.mogo.eagle.core.function.call.map.CallerMapDevaListenerManager;
import com.mogo.eagle.core.function.call.map.CallerMapRoadListenerManager;
import com.mogo.eagle.core.function.call.map.CallerMapRomaListener;
import com.mogo.eagle.core.function.call.map.CallerMapStyleListenerManager;
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger;
import com.mogo.eagle.core.utilcode.mogo.toast.TipToast;
@@ -68,6 +71,7 @@ import com.zhidaoauto.map.sdk.open.abs.OnMapStyleListener;
import com.zhidaoauto.map.sdk.open.abs.OnMapTouchListener;
import com.zhidaoauto.map.sdk.open.abs.OnMapViewVisualAngleChangeListener;
import com.zhidaoauto.map.sdk.open.abs.OnRoadInfoListener;
import com.zhidaoauto.map.sdk.open.abs.OnRoamStatusListener;
import com.zhidaoauto.map.sdk.open.abs.log.ILog;
import com.zhidaoauto.map.sdk.open.business.PointCloudHelper;
import com.zhidaoauto.map.sdk.open.camera.CameraPosition;
@@ -107,7 +111,7 @@ public class AMapViewWrapper implements IMogoMapView,
OnMapStyleListener,
OnMapViewVisualAngleChangeListener,
OnRoadInfoListener,
ILog {
ILog, OnRoamStatusListener {
private static final String TAG = "AMapViewWrapper";
private final MapAutoView mMapView;
@@ -190,6 +194,7 @@ public class AMapViewWrapper implements IMogoMapView,
mMapView.registerListener(this, MapAutoApi.LISTENER_TYPE_3D);
mMapView.setOnCameraChangeListener(this);
mMapView.setOnMapStyleListener(this);
mMapView.setOnRoamStatusListener(this);
mMapView.setOnMapViewVisualAngleChangeListener(this);
mMapView.setOnRoadInfoListener(this, 1);
MapAutoApi.INSTANCE.registerLogListener(this);
@@ -198,13 +203,14 @@ public class AMapViewWrapper implements IMogoMapView,
/**
* 修改获取当前车道号
*
* @param roadId
* @param s1
*/
@Override
public void onRoadIdInfo(@androidx.annotation.Nullable String roadId, @androidx.annotation.Nullable String s1) {
if (roadId != null && !TextUtils.isEmpty(roadId)) {
// CallerLogger.INSTANCE.d(M_MAP + TAG, "onRoadIdInfo::" + roadId);
// CallerLogger.INSTANCE.d(M_MAP + TAG, "onRoadIdInfo::" + roadId);
CallerMapRoadListenerManager.INSTANCE.invokeListenersOnRoadIdGet(roadId);
} else {
//CallerLogger.INSTANCE.d(M_MAP + TAG, "onRoadIdInfo::null");
@@ -393,13 +399,15 @@ public class AMapViewWrapper implements IMogoMapView,
@ChainLog(
linkChainLog = CHAIN_TYPE_HD_MAP,
linkCode = CHAIN_SOURCE_MAP,
nodeAliasCode = CHAIN_CODE_HD_MAP_CALL,
paramIndexes = {0}
parentNodeAliasCode = CHAIN_CODE_ROMA_REQUEST_OK,
nodeAliasCode = CHAIN_CODE_ROMA_MODE_INVOKE,
paramIndexes = {0},
endPoint = false
)
@Override
public void setRomaMode(int mode) {
if (checkAMapView()) {
mMapView.getMapAutoViewHelper().setRoamStyle(mode,1800, MapAutoApi.ROAM_SPEED_40);
mMapView.getMapAutoViewHelper().setRoamStyle(mode, 1800, MapAutoApi.ROAM_SPEED_40);
}
}
@@ -782,6 +790,11 @@ public class AMapViewWrapper implements IMogoMapView,
public void onMapStatusChanged(int type, int value) {
}
@Override
public void onRoamStatus(int status, @NonNull String msg) {
CallerMapRomaListener.INSTANCE.invokeMapRomaStatus(status, msg);
}
@Override
public void onMapViewVisualAngleChange(int i) {
CallerLogger.INSTANCE.d(M_MAP + TAG, " 地图自动更改视距 currentThread : " + Thread.currentThread().getName());
@@ -1158,4 +1171,5 @@ public class AMapViewWrapper implements IMogoMapView,
public String getCityCode() {
return GDLocationClient.getInstance(getContext()).getLastCityCode();
}
}