[2.13.0-arch-opt] merge

This commit is contained in:
zhongchao
2022-12-28 11:37:33 +08:00
parent ddeb1e306c
commit d9077e8847
97 changed files with 804 additions and 2003 deletions

View File

@@ -60,7 +60,6 @@ dependencies {
implementation rootProject.ext.dependencies.mogo_core_utils
implementation rootProject.ext.dependencies.mogo_core_network
implementation rootProject.ext.dependencies.mogo_core_function_api
implementation rootProject.ext.dependencies.mogo_core_function_call
implementation project(':libraries:mogo-adas')
} else {
@@ -68,11 +67,8 @@ dependencies {
implementation project(':core:mogo-core-data')
implementation project(':core:mogo-core-utils')
implementation project(':core:mogo-core-network')
implementation project(':core:mogo-core-function-api')
implementation project(':core:mogo-core-function-call')
implementation project(':libraries:mogo-adas')
implementation project(":libraries:mogo-map-api")
implementation project(":libraries:mogo-map")
}
}

View File

@@ -62,7 +62,6 @@ dependencies {
if (Boolean.valueOf(USE_MAVEN_PACKAGE)) {
implementation rootProject.ext.dependencies.mogocommons
implementation rootProject.ext.dependencies.mogoserviceapi
implementation rootProject.ext.dependencies.mogo_core_data
implementation rootProject.ext.dependencies.mogo_core_utils
@@ -70,7 +69,6 @@ dependencies {
implementation rootProject.ext.dependencies.mogo_core_function_call
} else {
implementation project(":foudations:mogo-commons")
implementation project(':services:mogo-service-api')
implementation project(':core:mogo-core-data')
implementation project(':core:mogo-core-utils')

View File

@@ -4,7 +4,6 @@ import android.content.Context;
import android.util.Log;
import com.alibaba.android.arouter.facade.annotation.Route;
import com.mogo.eagle.core.data.bindingcar.ModifyBindingcarInfo;
import com.mogo.eagle.core.data.config.FunctionBuildConfig;
import com.mogo.eagle.core.data.config.HmiBuildConfig;
import com.mogo.eagle.core.data.constants.MogoServicePaths;
@@ -12,12 +11,9 @@ import com.mogo.eagle.core.function.api.bindingcar.BindingcarCallBack;
import com.mogo.eagle.core.function.api.bindingcar.IMoGoBindingcarProvider;
import com.mogo.eagle.core.function.appupgrade.network.UpgradeAppNetWorkManager;
import com.mogo.eagle.core.function.bindingcar.network.BindingcarNetWorkManager;
import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotManager;
import com.mogo.eagle.core.function.call.bindingcar.CallerBindingcarManager;
import com.mogo.eagle.core.function.ipcupgrade.IPCUpgradeManager;
import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils;
import com.mogo.eagle.core.utilcode.mogo.storage.SharedPrefsMgr;
import com.mogo.eagle.core.utilcode.mogo.toast.TipToast;
import org.jetbrains.annotations.NotNull;
@@ -73,8 +69,9 @@ public class BindingcarProvider implements IMoGoBindingcarProvider {
/**
* 确认升级工控机docker版本
* @param images docker列表
* @param padSn SN
*
* @param images docker列表
* @param padSn SN
* @param releaseId 任务ID
*/
@Override
@@ -84,12 +81,13 @@ public class BindingcarProvider implements IMoGoBindingcarProvider {
/**
* 获取新工控机docker版本
* @param padSn SN
*
* @param padSn SN
* @param dockerVersion 当前工控机版本
*/
@Override
public void queryContainers(String padSn,String dockerVersion) {
IPCUpgradeManager.Companion.getINSTANCE().queryContainers(padSn,dockerVersion);
public void queryContainers(String padSn, String dockerVersion) {
IPCUpgradeManager.Companion.getINSTANCE().queryContainers(padSn, dockerVersion);
}
@Override
@@ -123,6 +121,7 @@ public class BindingcarProvider implements IMoGoBindingcarProvider {
/**
* 以后可能废弃
*
* @return
*/
private int getScreenType() {
@@ -139,11 +138,11 @@ public class BindingcarProvider implements IMoGoBindingcarProvider {
private int getCarType() {
int carType = -1;
if(AppIdentityModeUtils.isBus(FunctionBuildConfig.appIdentityMode)) {
if (AppIdentityModeUtils.isBus(FunctionBuildConfig.appIdentityMode)) {
carType = 1; //bus
}
if(AppIdentityModeUtils.isTaxi(FunctionBuildConfig.appIdentityMode)) {
if (AppIdentityModeUtils.isTaxi(FunctionBuildConfig.appIdentityMode)) {
carType = 2; //taxi
}
@@ -153,19 +152,19 @@ public class BindingcarProvider implements IMoGoBindingcarProvider {
private String getCarScreenType() {
String screenType = "";
if(AppIdentityModeUtils.isTaxi(FunctionBuildConfig.appIdentityMode) && AppIdentityModeUtils.isPassenger(FunctionBuildConfig.appIdentityMode)) {
if (AppIdentityModeUtils.isTaxi(FunctionBuildConfig.appIdentityMode) && AppIdentityModeUtils.isPassenger(FunctionBuildConfig.appIdentityMode)) {
screenType = "1"; //taxi乘客端
}
if(AppIdentityModeUtils.isTaxi(FunctionBuildConfig.appIdentityMode) && AppIdentityModeUtils.isDriver(FunctionBuildConfig.appIdentityMode)) {
if (AppIdentityModeUtils.isTaxi(FunctionBuildConfig.appIdentityMode) && AppIdentityModeUtils.isDriver(FunctionBuildConfig.appIdentityMode)) {
screenType = "2"; //taxi司机端
}
if(AppIdentityModeUtils.isBus(FunctionBuildConfig.appIdentityMode) && AppIdentityModeUtils.isPassenger(FunctionBuildConfig.appIdentityMode)) {
if (AppIdentityModeUtils.isBus(FunctionBuildConfig.appIdentityMode) && AppIdentityModeUtils.isPassenger(FunctionBuildConfig.appIdentityMode)) {
screenType = "3"; //bus 乘客端
}
if(AppIdentityModeUtils.isBus(FunctionBuildConfig.appIdentityMode) && AppIdentityModeUtils.isDriver(FunctionBuildConfig.appIdentityMode)) {
if (AppIdentityModeUtils.isBus(FunctionBuildConfig.appIdentityMode) && AppIdentityModeUtils.isDriver(FunctionBuildConfig.appIdentityMode)) {
screenType = "4"; //bus 司机端
}

View File

@@ -49,21 +49,14 @@ dependencies {
kapt rootProject.ext.dependencies.aroutercompiler
if (Boolean.valueOf(USE_MAVEN_PACKAGE)) {
implementation rootProject.ext.dependencies.mogoserviceapi
implementation project(':libraries:map-usbcamera')
implementation rootProject.ext.dependencies.mogo_core_utils
implementation rootProject.ext.dependencies.mogo_core_function_api
implementation rootProject.ext.dependencies.mogo_core_function_call
implementation rootProject.ext.dependencies.mogo_core_data
}else {
implementation project(':services:mogo-service-api')
implementation project(':libraries:map-usbcamera')
implementation project(':core:mogo-core-utils')
implementation project(':core:mogo-core-function-api')
implementation project(':core:mogo-core-function-call')
implementation project(':core:mogo-core-data')
}

View File

@@ -63,14 +63,12 @@ dependencies {
if (Boolean.valueOf(USE_MAVEN_PACKAGE)) {
implementation rootProject.ext.dependencies.mogo_core_data
implementation rootProject.ext.dependencies.mogo_core_utils
implementation rootProject.ext.dependencies.mogo_core_function_api
implementation rootProject.ext.dependencies.mogo_core_function_call
implementation rootProject.ext.dependencies.mogo_core_res
} else {
implementation project(':foudations:mogo-commons')
implementation project(':core:mogo-core-data')
implementation project(':core:mogo-core-utils')
implementation project(':core:mogo-core-function-api')
implementation project(':core:mogo-core-function-call')
implementation project(':core:mogo-core-res')
}

View File

@@ -54,8 +54,6 @@ dependencies {
if (Boolean.valueOf(USE_MAVEN_PACKAGE)) {
implementation rootProject.ext.dependencies.mogocommons
implementation rootProject.ext.dependencies.mogoserviceapi
implementation rootProject.ext.dependencies.callchatprovider
implementation rootProject.ext.dependencies.mogo_core_data
@@ -65,9 +63,6 @@ dependencies {
} else {
implementation project(":foudations:mogo-commons")
implementation project(':services:mogo-service-api')
implementation project(':core:mogo-core-data')
implementation project(':core:mogo-core-utils')
implementation project(':core:mogo-core-network')

View File

@@ -57,12 +57,10 @@ dependencies {
if (Boolean.valueOf(USE_MAVEN_PACKAGE)) {
implementation rootProject.ext.dependencies.mogo_core_data
implementation rootProject.ext.dependencies.mogo_core_utils
implementation rootProject.ext.dependencies.mogo_core_function_api
implementation rootProject.ext.dependencies.mogo_core_function_call
} else {
implementation project(':core:mogo-core-data')
implementation project(':core:mogo-core-utils')
implementation project(':core:mogo-core-function-api')
implementation project(':core:mogo-core-function-call')
}
}

View File

@@ -85,18 +85,14 @@ dependencies {
implementation rootProject.ext.dependencies.androidautoSize
if (Boolean.valueOf(USE_MAVEN_PACKAGE)) {
implementation rootProject.ext.dependencies.mogoserviceapi
implementation rootProject.ext.dependencies.mogo_core_utils
implementation rootProject.ext.dependencies.mogo_core_function_api
implementation rootProject.ext.dependencies.mogo_core_function_call
implementation rootProject.ext.dependencies.mogo_core_data
implementation rootProject.ext.dependencies.mogo_core_res
}else {
implementation project(':services:mogo-service-api')
implementation project(':foudations:mogo-aicloud-services-sdk')
implementation project(':foudations:mogo-commons')
implementation project(':core:mogo-core-utils')
implementation project(':core:mogo-core-function-api')
implementation project(':core:mogo-core-function-call')
implementation project(':core:mogo-core-data')
implementation project(':core:mogo-core-res')

View File

@@ -7,31 +7,19 @@ import android.view.View
import android.view.WindowManager
import androidx.fragment.app.FragmentActivity
import androidx.lifecycle.Lifecycle.Event
import androidx.lifecycle.Lifecycle.Event.ON_CREATE
import androidx.lifecycle.Lifecycle.Event.ON_DESTROY
import androidx.lifecycle.LifecycleCoroutineScope
import androidx.lifecycle.LifecycleEventObserver
import androidx.lifecycle.LifecycleOwner
import androidx.lifecycle.lifecycleScope
import com.mogo.cloud.passport.MoGoAiCloudClientConfig
import com.mogo.eagle.core.data.msgbox.MsgBoxBean
import com.mogo.eagle.core.data.msgbox.RecordBagMsg
import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotVehicleStateListenerManager
import com.mogo.eagle.core.utilcode.kotlin.PX
import com.mogo.eagle.core.utilcode.kotlin.lifecycleOwner
import com.mogo.eagle.core.utilcode.kotlin.onClick
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_DEVA
import com.mogo.eagle.core.utilcode.reminder.Reminder
import com.mogo.eagle.core.utilcode.reminder.api.IReminder
import com.mogo.eagle.core.utilcode.reminder.api.IReminder.IGlobalStateChangeListener
import com.mogo.eagle.core.utilcode.util.*
import com.zhjt.mogo_core_function_devatools.badcase.biz.*
import com.zhjt.mogo_core_function_devatools.badcase.consts.BadCaseConfig
import com.zhjt.mogo_core_function_devatools.badcase.repository.db.entity.AutoPilotRecord
import com.zhjt.mogo_core_function_devatools.badcase.repository.net.api.entity.BadCaseResponse.Reason
import com.zhjt.mogo_core_function_devatools.ext.enqueuePop
import com.zhjt.mogo_core_function_devatools.ext.toast
import kotlinx.coroutines.*
import kotlinx.coroutines.channels.Channel
import me.jessyan.autosize.utils.AutoSizeUtils
@@ -47,7 +35,8 @@ internal object BadCaseManager : LifecycleEventObserver {
* 超过此时间case入口自动消失
*/
private val CASE_EXPIRE_DURATION: Long = TimeUnit.HOURS.toMillis(4)/* TimeUnit.SECONDS.toMillis(10) */
private val CASE_EXPIRE_DURATION: Long =
TimeUnit.HOURS.toMillis(4)/* TimeUnit.SECONDS.toMillis(10) */
private var hideFloat: (() -> Unit)? = null
@@ -85,15 +74,20 @@ internal object BadCaseManager : LifecycleEventObserver {
/**
* 展示BadCase配置页面
*/
fun showBadCaseConfigWindow(context: Context){
fun showBadCaseConfigWindow(context: Context) {
val badCaseConfigView = BadCaseConfigView(context)
badCaseConfigView.setClickListener(object: BadCaseConfigView.ClickListener{
badCaseConfigView.setClickListener(object : BadCaseConfigView.ClickListener {
override fun onClose() {
hideFloat?.invoke()
hideFloat = null
}
})
context.enqueuePop(badCaseConfigView,AutoSizeUtils.dp2px(context,960f), WindowManager.LayoutParams.MATCH_PARENT, key = "BadCaseConfigView").also {
context.enqueuePop(
badCaseConfigView,
AutoSizeUtils.dp2px(context, 960f),
WindowManager.LayoutParams.MATCH_PARENT,
key = "BadCaseConfigView"
).also {
hideFloat = it
}
}
@@ -101,37 +95,40 @@ internal object BadCaseManager : LifecycleEventObserver {
/**
* 主动采集BadCase
*/
fun initBadCase(view: View){
val activity = view.context as? FragmentActivity ?: throw IllegalStateException("please ensure context is FragmentActivity.")
fun initBadCase(view: View) {
val activity = view.context as? FragmentActivity
?: throw IllegalStateException("please ensure context is FragmentActivity.")
view.setOnClickListener {
if(ClickUtils.isFastClick()){
if(NetworkUtils.isConnected()){
if(BadCaseConfig.dockerVersion!=null){
if (ClickUtils.isFastClick()) {
if (NetworkUtils.isConnected()) {
if (BadCaseConfig.dockerVersion != null) {
//兼容老MAP版本
if(BadCaseConfig.dockerVersion!!.contains("2.3.0")
if (BadCaseConfig.dockerVersion!!.contains("2.3.0")
|| BadCaseConfig.dockerVersion!!.contains("2.4.0")
|| BadCaseConfig.dockerVersion!!.contains("2.5.0")
|| BadCaseConfig.dockerVersion!!.contains("2.6.0")
|| BadCaseConfig.dockerVersion!!.contains("2.8.0")){
|| BadCaseConfig.dockerVersion!!.contains("2.8.0")
) {
val initiativeBadCaseWindow = InitiativeBadCaseWindow(activity)
initiativeBadCaseWindow.setClickListener(object: InitiativeBadCaseWindow.ClickListener{
initiativeBadCaseWindow.setClickListener(object :
InitiativeBadCaseWindow.ClickListener {
override fun closeWindow() {
initiativeBadCaseWindow.hideFloatWindow()
}
})
initiativeBadCaseWindow.showFloatWindow(null)
}else{
} else {
val caseListDialog = CaseListDialog(activity)
caseListDialog.show()
}
}else{
} else {
ToastUtils.showShort("工控机连接状态异常")
}
}else{
} else {
ToastUtils.showShort("网络异常,请检查网络")
}
}else{
} else {
ToastUtils.showShort("请勿连续点击,稍后再试")
}
@@ -141,46 +138,48 @@ internal object BadCaseManager : LifecycleEventObserver {
/**
* AI数据采集
*/
fun initAiCollect(view: View){
val activity = view.context as? FragmentActivity ?: throw IllegalStateException("please ensure context is FragmentActivity.")
fun initAiCollect(view: View) {
val activity = view.context as? FragmentActivity
?: throw IllegalStateException("please ensure context is FragmentActivity.")
view.setOnClickListener {
if(ClickUtils.isFastClick()){
if(NetworkUtils.isConnected()){
if(BadCaseConfig.dockerVersion!=null){
if (ClickUtils.isFastClick()) {
if (NetworkUtils.isConnected()) {
if (BadCaseConfig.dockerVersion != null) {
val aiDataCollectWindow = AIDataCollectWindow(activity)
aiDataCollectWindow.setClickListener(object: AIDataCollectWindow.ClickListener{
aiDataCollectWindow.setClickListener(object :
AIDataCollectWindow.ClickListener {
override fun closeWindow() {
aiDataCollectWindow.hideFloatWindow()
}
})
aiDataCollectWindow.showFloatWindow()
}else{
} else {
ToastUtils.showShort("工控机连接状态异常")
}
}else{
} else {
ToastUtils.showShort("网络异常,请检查网络")
}
}else{
} else {
ToastUtils.showShort("请勿连续点击,稍后再试")
}
}
}
fun onReceiveBadCaseRecord(msgBoxBean: MsgBoxBean,activity: Activity,countdown: Boolean) {
fun onReceiveBadCaseRecord(msgBoxBean: MsgBoxBean, activity: Activity, countdown: Boolean) {
CallerLogger.d("$M_DEVA$TAG", "收到录包结果回调${record}")
CallerLogger.d("$M_DEVA$TAG", "开始创建被动录包弹窗,window num=${BadCaseConfig.windowNum}")
ThreadUtils.runOnUiThread {
val passiveBadCaseWindow = PassiveBadCaseWindow(activity)
passiveBadCaseWindow.setRecord(msgBoxBean)
passiveBadCaseWindow.setClickListener(object: PassiveBadCaseWindow.ClickListener{
passiveBadCaseWindow.setClickListener(object : PassiveBadCaseWindow.ClickListener {
override fun closeWindow() {
passiveBadCaseWindow.hideFloatWindow()
}
})
passiveBadCaseWindow.showFloatWindow()
if(countdown){
val countDownTimer = object: CountDownTimer(10000,1000){
if (countdown) {
val countDownTimer = object : CountDownTimer(10000, 1000) {
override fun onTick(p0: Long) {
}
@@ -202,7 +201,6 @@ internal object BadCaseManager : LifecycleEventObserver {
}
internal fun RecordPanelOuterClass.RecordPanel.toRecord(): AutoPilotRecord =
AutoPilotRecord().also {
it.id = this.id

View File

@@ -29,7 +29,6 @@ import kotlinx.coroutines.GlobalScope
import kotlinx.coroutines.launch
import mogo.telematics.pad.MessagePad
import record_cache.RecordPanelOuterClass
import java.lang.reflect.Field
import java.util.*
/**
@@ -38,7 +37,7 @@ import java.util.*
* @since: 2022/7/12
*/
class AIDataCollectWindow constructor(activity: Activity) : View.OnTouchListener,
IMoGoAutopilotRecordListener , IMoGoAutopilotCarStateListener {
IMoGoAutopilotRecordListener, IMoGoAutopilotCarStateListener {
companion object {
const val TAG = "AIDataCollectWindow"
@@ -63,12 +62,14 @@ class AIDataCollectWindow constructor(activity: Activity) : View.OnTouchListener
private lateinit var tvCollectCancel: TextView //取消按钮
private var collectReason: String = "大型车:大货、大巴、特种车辆"
@Volatile
private var recordKey: String?=null //录制bag包key
private var recordKey: String? = null //录制bag包key
@Volatile
private var recordFileName: String?=null //录制文件包名
private var longitude: Double?=null
private var latitude: Double?=null
private var recordFileName: String? = null //录制文件包名
private var longitude: Double? = null
private var latitude: Double? = null
private lateinit var mFloatLayout: View
private var mInViewX = 0f
@@ -89,8 +90,9 @@ class AIDataCollectWindow constructor(activity: Activity) : View.OnTouchListener
}
@SuppressLint("SetTextI18n")
private fun initFloatWindow(){
mFloatLayout = LayoutInflater.from(mActivity).inflate(R.layout.view_ai_data_collect, null) as View
private fun initFloatWindow() {
mFloatLayout =
LayoutInflater.from(mActivity).inflate(R.layout.view_ai_data_collect, null) as View
mFloatLayout.setOnTouchListener(this)
tvCollectNum = mFloatLayout.findViewById(R.id.tvCollectNum)
tvCollectTime = mFloatLayout.findViewById(R.id.tvCollectTime)
@@ -105,14 +107,15 @@ class AIDataCollectWindow constructor(activity: Activity) : View.OnTouchListener
tvCollectReport = mFloatLayout.findViewById(R.id.tvCollectReport)
tvCollectCancel = mFloatLayout.findViewById(R.id.tvCollectCancel)
if(BadCaseConfig.windowNum<1){
if (BadCaseConfig.windowNum < 1) {
BadCaseConfig.windowNum = 1
}
tvCollectNum.text = BadCaseConfig.windowNum.toString()
BadCaseConfig.windowNum++
tvCollectTime.text ="时间:${millis2String(System.currentTimeMillis(),TimeUtils.getHourMinSecondFormat())}"
tvCollectTime.text =
"时间:${millis2String(System.currentTimeMillis(), TimeUtils.getHourMinSecondFormat())}"
//采集结果回调监听
CallerAutopilotRecordListenerManager.addListener(this.hashCode().toString(),this)
CallerAutopilotRecordListenerManager.addListener(this.hashCode().toString(), this)
// 添加 ADAS车辆状态&定位 监听
CallerAutopilotCarStatusListenerManager.addListener(this.hashCode().toString(), this)
//开始录制AI数据采集Bag包
@@ -123,7 +126,7 @@ class AIDataCollectWindow constructor(activity: Activity) : View.OnTouchListener
12
)
//大型车
rbLargeCar.setOnClickListener{
rbLargeCar.setOnClickListener {
setRadioButtonStatus(
largeCarStatus = true,
trafficLightStatus = false,
@@ -216,12 +219,12 @@ class AIDataCollectWindow constructor(activity: Activity) : View.OnTouchListener
//上报
tvCollectReport.setOnClickListener {
GlobalScope.launch{
GlobalScope.launch {
val uploadResult = presenter.upload(mutableMapOf<String, String>().also { itx ->
itx["carLicense"] = AppConfigInfo.plateNumber?:"" //车牌号
itx["filename"] = recordFileName?:"" //bag包文件地址
itx["carLicense"] = AppConfigInfo.plateNumber ?: "" //车牌号
itx["filename"] = recordFileName ?: "" //bag包文件地址
itx["filesize"] = "0" //bag包文件大小
itx["key"] = recordKey?:"" //key
itx["key"] = recordKey ?: "" //key
itx["reason"] = collectReason //采集原因
itx["duration"] = "20" //采集时长固定为20S
itx["startTime"] = System.currentTimeMillis().toString() //上报时间(时间戳格式)
@@ -229,7 +232,7 @@ class AIDataCollectWindow constructor(activity: Activity) : View.OnTouchListener
itx["carSn"] = MoGoAiCloudClientConfig.getInstance().sn //SN
itx["userRole"] = "" //采集者角色
itx["audioUrl"] = "" //音频COS地址
itx["mapVersion"] = BadCaseConfig.dockerVersion ?:"" //工控机版本
itx["mapVersion"] = BadCaseConfig.dockerVersion ?: "" //工控机版本
itx["eyeVersion"] = AppUtils.getAppVersionName() //鹰眼版本
itx["coordinate"] = "latitude:${latitude};longitude:${longitude}" //坐标
@@ -266,23 +269,29 @@ class AIDataCollectWindow constructor(activity: Activity) : View.OnTouchListener
}
override fun onAutopilotRecordResult(recordPanel: RecordPanelOuterClass.RecordPanel) {
CallerLogger.d("${M_DEVA}${TAG}", "-- 收到工控机录制任务回调 -- $recordPanel")
ThreadUtils.runOnUiThread{
if(recordKey==null){
ThreadUtils.runOnUiThread {
if (recordKey == null) {
recordKey = recordPanel.key.toString()
BadCaseConfig.recordKeyList.add(recordPanel.key)
}
if(recordFileName==null){
if (recordFileName == null) {
recordFileName = recordPanel.filename
}
}
}
private fun setRadioButtonStatus(largeCarStatus: Boolean,trafficLightStatus: Boolean,waterStatus: Boolean,
constructionStatus: Boolean,accidentStatus: Boolean,rainStatus: Boolean,nightTrafficStatus: Boolean){
private fun setRadioButtonStatus(
largeCarStatus: Boolean,
trafficLightStatus: Boolean,
waterStatus: Boolean,
constructionStatus: Boolean,
accidentStatus: Boolean,
rainStatus: Boolean,
nightTrafficStatus: Boolean
) {
rbLargeCar.isChecked = largeCarStatus
rbTrafficLight.isChecked = trafficLightStatus
rbWater.isChecked = waterStatus
@@ -323,7 +332,7 @@ class AIDataCollectWindow constructor(activity: Activity) : View.OnTouchListener
// 默认固定位置,靠屏幕右边缘的中间
mWindowManager!!.defaultDisplay.getMetrics(metrics)
mWindowParams!!.x = metrics.widthPixels
mWindowParams!!.y = metrics.heightPixels / 2 - BarUtils.getStatusBarHeight()-350
mWindowParams!!.y = metrics.heightPixels / 2 - BarUtils.getStatusBarHeight() - 350
mWindowManager!!.addView(mFloatLayout, mWindowParams)
}
}

View File

@@ -1,6 +1,5 @@
package com.zhjt.mogo_core_function_devatools.badcase.biz
import android.util.Log
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion

View File

@@ -70,9 +70,9 @@ public class CaseTopicListDialog extends Dialog implements IMoGoAutopilotRecordL
initEvent();
//获取所有Topic
CallerAutoPilotManager.INSTANCE.getBadCaseConfig(1, 0, new ArrayList<>());
if(recordType!=null){
if (recordType != null) {
tvCaseName.setText(recordType.getDesc());
if(recordType.getTopicsList().size()>0){
if (recordType.getTopicsList().size() > 0) {
topicListAdapter.setData(recordType.getTopicsList());
topicListAdapter.notifyDataSetChanged();
}
@@ -90,8 +90,8 @@ public class CaseTopicListDialog extends Dialog implements IMoGoAutopilotRecordL
CallerAutopilotRecordListenerManager.INSTANCE.removeListener(TAG);
}
public void setData(RecordTypeEntity recordTypeEntity){
if(recordTypeEntity!=null){
public void setData(RecordTypeEntity recordTypeEntity) {
if (recordTypeEntity != null) {
recordType = recordTypeEntity;
}
}
@@ -108,9 +108,9 @@ public class CaseTopicListDialog extends Dialog implements IMoGoAutopilotRecordL
rvTopicList.setLayoutManager(linearLayoutManager);
topicListAdapter = new TopicListAdapter();
topicListAdapter.setListener((topicName, clicked) -> {
if(clicked){
if (clicked) {
addTopicList.add(topicName);
}else{
} else {
addTopicList.remove(topicName);
}
});
@@ -132,15 +132,15 @@ public class CaseTopicListDialog extends Dialog implements IMoGoAutopilotRecordL
@Override
public void afterTextChanged(Editable s) {
searchStr = s.toString();
if(searchStr!=null && searchStr.length()>0){
if (searchStr != null && searchStr.length() > 0) {
ivSearch.setImageDrawable(getContext().getDrawable(R.drawable.icon_bad_case_delect));
} else {
ivSearch.setImageDrawable(getContext().getDrawable(R.drawable.icon_bad_case_search));
}
if(searchStr!=null && searchStr.length()>0){
if (searchStr != null && searchStr.length() > 0) {
searchTopicList.clear();
for(int index=0;index<recordType.getTopicsList().size();index++){
if(recordType.getTopicsList().get(index).getTopicName().contains(searchStr)){
for (int index = 0; index < recordType.getTopicsList().size(); index++) {
if (recordType.getTopicsList().get(index).getTopicName().contains(searchStr)) {
searchTopicList.add(recordType.getTopicsList().get(index));
}
}
@@ -151,7 +151,7 @@ public class CaseTopicListDialog extends Dialog implements IMoGoAutopilotRecordL
});
ivSearch.setOnClickListener(v -> {
if(searchStr!=null && searchStr.length()>0){
if (searchStr != null && searchStr.length() > 0) {
etSearch.setText("");
ivSearch.setImageDrawable(getContext().getDrawable(R.drawable.icon_bad_case_search));
topicListAdapter.setData(recordType.getTopicsList());
@@ -159,11 +159,11 @@ public class CaseTopicListDialog extends Dialog implements IMoGoAutopilotRecordL
}
});
tvSave.setOnClickListener(v -> {
if(recordType!=null){
Boolean success=CallerAutoPilotManager.INSTANCE.getBadCaseConfig(2,recordType.getId(),addTopicList);
if(Boolean.TRUE.equals(success)){
if (recordType != null) {
Boolean success = CallerAutoPilotManager.INSTANCE.getBadCaseConfig(2, recordType.getId(), addTopicList);
if (Boolean.TRUE.equals(success)) {
ToastUtils.showShort("Topic设置成功");
if(recordType.getId() == 0){
if (recordType.getId() == 0) {
//自定义Topic
BadCaseConfig.customTopicList.clear();
BadCaseConfig.customTopicList.addAll(addTopicList);
@@ -171,7 +171,7 @@ public class CaseTopicListDialog extends Dialog implements IMoGoAutopilotRecordL
addTopicList.clear();
recordType.getTopicsList().removeAll(allTopicList);
dismiss();
}else{
} else {
ToastUtils.showShort("Topic设置失败");
}
}

View File

@@ -38,8 +38,6 @@ import kotlinx.coroutines.launch
import mogo.telematics.pad.MessagePad
import record_cache.RecordPanelOuterClass
import java.io.File
import java.lang.StringBuilder
import java.lang.reflect.Field
import java.util.*
@@ -79,15 +77,17 @@ class InitiativeBadCaseWindow constructor(activity: Activity) : View.OnTouchList
private lateinit var tvInitiativeCancel: TextView
private var audioStatus = false
private var audioFileName:String?=null //录音文件名称
private var audioFileName: String? = null //录音文件名称
private var uploadReason: StringBuilder = StringBuilder() //上报原因,标签
@Volatile
private var recordKey: String?=null //录制bag包key
private var recordKey: String? = null //录制bag包key
@Volatile
private var recordFileName: String?=null //录制文件包名
private var longitude: Double?=null
private var latitude: Double?=null
private var recordFileName: String? = null //录制文件包名
private var longitude: Double? = null
private var latitude: Double? = null
private var mInViewX = 0f
private var mInViewY = 0f
@@ -107,8 +107,9 @@ class InitiativeBadCaseWindow constructor(activity: Activity) : View.OnTouchList
}
@SuppressLint("SetTextI18n")
private fun initFloatWindow(){
mFloatLayout = LayoutInflater.from(mActivity).inflate(R.layout.view_initiative_bad_case, null) as View
private fun initFloatWindow() {
mFloatLayout =
LayoutInflater.from(mActivity).inflate(R.layout.view_initiative_bad_case, null) as View
mFloatLayout.setOnTouchListener(this)
tvInitiativeNum = mFloatLayout.findViewById(R.id.tvInitiativeNum)
@@ -127,16 +128,17 @@ class InitiativeBadCaseWindow constructor(activity: Activity) : View.OnTouchList
tvInitiativeReport = mFloatLayout.findViewById(R.id.tvInitiativeReport)
tvInitiativeCancel = mFloatLayout.findViewById(R.id.tvInitiativeCancel)
if(BadCaseConfig.windowNum<1){
if (BadCaseConfig.windowNum < 1) {
BadCaseConfig.windowNum = 1
}
tvInitiativeNum.text = BadCaseConfig.windowNum.toString()
BadCaseConfig.windowNum++
tvInitiativeTime.text = "时间:${millis2String(System.currentTimeMillis(),TimeUtils.getHourMinSecondFormat())}"
tvInitiativeTime.text =
"时间:${millis2String(System.currentTimeMillis(), TimeUtils.getHourMinSecondFormat())}"
tvInitiativeIdentity.text = "身份:${BadCaseConfig.identity}"
//采集结果回调监听
CallerAutopilotRecordListenerManager.addListener(this.hashCode().toString(),this)
CallerAutopilotRecordListenerManager.addListener(this.hashCode().toString(), this)
// 添加 ADAS车辆状态&定位 监听
CallerAutopilotCarStatusListenerManager.addListener(this.hashCode().toString(), this)
viewAudioButton.setOnClickListener {
@@ -145,36 +147,37 @@ class InitiativeBadCaseWindow constructor(activity: Activity) : View.OnTouchList
}
tvInitiativeReport.setOnClickListener {
if(!rbOne.isChecked && !rbTwo.isChecked && !rbThree.isChecked &&
!rbFour.isChecked && !rbFive.isChecked && !rbSix.isChecked){
if (!rbOne.isChecked && !rbTwo.isChecked && !rbThree.isChecked &&
!rbFour.isChecked && !rbFive.isChecked && !rbSix.isChecked
) {
TipToast.shortTip("请选择至少一个Case")
return@setOnClickListener
}
if(rbOne.isChecked){
if (rbOne.isChecked) {
uploadReason.append("严重画龙 ")
}
if(rbTwo.isChecked){
if (rbTwo.isChecked) {
uploadReason.append("速度过慢 ")
}
if(rbThree.isChecked){
if (rbThree.isChecked) {
uploadReason.append("感知、定位、地图等其他 ")
}
if(rbFour.isChecked){
if (rbFour.isChecked) {
uploadReason.append("速度过快 ")
}
if(rbFive.isChecked){
if (rbFive.isChecked) {
uploadReason.append("存在碰撞风险 ")
}
if(rbSix.isChecked){
if (rbSix.isChecked) {
uploadReason.append("点刹、顿挫")
}
if(audioStatus){
if (audioStatus) {
audioStatus = !audioStatus
setAudio(audioStatus)
Handler().postDelayed({
uploadAudio()
},1000)
}else{
uploadAudio()
}, 1000)
} else {
uploadAudio()
}
}
@@ -197,10 +200,10 @@ class InitiativeBadCaseWindow constructor(activity: Activity) : View.OnTouchList
}
}
var countDownTimer: CountDownTimer?=null
var countDownTimer: CountDownTimer? = null
private fun setAudio(status: Boolean){
if(status){
private fun setAudio(status: Boolean) {
if (status) {
//开始录音
audioFileName = "Audio_${System.currentTimeMillis()}_BadCase"
RecordManager.getInstance().start(audioFileName)
@@ -208,11 +211,11 @@ class InitiativeBadCaseWindow constructor(activity: Activity) : View.OnTouchList
viewAudioButton.setImageResource(R.drawable.icon_bad_case_audio_select)
tvAudioCountDown.visibility = View.VISIBLE
//开始倒计时
if(countDownTimer==null){
if (countDownTimer == null) {
countDownTimer = object : CountDownTimer(60000, 1000) {
override fun onTick(millisUntilFinished: Long) {
tvAudioCountDown.text = "${millisUntilFinished/1000}S"
tvAudioCountDown.text = "${millisUntilFinished / 1000}S"
}
override fun onFinish() {
@@ -225,7 +228,7 @@ class InitiativeBadCaseWindow constructor(activity: Activity) : View.OnTouchList
}
countDownTimer?.start()
}
}else{
} else {
//结束倒计时
countDownTimer?.cancel()
countDownTimer?.onFinish()
@@ -235,11 +238,13 @@ class InitiativeBadCaseWindow constructor(activity: Activity) : View.OnTouchList
}
private fun uploadAudio(){
private fun uploadAudio() {
val singlePath = "/mnt/sdcard/mogo/DataCollection/${audioFileName}.wav"
val file = File(singlePath)
if(file.exists()){
LogInfoManagerFactory.createAudioUpload(mActivity.applicationContext,"Audio",singlePath,
if (file.exists()) {
LogInfoManagerFactory.createAudioUpload(mActivity.applicationContext,
"Audio",
singlePath,
object : OnUploadListener {
override fun onUploadSuccess(filePath: String, downloadUrl: String) {
CallerLogger.d("$M_DEVA$TAG", "语音文件上传成功downloadUrl=$downloadUrl")
@@ -255,7 +260,7 @@ class InitiativeBadCaseWindow constructor(activity: Activity) : View.OnTouchList
removeUploadListener(singlePath)
}
})
}else{
} else {
//上传到服务器
upload(null)
}
@@ -265,7 +270,7 @@ class InitiativeBadCaseWindow constructor(activity: Activity) : View.OnTouchList
* 将语音文件上传Cos监听移除
* @param filePath 文件路径
*/
private fun removeUploadListener(filePath: String){
private fun removeUploadListener(filePath: String) {
val pkgInfo: List<String> = filePath.substring(
filePath.lastIndexOf("/") + 1,
filePath.lastIndexOf(".")
@@ -278,21 +283,21 @@ class InitiativeBadCaseWindow constructor(activity: Activity) : View.OnTouchList
* 将记录上传到服务器
* @param downloadUrl 语音文件下载地址
*/
private fun upload(downloadUrl: String?){
GlobalScope.launch{
private fun upload(downloadUrl: String?) {
GlobalScope.launch {
val uploadResult = presenter.upload(mutableMapOf<String, String>().also { itx ->
itx["carLicense"] = AppConfigInfo.plateNumber?:"" //车牌号
itx["filename"] = recordFileName?:"" //bag包文件地址
itx["carLicense"] = AppConfigInfo.plateNumber ?: "" //车牌号
itx["filename"] = recordFileName ?: "" //bag包文件地址
itx["filesize"] = "0" //bag包文件大小
itx["key"] = recordKey?:"" //key
itx["reason"] = uploadReason.toString()?:"" //采集原因
itx["key"] = recordKey ?: "" //key
itx["reason"] = uploadReason.toString() ?: "" //采集原因
itx["duration"] = BadCaseConfig.totalDuration.toString() //采集时长固定为20S
itx["startTime"] = System.currentTimeMillis().toString() //上报时间(时间戳格式)
itx["channel"] = "1" //渠道
itx["carSn"] = MoGoAiCloudClientConfig.getInstance().sn //SN
itx["userRole"] = BadCaseConfig.identity //采集者角色
itx["audioUrl"] = downloadUrl?:"" //音频COS地址
itx["mapVersion"] = BadCaseConfig.dockerVersion ?:"" //工控机版本
itx["audioUrl"] = downloadUrl ?: "" //音频COS地址
itx["mapVersion"] = BadCaseConfig.dockerVersion ?: "" //工控机版本
itx["eyeVersion"] = AppUtils.getAppVersionName() //鹰眼版本
itx["coordinate"] = "latitude:${latitude};longitude:${longitude}" //坐标
@@ -338,15 +343,22 @@ class InitiativeBadCaseWindow constructor(activity: Activity) : View.OnTouchList
// 默认固定位置,靠屏幕右边缘的中间
mWindowManager!!.defaultDisplay.getMetrics(metrics)
mWindowParams!!.x = metrics.widthPixels
mWindowParams!!.y = metrics.heightPixels / 2 - BarUtils.getStatusBarHeight()-950
mWindowParams!!.y = metrics.heightPixels / 2 - BarUtils.getStatusBarHeight() - 950
mWindowManager!!.addView(mFloatLayout, mWindowParams)
//开启录包
if(recordCaseEntity!=null){
CallerAutoPilotManager.recordPackage(recordCaseEntity.caseId,Random(SystemClock.elapsedRealtime()).nextInt(),
BadCaseConfig.totalDuration, BadCaseConfig.previousDuration,recordCaseEntity.topicList)
}else{
CallerAutoPilotManager.recordPackage(BadCaseConfig.type,Random(SystemClock.elapsedRealtime()).nextInt(),
BadCaseConfig.totalDuration, BadCaseConfig.previousDuration)
if (recordCaseEntity != null) {
CallerAutoPilotManager.recordPackage(
recordCaseEntity.caseId,
Random(SystemClock.elapsedRealtime()).nextInt(),
BadCaseConfig.totalDuration,
BadCaseConfig.previousDuration,
recordCaseEntity.topicList
)
} else {
CallerAutoPilotManager.recordPackage(
BadCaseConfig.type, Random(SystemClock.elapsedRealtime()).nextInt(),
BadCaseConfig.totalDuration, BadCaseConfig.previousDuration
)
}
}
}
@@ -362,11 +374,11 @@ class InitiativeBadCaseWindow constructor(activity: Activity) : View.OnTouchList
override fun onAutopilotRecordResult(recordPanel: RecordPanelOuterClass.RecordPanel) {
CallerLogger.d("${M_DEVA}${TAG}", "-- 收到工控机录制任务回调 -- $recordPanel")
ThreadUtils.runOnUiThread {
if(recordKey==null){
if (recordKey == null) {
recordKey = recordPanel.key.toString()
BadCaseConfig.recordKeyList.add(recordPanel.key)
}
if(recordFileName==null){
if (recordFileName == null) {
recordFileName = recordPanel.filename
}
}

View File

@@ -7,7 +7,6 @@ import android.graphics.PixelFormat
import android.os.CountDownTimer
import android.os.Handler
import android.util.DisplayMetrics
import android.util.Log
import android.view.*
import android.widget.CheckBox
import android.widget.CompoundButton
@@ -17,7 +16,6 @@ import com.google.android.flexbox.FlexboxLayout
import com.mogo.cloud.passport.MoGoAiCloudClientConfig
import com.mogo.eagle.core.data.app.AppConfigInfo
import com.mogo.eagle.core.data.msgbox.MsgBoxBean
import com.mogo.eagle.core.data.msgbox.MsgCategory
import com.mogo.eagle.core.data.msgbox.RecordBagMsg
import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotCarStateListener
import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotCarStatusListenerManager
@@ -29,17 +27,16 @@ import com.mogo.eagle.core.utilcode.util.*
import com.mogo.eagle.core.utilcode.util.TimeUtils.millis2String
import com.zhidao.loglib.call.LogInfoManagerFactory
import com.zhidao.loglib.upload.OnUploadListener
import com.zhidao.loglib.upload.UploadManager
import com.zhjt.mogo_core_function_devatools.R
import com.zhjt.mogo_core_function_devatools.badcase.consts.BadCaseConfig
import com.zhjt.mogo_core_function_devatools.badcase.record.RecordManager
import kotlinx.coroutines.GlobalScope
import kotlinx.coroutines.launch
import mogo.telematics.pad.MessagePad
import com.zhidao.loglib.upload.UploadManager
import me.jessyan.autosize.utils.AutoSizeUtils
import mogo.telematics.pad.MessagePad
import org.greenrobot.eventbus.EventBus
import java.io.File
import java.lang.reflect.Field
/**
* @author XuXinChao
@@ -59,14 +56,14 @@ class PassiveBadCaseWindow constructor(activity: Activity) : View.OnTouchListene
private lateinit var mFloatLayout: View
private var audioStatus = false
private var audioFileName:String?=null //录音文件名称
private var audioFileName: String? = null //录音文件名称
private var uploadReason: String = String() //上报原因,标签
private var recordKey: String?=null //录制bag包key
private var recordFileName: String?=null //录制文件包名
private var boxBean: MsgBoxBean ?= null
private var longitude: Double?=null
private var latitude: Double?=null
private var recordKey: String? = null //录制bag包key
private var recordFileName: String? = null //录制文件包名
private var boxBean: MsgBoxBean? = null
private var longitude: Double? = null
private var latitude: Double? = null
private var mInViewX = 0f
private var mInViewY = 0f
@@ -76,7 +73,7 @@ class PassiveBadCaseWindow constructor(activity: Activity) : View.OnTouchListene
private var mInScreenY = 0f
private var clickListener: ClickListener? = null
var countDownTimer: CountDownTimer?=null
var countDownTimer: CountDownTimer? = null
private lateinit var tvPassiveNum: TextView
private lateinit var tvPassiveTime: TextView
@@ -99,8 +96,9 @@ class PassiveBadCaseWindow constructor(activity: Activity) : View.OnTouchListene
}
@SuppressLint("SetTextI18n")
private fun initFloatWindow(){
mFloatLayout = LayoutInflater.from(mActivity).inflate(R.layout.view_passive_bad_case, null) as View
private fun initFloatWindow() {
mFloatLayout =
LayoutInflater.from(mActivity).inflate(R.layout.view_passive_bad_case, null) as View
mFloatLayout.setOnTouchListener(this)
tvPassiveNum = mFloatLayout.findViewById(R.id.tvPassiveNum)
tvPassiveTime = mFloatLayout.findViewById(R.id.tvPassiveTime)
@@ -110,12 +108,13 @@ class PassiveBadCaseWindow constructor(activity: Activity) : View.OnTouchListene
tvPassiveReport = mFloatLayout.findViewById(R.id.tvPassiveReport)
tvPassiveCancel = mFloatLayout.findViewById(R.id.tvPassiveCancel)
flReasonLayout = mFloatLayout.findViewById(R.id.flReasonLayout)
if(BadCaseConfig.windowNum<1){
if (BadCaseConfig.windowNum < 1) {
BadCaseConfig.windowNum = 1
}
tvPassiveNum.text = BadCaseConfig.windowNum.toString()
BadCaseConfig.windowNum++
tvPassiveTime.text = "时间:${millis2String(System.currentTimeMillis(),TimeUtils.getHourMinSecondFormat())}"
tvPassiveTime.text =
"时间:${millis2String(System.currentTimeMillis(), TimeUtils.getHourMinSecondFormat())}"
tvPassiveIdentity.text = "身份:${BadCaseConfig.identity}"
// 添加 ADAS车辆状态&定位 监听
CallerAutopilotCarStatusListenerManager.addListener(TAG, this)
@@ -125,17 +124,17 @@ class PassiveBadCaseWindow constructor(activity: Activity) : View.OnTouchListene
}
tvPassiveReport.setOnClickListener {
if(uploadReason.isEmpty()){
if (uploadReason.isEmpty()) {
TipToast.shortTip("请选择至少一个Case")
return@setOnClickListener
}
if(audioStatus){
if (audioStatus) {
audioStatus = !audioStatus
setAudio(audioStatus)
Handler().postDelayed({
uploadAudio()
},1000)
}else{
}, 1000)
} else {
uploadAudio()
}
//删除记录
@@ -163,8 +162,8 @@ class PassiveBadCaseWindow constructor(activity: Activity) : View.OnTouchListene
}
}
private fun setAudio(status: Boolean){
if(status){
private fun setAudio(status: Boolean) {
if (status) {
//开始录音
audioFileName = "Audio_${System.currentTimeMillis()}_BadCase"
RecordManager.getInstance().start(audioFileName)
@@ -172,11 +171,11 @@ class PassiveBadCaseWindow constructor(activity: Activity) : View.OnTouchListene
viewAudioButton.setImageResource(R.drawable.icon_bad_case_audio_select)
tvAudioCountDown.visibility = View.VISIBLE
//开始倒计时
if(countDownTimer==null){
if (countDownTimer == null) {
countDownTimer = object : CountDownTimer(60000, 1000) {
override fun onTick(millisUntilFinished: Long) {
tvAudioCountDown.text = "${millisUntilFinished/1000}S"
tvAudioCountDown.text = "${millisUntilFinished / 1000}S"
}
override fun onFinish() {
@@ -189,7 +188,7 @@ class PassiveBadCaseWindow constructor(activity: Activity) : View.OnTouchListene
}
countDownTimer?.start()
}
}else{
} else {
//结束倒计时
countDownTimer?.cancel()
countDownTimer?.onFinish()
@@ -199,11 +198,13 @@ class PassiveBadCaseWindow constructor(activity: Activity) : View.OnTouchListene
}
private fun uploadAudio(){
private fun uploadAudio() {
val singlePath = "/mnt/sdcard/mogo/DataCollection/${audioFileName}.wav"
val file = File(singlePath)
if(file.exists()){
LogInfoManagerFactory.createAudioUpload(mActivity.applicationContext,"Audio",singlePath,
if (file.exists()) {
LogInfoManagerFactory.createAudioUpload(mActivity.applicationContext,
"Audio",
singlePath,
object : OnUploadListener {
override fun onUploadSuccess(filePath: String, downloadUrl: String) {
CallerLogger.d("$M_DEVA$TAG", "语音文件上传成功downloadUrl=$downloadUrl")
@@ -219,7 +220,7 @@ class PassiveBadCaseWindow constructor(activity: Activity) : View.OnTouchListene
removeUploadListener(singlePath)
}
})
}else{
} else {
//上传到服务器
upload(null)
}
@@ -229,7 +230,7 @@ class PassiveBadCaseWindow constructor(activity: Activity) : View.OnTouchListene
* 将语音文件上传Cos监听移除
* @param filePath 文件路径
*/
private fun removeUploadListener(filePath: String){
private fun removeUploadListener(filePath: String) {
val pkgInfo: List<String> = filePath.substring(
filePath.lastIndexOf("/") + 1,
filePath.lastIndexOf(".")
@@ -242,21 +243,21 @@ class PassiveBadCaseWindow constructor(activity: Activity) : View.OnTouchListene
* 将记录上传到服务器
* @param downloadUrl 语音文件下载地址
*/
private fun upload(downloadUrl: String?){
GlobalScope.launch{
private fun upload(downloadUrl: String?) {
GlobalScope.launch {
val uploadResult = presenter.upload(mutableMapOf<String, String>().also { itx ->
itx["carLicense"] = AppConfigInfo.plateNumber?:"" //车牌号
itx["filename"] = recordFileName?:"" //bag包文件地址
itx["carLicense"] = AppConfigInfo.plateNumber ?: "" //车牌号
itx["filename"] = recordFileName ?: "" //bag包文件地址
itx["filesize"] = "0" //bag包文件大小
itx["key"] = recordKey?:"" //key
itx["key"] = recordKey ?: "" //key
itx["reason"] = uploadReason //采集原因
itx["duration"] = BadCaseConfig.totalDuration.toString() //采集时长固定为20S
itx["startTime"] = System.currentTimeMillis().toString() //上报时间(时间戳格式)
itx["channel"] = "0" //渠道
itx["carSn"] = MoGoAiCloudClientConfig.getInstance().sn //SN
itx["userRole"] = BadCaseConfig.identity //采集者角色
itx["audioUrl"] = downloadUrl?:"" //音频COS地址
itx["mapVersion"] = BadCaseConfig.dockerVersion ?:"" //工控机版本
itx["audioUrl"] = downloadUrl ?: "" //音频COS地址
itx["mapVersion"] = BadCaseConfig.dockerVersion ?: "" //工控机版本
itx["eyeVersion"] = AppUtils.getAppVersionName() //鹰眼版本
itx["coordinate"] = "latitude:${latitude};longitude:${longitude}" //坐标
@@ -308,28 +309,33 @@ class PassiveBadCaseWindow constructor(activity: Activity) : View.OnTouchListene
// 默认固定位置,靠屏幕右边缘的中间
mWindowManager!!.defaultDisplay.getMetrics(metrics)
mWindowParams!!.x = metrics.widthPixels
mWindowParams!!.y = metrics.heightPixels - BarUtils.getStatusBarHeight()-950
mWindowParams!!.y = metrics.heightPixels - BarUtils.getStatusBarHeight() - 950
mWindowManager!!.addView(mFloatLayout, mWindowParams)
}
GlobalScope.launch{
GlobalScope.launch {
presenter.loadBadCases(true).also {
ThreadUtils.runOnUiThread {
it.iterator().forEach {
val checkBox = CheckBox(mActivity)
checkBox.setTextColor(Color.WHITE)
val lp = FlexboxLayout.LayoutParams(FlexboxLayout.LayoutParams.WRAP_CONTENT,
FlexboxLayout.LayoutParams.WRAP_CONTENT)
checkBox.buttonDrawable = mActivity.resources.getDrawable(R.drawable.badcase_radio_button_style)
checkBox.setPadding(SizeUtils.dp2px(10f),
val lp = FlexboxLayout.LayoutParams(
FlexboxLayout.LayoutParams.WRAP_CONTENT,
FlexboxLayout.LayoutParams.WRAP_CONTENT
)
checkBox.buttonDrawable =
mActivity.resources.getDrawable(R.drawable.badcase_radio_button_style)
checkBox.setPadding(
SizeUtils.dp2px(10f),
SizeUtils.dp2px(10f),
SizeUtils.dp2px(10f))
checkBox.textSize = AutoSizeUtils.dp2px(mActivity,18f).toFloat()
SizeUtils.dp2px(10f),
SizeUtils.dp2px(10f)
)
checkBox.textSize = AutoSizeUtils.dp2px(mActivity, 18f).toFloat()
checkBox.text = it.reason
checkBox.isChecked = it.isChecked
checkBox.setOnCheckedChangeListener(this@PassiveBadCaseWindow)
flReasonLayout.addView(checkBox,lp)
flReasonLayout.addView(checkBox, lp)
}
}
}
@@ -339,13 +345,13 @@ class PassiveBadCaseWindow constructor(activity: Activity) : View.OnTouchListene
override fun onCheckedChanged(buttonView: CompoundButton?, isChecked: Boolean) {
buttonView?.text?.let {
if(isChecked){
if(!uploadReason.contains(it)){
if (isChecked) {
if (!uploadReason.contains(it)) {
uploadReason += it
}
}else{
if(uploadReason.contains(it)){
uploadReason = uploadReason.replace(it.toString(),"")
} else {
if (uploadReason.contains(it)) {
uploadReason = uploadReason.replace(it.toString(), "")
}
}
@@ -359,7 +365,7 @@ class PassiveBadCaseWindow constructor(activity: Activity) : View.OnTouchListene
if (mFloatLayout.parent != null) mWindowManager!!.removeView(mFloatLayout)
}
fun setRecord(msgBoxBean: MsgBoxBean){
fun setRecord(msgBoxBean: MsgBoxBean) {
boxBean = msgBoxBean
val recordBagMsg = (msgBoxBean.bean as RecordBagMsg)
recordKey = recordBagMsg.key.toString()

View File

@@ -7,23 +7,22 @@ import android.widget.TextView
import androidx.recyclerview.widget.RecyclerView
import com.mogo.eagle.core.data.badcase.RecordTypeEntity
import com.zhjt.mogo_core_function_devatools.R
import com.zhjt.mogo_core_function_devatools.badcase.biz.BadCaseConfigView
/**
* @author XuXinChao
* @description 录制模板清单列表适配器
* @since: 2022/10/19
*/
class RecordTemplateAdapter : RecyclerView.Adapter<RecordTemplateAdapter.RecordTemplateHolder>(){
class RecordTemplateAdapter : RecyclerView.Adapter<RecordTemplateAdapter.RecordTemplateHolder>() {
private var data:List<RecordTypeEntity>? = null
private var data: List<RecordTypeEntity>? = null
private var clickTemplateListener: ClickTemplateListener? = null
fun setData( data: List<RecordTypeEntity>?){
fun setData(data: List<RecordTypeEntity>?) {
this.data = data
}
fun setListener(listener: ClickTemplateListener){
fun setListener(listener: ClickTemplateListener) {
clickTemplateListener = listener
}
@@ -34,7 +33,7 @@ class RecordTemplateAdapter : RecyclerView.Adapter<RecordTemplateAdapter.RecordT
}
override fun onBindViewHolder(holder: RecordTemplateHolder, position: Int) {
data?.let {recordTypeEntity->
data?.let { recordTypeEntity ->
holder.caseName.text = recordTypeEntity[position].desc
holder.caseName.setOnClickListener {
clickTemplateListener?.onClick(recordTypeEntity[position])
@@ -44,11 +43,11 @@ class RecordTemplateAdapter : RecyclerView.Adapter<RecordTemplateAdapter.RecordT
override fun getItemCount() = data?.size ?: 0
class RecordTemplateHolder(itemView: View): RecyclerView.ViewHolder(itemView){
class RecordTemplateHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
var caseName: TextView = itemView.findViewById(R.id.caseName)
}
interface ClickTemplateListener{
interface ClickTemplateListener {
fun onClick(recordTypeEntity: RecordTypeEntity)
}

View File

@@ -12,11 +12,10 @@ import java.util.List;
public class Mp3EncodeThread extends Thread {
private static final String TAG = Mp3EncodeThread.class.getSimpleName();
private List<ChangeBuffer> cacheBufferList = Collections.synchronizedList(new LinkedList<ChangeBuffer>());
private File file;
private final List<ChangeBuffer> cacheBufferList = Collections.synchronizedList(new LinkedList<>());
private final File file;
private final byte[] mp3Buffer;
private FileOutputStream os;
private byte[] mp3Buffer;
private EncordFinishListener encordFinishListener;
/**
@@ -69,7 +68,7 @@ public class Mp3EncodeThread extends Thread {
private ChangeBuffer next() {
for (; ; ) {
if (cacheBufferList == null || cacheBufferList.size() == 0) {
if (cacheBufferList.size() == 0) {
try {
if (isOver) {
finish();
@@ -122,8 +121,8 @@ public class Mp3EncodeThread extends Thread {
}
public static class ChangeBuffer {
private short[] rawData;
private int readSize;
private final short[] rawData;
private final int readSize;
public ChangeBuffer(short[] rawData, int readSize) {
this.rawData = rawData.clone();

View File

@@ -3,13 +3,13 @@ package com.zhjt.mogo_core_function_devatools.badcase.repository.store
import androidx.datastore.core.DataStore
import androidx.datastore.core.DataStoreFactory
import androidx.datastore.core.Serializer
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_DEVA
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_DEVA
import com.mogo.eagle.core.utilcode.util.Utils
import com.zhjt.mogo_core_function_devatools.badcase.BadCaseManager
import com.zhjt.mogo_core_function_devatools.badcase.repository.net.api.entity.BadCaseResponse.Reason
import com.zhjt.mogo_core_function_devatools.badcase.generated.BadCauses
import com.zhjt.mogo_core_function_devatools.badcase.generated.Cause
import com.zhjt.mogo_core_function_devatools.badcase.repository.net.api.entity.BadCaseResponse.Reason
import kotlinx.coroutines.FlowPreview
import kotlinx.coroutines.flow.catch
import kotlinx.coroutines.flow.firstOrNull
@@ -54,7 +54,12 @@ internal object BadCaseStore {
private val store: DataStore<BadCauses> by lazy {
DataStoreFactory.create(serializer = serializer) { File(Utils.getApp().filesDir, "bad_cases.pb") }
DataStoreFactory.create(serializer = serializer) {
File(
Utils.getApp().filesDir,
"bad_cases.pb"
)
}
}
suspend fun updateRecords(reasons: List<Reason>, isDriven: Boolean): BadCauses {
@@ -99,7 +104,10 @@ internal object BadCaseStore {
@OptIn(FlowPreview::class)
suspend fun records(isDriven: Boolean): List<Reason> {
CallerLogger.d("$M_DEVA${BadCaseManager.TAG}", "-- load cases from pb -- isDriven: $isDriven")
CallerLogger.d(
"$M_DEVA${BadCaseManager.TAG}",
"-- load cases from pb -- isDriven: $isDriven"
)
val causes = store.data.firstOrNull()
CallerLogger.d("$M_DEVA${BadCaseManager.TAG}", "-- load cases from pb -- result: $causes")
val list = if (isDriven) causes?.drivenDataList else causes?.drivingDataList

View File

@@ -64,7 +64,6 @@ dependencies {
implementation project(':core:mogo-core-data')
implementation project(':core:mogo-core-utils')
implementation project(':core:mogo-core-network')
implementation project(':core:mogo-core-function-api')
implementation project(':core:mogo-core-function-call')
}
}

View File

@@ -81,7 +81,6 @@ dependencies {
if (Boolean.valueOf(USE_MAVEN_PACKAGE)) {
api rootProject.ext.dependencies.mogoaicloudservicesdk
api rootProject.ext.dependencies.mogocommons
api rootProject.ext.dependencies.mogoserviceapi
api rootProject.ext.dependencies.mogoservice
api rootProject.ext.dependencies.mogomap
api rootProject.ext.dependencies.crashreportupgrade
@@ -102,7 +101,6 @@ dependencies {
api rootProject.ext.dependencies.mogo_core_function_devatools
api rootProject.ext.dependencies.mogo_core_function_carcorder
api rootProject.ext.dependencies.mogo_core_function_call
api rootProject.ext.dependencies.mogo_core_function_api
api rootProject.ext.dependencies.mogo_core_function_msgbox
implementation project(':libraries:map-usbcamera')
@@ -110,9 +108,6 @@ dependencies {
} else {
api project(':foudations:mogo-aicloud-services-sdk')
api project(':foudations:mogo-commons')
api project(':services:mogo-service-api')
api project(':libraries:mogo-map')
api project(':test:crashreport-upgrade')
// api project(':test:crashreport-bugly')
api project(':test:crashreport-apmbyte')
@@ -135,8 +130,6 @@ dependencies {
api project(':core:function-impl:mogo-core-function-datacenter')
api project(':core:mogo-core-function-call')
api project(':core:mogo-core-function-api')
api project(':libraries:mogo-adas')
api project(':libraries:map-usbcamera')
}

View File

@@ -125,15 +125,6 @@
android:name="MAP_SDK_VERSION111111"
android:value="${MAP_SDK_VERSION}" />
<service
android:name="com.mogo.eagle.core.function.main.service.MogoMainService"
android:enabled="true"
android:exported="true">
<intent-filter>
<action android:name="com.mogo.launcher.action.MAIN_SERVICE" />
</intent-filter>
</service>
<receiver android:name="com.mogo.eagle.core.function.hmi.receiver.V2XWarningBroadcastReceiver">
<intent-filter>
<action android:name="com.hmi.v2x.notification" />

View File

@@ -24,7 +24,7 @@ class ModifyBindingCarDialog(context: Context) : BaseFloatDialog(context), Lifec
private val statusChangedListenerForCheckNotice =
IMogoStatusChangedListener { descriptor, isTrue ->
if (descriptor == StatusDescriptor.MAIN_PAGE_IS_BACKGROUND) {
if (descriptor == StatusDescriptor.MAIN_PAGE_IS_BACKGROUND && isTrue) {
dismiss()
}
}

View File

@@ -23,7 +23,7 @@ class ToBindingCarDialog(context: Context) : BaseFloatDialog(context), Lifecycle
private var cancelTv: TextView? = null
private val statusChangedListenerForCheckNotice = IMogoStatusChangedListener { descriptor, isTrue ->
if (descriptor == StatusDescriptor.MAIN_PAGE_IS_BACKGROUND) {
if (descriptor == StatusDescriptor.MAIN_PAGE_IS_BACKGROUND && isTrue) {
dismiss()
}
}

View File

@@ -43,7 +43,7 @@ class NoticeCheckDialog(context: Context) : BaseFloatDialog(context), LifecycleO
private var playErrorImageView: ImageView? = null
private var connectTextView: TextView? = null
private val statusChangedListenerForCheckNotice = IMogoStatusChangedListener { descriptor, isTrue ->
if (descriptor == StatusDescriptor.MAIN_PAGE_IS_BACKGROUND) {
if (descriptor == StatusDescriptor.MAIN_PAGE_IS_BACKGROUND && isTrue) {
dismiss()
}
}

View File

@@ -443,7 +443,7 @@ public class NoticeTrafficDialog extends BaseFloatDialog implements LifecycleObs
}
private final IMogoStatusChangedListener statusChangedListenerForNotice = (descriptor, isTrue) -> {
if (descriptor == StatusDescriptor.MAIN_PAGE_IS_BACKGROUND) {
if (descriptor == StatusDescriptor.MAIN_PAGE_IS_BACKGROUND && isTrue) {
CallerLogger.INSTANCE.d(M_HMI + TAG, "onStatusChanged==MAIN_PAGE_IS_BACKGROUND");
dismiss();
}

View File

@@ -7,6 +7,7 @@ import android.content.ClipboardManager
import android.content.Context
import android.graphics.Color
import android.os.Build
import android.telecom.Call
import android.text.Html
import android.util.AttributeSet
import android.view.LayoutInflater
@@ -73,7 +74,6 @@ import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant
import com.mogo.eagle.core.utilcode.mogo.storage.SharedPrefsMgr
import com.mogo.eagle.core.utilcode.mogo.toast.TipToast
import com.mogo.eagle.core.utilcode.util.*
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.*
@@ -279,7 +279,7 @@ class DebugSettingView @JvmOverloads constructor(
}
btnOpenAllGestures.setOnClickListener {
MogoMapUIController.getInstance().setAllGesturesEnabled(true)
CallerMapUIServiceManager.getMapUIController()?.setAllGesturesEnabled(true)
}
/**

View File

@@ -5,8 +5,8 @@ import android.util.AttributeSet
import android.view.LayoutInflater
import android.view.View
import android.widget.FrameLayout
import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager.getMapUIController
import com.mogo.eagle.core.function.hmi.R
import com.mogo.map.MogoMapUIController
import com.mogo.map.uicontroller.VisualAngleMode
import kotlinx.android.synthetic.main.view_perspective_switch.view.*
@@ -28,25 +28,17 @@ class PerspectiveSwitchView @JvmOverloads constructor(
}
override fun onClick(v: View?) {
//切换地图的远近视图
if (MogoMapUIController.getInstance().currentMapVisualAngle.isLongSight) {
// MogoMarkerManager.getInstance(AbsMogoApplication.getApp())
// .visibleAllMarkers()
MogoMapUIController.getInstance()
.changeMapVisualAngle(VisualAngleMode.MODE_MEDIUM_SIGHT, null)
textSwitch.setText(R.string.module_map_model_normal)
} else if (MogoMapUIController.getInstance().currentMapVisualAngle.isMediumSight) {
// MogoMarkerManager.getInstance(AbsMogoApplication.getApp())
// .inVisibleWithoutMarkers(DataTypes.TYPE_MARKER_ADAS)
MogoMapUIController.getInstance()
.changeMapVisualAngle(VisualAngleMode.MODE_LONG_SIGHT, null)
textSwitch.setText(R.string.module_map_model_faster)
} else {
// MogoMarkerManager.getInstance(AbsMogoApplication.getApp())
// .visibleAllMarkers()
MogoMapUIController.getInstance()
.changeMapVisualAngle(VisualAngleMode.MODE_MEDIUM_SIGHT, null)
textSwitch.setText(R.string.module_map_model_normal)
getMapUIController()?.let {
if (it.currentMapVisualAngle.isLongSight) {
it.changeMapVisualAngle(VisualAngleMode.MODE_MEDIUM_SIGHT, null)
textSwitch.setText(R.string.module_map_model_normal)
} else if (it.currentMapVisualAngle.isMediumSight) {
it.changeMapVisualAngle(VisualAngleMode.MODE_LONG_SIGHT, null)
textSwitch.setText(R.string.module_map_model_faster)
} else {
it.changeMapVisualAngle(VisualAngleMode.MODE_LONG_SIGHT, null)
textSwitch.setText(R.string.module_map_model_faster)
}
}
}
}

View File

@@ -9,9 +9,9 @@ import com.mogo.eagle.core.data.map.MogoLocation
import com.mogo.eagle.core.function.api.map.listener.IMoGoMapLocationListener
import com.mogo.eagle.core.function.call.hmi.CallerHmiManager
import com.mogo.eagle.core.function.call.map.CallerMapLocationListenerManager
import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager
import com.mogo.eagle.core.function.hmi.R
import com.mogo.eagle.core.utilcode.util.UiThreadHandler
import com.mogo.map.MogoMapUIController
import java.util.*
/**
@@ -38,7 +38,7 @@ class SpeedPanelView @JvmOverloads constructor(
}
init {
initEvent(context)
initEvent()
setBackgroundResource(R.drawable.yi_biao_pan_bg_nor)
mContext = context
mSpeedChartView = SpeedChartView(context)
@@ -52,7 +52,7 @@ class SpeedPanelView @JvmOverloads constructor(
addView(mSpeedChartView)
}
private fun initEvent(context: Context) {
private fun initEvent() {
setOnLongClickListener {
CallerHmiManager.toggleDebugView()
false
@@ -69,8 +69,7 @@ class SpeedPanelView @JvmOverloads constructor(
val task = object : TimerTask() {
override fun run() {
mLatLng?.let {
mSpeedLimit = MogoMapUIController.getInstance()
.getLimitSpeed(it.longitude, it.latitude, it.bearing)
mSpeedLimit = CallerMapUIServiceManager.getMapUIController()!!.getLimitSpeed(it.longitude, it.latitude, it.bearing)
UiThreadHandler.post {
val speed = (it.speed * 3.6f).toInt()
mSpeedChartView.setArcColor(Color.parseColor(if (speed > mSpeedLimit) "#DB3137" else "#3E77F6"))

View File

@@ -1,283 +0,0 @@
package com.mogo.eagle.core.function.main;
import static com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.M_HMI;
import android.location.Location;
import android.view.MotionEvent;
import com.mogo.eagle.core.data.map.MogoLatLng;
import com.mogo.eagle.core.data.map.MogoLocation;
import com.mogo.eagle.core.function.main.registercenter.MogoRegisterCenterHandler;
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger;
import com.mogo.map.listener.IMogoMapListener;
import com.mogo.map.location.IMogoLocationListener;
import com.mogo.map.marker.IMogoMarker;
import com.mogo.map.marker.IMogoMarkerClickListener;
import com.mogo.map.model.MogoPoi;
import com.mogo.map.navi.IMogoCarLocationChangedListener;
import com.mogo.map.navi.IMogoCarLocationChangedListener2;
import com.mogo.map.uicontroller.EnumMapUI;
import com.mogo.map.uicontroller.VisualAngleMode;
import java.util.ArrayList;
import java.util.Iterator;
/**
* @author congtaowang
* @since 2020-04-24
* <p>
* 事件回调分发中心
*/
public class EventDispatchCenter implements
IMogoMarkerClickListener,
IMogoCarLocationChangedListener2,
IMogoMapListener,
IMogoLocationListener {
private static volatile EventDispatchCenter sInstance;
private Runnable mMapLoadedCallback;
private EventDispatchCenter() {
}
public static EventDispatchCenter getInstance() {
if (sInstance == null) {
synchronized (EventDispatchCenter.class) {
if (sInstance == null) {
sInstance = new EventDispatchCenter();
}
}
}
return sInstance;
}
private static final String TAG = "DispatchCenter";
@Override
public boolean onMarkerClicked(IMogoMarker marker) {
IMogoMarkerClickListener listener = MogoRegisterCenterHandler.getInstance().getMarkerListener(marker.getOwner());
if (listener != null) {
try {
return listener.onMarkerClicked(marker);
} catch (Exception e) {
CallerLogger.INSTANCE.e(M_HMI + TAG, "onMarkerClicked error : " + e);
}
}
return false;
}
@Override
public boolean onStaticMarkerClicked(IMogoMarker marker) {
ArrayList<IMogoMarkerClickListener> list = MogoRegisterCenterHandler.getInstance().getStaticMarkerListener(marker.getOwner());
if (list == null) {
return false;
}
try {
for (IMogoMarkerClickListener listener : list) {
return listener.onStaticMarkerClicked(marker);
}
} catch (Exception e) {
CallerLogger.INSTANCE.e(M_HMI + TAG, "onStaticMarkerClicked error : " + e);
}
return false;
}
@Override
public void onCarLocationChanged2(Location latLng) {
Iterator<IMogoCarLocationChangedListener> iterator = MogoRegisterCenterHandler.getInstance().getCarLocationChangedListener();
if (iterator == null) {
return;
}
MogoLatLng target = null;
while (iterator.hasNext()) {
IMogoCarLocationChangedListener listener = iterator.next();
if (listener instanceof IMogoCarLocationChangedListener2) {
try {
((IMogoCarLocationChangedListener2) listener).onCarLocationChanged2(latLng);
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
/**
* 地图加载完成回调
*
* @param callback
*/
void setMapLoadedCallback(Runnable callback) {
this.mMapLoadedCallback = callback;
}
@Override
public void onMapLoaded() {
if (mMapLoadedCallback != null) {
mMapLoadedCallback.run();
mMapLoadedCallback = null;
}
Iterator<IMogoMapListener> iterator = MogoRegisterCenterHandler.getInstance().getMapListeners();
if (iterator == null) {
return;
}
while (iterator.hasNext()) {
IMogoMapListener listener = iterator.next();
if (listener != null) {
try {
listener.onMapLoaded();
} catch (Exception e) {
CallerLogger.INSTANCE.e(M_HMI + TAG, "onMapLoaded error : " + e);
}
}
}
}
@Override
public void onTouch(MotionEvent motionEvent) {
Iterator<IMogoMapListener> iterator = MogoRegisterCenterHandler.getInstance().getMapListeners();
if (iterator == null) {
return;
}
while (iterator.hasNext()) {
IMogoMapListener listener = iterator.next();
if (listener != null) {
try {
listener.onTouch(motionEvent);
} catch (Exception e) {
CallerLogger.INSTANCE.e(M_HMI + TAG, "onTouch error : " + e);
}
}
}
}
@Override
public void onPOIClick(MogoPoi poi) {
Iterator<IMogoMapListener> iterator = MogoRegisterCenterHandler.getInstance().getMapListeners();
if (iterator == null) {
return;
}
while (iterator.hasNext()) {
IMogoMapListener listener = iterator.next();
if (listener != null) {
try {
listener.onPOIClick(poi);
} catch (Exception e) {
CallerLogger.INSTANCE.e(M_HMI + TAG, "onPOIClick error : " + e);
}
}
}
}
@Override
public void onMapClick(MogoLatLng latLng) {
Iterator<IMogoMapListener> iterator = MogoRegisterCenterHandler.getInstance().getMapListeners();
if (iterator == null) {
return;
}
while (iterator.hasNext()) {
IMogoMapListener listener = iterator.next();
if (listener != null) {
try {
listener.onMapClick(latLng);
} catch (Exception e) {
CallerLogger.INSTANCE.e(M_HMI + TAG, "onMapClick error : " + e);
}
}
}
}
@Override
public void onLockMap(boolean isLock) {
Iterator<IMogoMapListener> iterator = MogoRegisterCenterHandler.getInstance().getMapListeners();
if (iterator == null) {
return;
}
while (iterator.hasNext()) {
IMogoMapListener listener = iterator.next();
if (listener != null) {
try {
listener.onLockMap(isLock);
} catch (Exception e) {
CallerLogger.INSTANCE.e(M_HMI + TAG, "onLockMap error : " + e);
}
}
}
}
@Override
public void onMapModeChanged(EnumMapUI ui) {
Iterator<IMogoMapListener> iterator = MogoRegisterCenterHandler.getInstance().getMapListeners();
if (iterator == null) {
return;
}
while (iterator.hasNext()) {
IMogoMapListener listener = iterator.next();
if (listener != null) {
try {
listener.onMapModeChanged(ui);
} catch (Exception e) {
CallerLogger.INSTANCE.e(M_HMI + TAG, "onMapModeChanged error :" + e);
}
}
}
}
@Override
public void onMapVisualAngleChanged(VisualAngleMode visualAngleMode) {
Iterator<IMogoMapListener> iterator = MogoRegisterCenterHandler.getInstance().getMapListeners();
if (iterator == null) {
return;
}
while (iterator.hasNext()) {
IMogoMapListener listener = iterator.next();
if (listener != null) {
try {
listener.onMapVisualAngleChanged(visualAngleMode);
} catch (Exception e) {
CallerLogger.INSTANCE.e(M_HMI + TAG, "onMapVisualAngleChanged error : " + e);
}
}
}
}
@Override
public void onMapChanged(MogoLatLng location, float zoom, float tilt, float bearing) {
Iterator<IMogoMapListener> iterator = MogoRegisterCenterHandler.getInstance().getMapListeners();
if (iterator == null) {
return;
}
while (iterator.hasNext()) {
IMogoMapListener listener = iterator.next();
if (listener != null) {
try {
listener.onMapChanged(location, zoom, tilt, bearing);
} catch (Exception e) {
CallerLogger.INSTANCE.e(M_HMI + TAG, "onMapChanged error :" + e);
}
}
}
}
@Override
public void onLocationChanged(MogoLocation location) {
Iterator<IMogoLocationListener> iterator = MogoRegisterCenterHandler.getInstance().getLocationListeners();
if (iterator == null) {
return;
}
while (iterator.hasNext()) {
IMogoLocationListener listener = iterator.next();
if (listener != null) {
try {
listener.onLocationChanged(location);
} catch (Exception e) {
CallerLogger.INSTANCE.e(M_HMI + TAG, "onLocationChanged error : " + e);
}
}
}
}
}

View File

@@ -6,7 +6,6 @@ import static com.mogo.eagle.core.data.deva.chain.ChainConstant.CHAIN_LINK_LOG_N
import static com.mogo.eagle.core.function.main.MainPresenter.MOGO_PERMISSION_REQUEST_CODE;
import static com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.M_HMI;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.os.Build;
import android.os.Bundle;
@@ -36,15 +35,14 @@ import com.mogo.commons.mvp.BaseFragment;
import com.mogo.commons.mvp.MvpActivity;
import com.mogo.commons.mvp.MvpFragment;
import com.mogo.eagle.core.data.autopilot.AutopilotStatusInfo;
import com.mogo.eagle.core.data.config.HdMapBuildConfig;
import com.mogo.eagle.core.data.constants.MoGoFragmentPaths;
import com.mogo.eagle.core.data.map.MogoLocation;
import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener;
import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager;
import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager;
import com.mogo.eagle.core.function.hmi.R;
import com.mogo.eagle.core.function.hmi.ui.widget.StatusBarView;
import com.mogo.eagle.core.function.main.cards.MogoModulesManager;
import com.mogo.eagle.core.function.main.service.MogoMainService;
import com.mogo.eagle.core.function.main.modules.MogoModulesManager;
import com.mogo.eagle.core.function.main.stagetwo.AutopilotStartup;
import com.mogo.eagle.core.function.main.windowview.FloatingViewHandler;
import com.mogo.eagle.core.utilcode.mogo.AppLaunchTimeUtils;
@@ -54,9 +52,9 @@ import com.mogo.eagle.core.utilcode.mogo.toast.ResourcesHelper;
import com.mogo.eagle.core.utilcode.util.BarUtils;
import com.mogo.eagle.core.utilcode.util.NetworkUtils;
import com.mogo.eagle.core.utilcode.util.ProcessUtils;
import com.mogo.map.listener.IMogoHosListenerRegister;
import com.mogo.eagle.core.utilcode.util.UiThreadHandler;
import com.mogo.map.listener.IMogoMapListener;
import com.mogo.map.listener.MogoMapListenerHandler;
import com.mogo.map.location.IMogoLocationListener;
import com.mogo.map.uicontroller.EnumMapUI;
import com.mogo.map.uicontroller.IMogoMapUIController;
import com.rousetime.android_startup.StartupManager;
@@ -81,7 +79,6 @@ import system_master.SystemStatusInfo;
* 描述:加载各个模块
*/
public class MainActivity extends MvpActivity<MainView, MainPresenter> implements MainView,
IMogoLocationListener,
IMoGoAutopilotStatusListener {
protected static final String TAG = "MainActivity";
@@ -129,8 +126,8 @@ public class MainActivity extends MvpActivity<MainView, MainPresenter> implement
}
private void injectStatusBar() {
FrameLayout decorView =(FrameLayout) this.getWindow().getDecorView();
View contentView = ((ViewGroup)decorView.findViewById(android.R.id.content)).getChildAt(0);
FrameLayout decorView = (FrameLayout) this.getWindow().getDecorView();
View contentView = ((ViewGroup) decorView.findViewById(android.R.id.content)).getChildAt(0);
contentView.setFitsSystemWindows(false);
decorView.setClipToPadding(false);
@@ -228,29 +225,25 @@ public class MainActivity extends MvpActivity<MainView, MainPresenter> implement
@Override
public void loadModules() {
final long start = System.currentTimeMillis();
MogoModulesManager.getInstance().init(this);
IMogoHosListenerRegister listenerRegister = CallerMapUIServiceManager.INSTANCE.getHostListenerRegister();
if (listenerRegister != null) {
listenerRegister.registerHostMapListener(TAG,EventDispatchCenter.getInstance());
listenerRegister.registerMarkerClickListener(TAG, EventDispatchCenter.getInstance());
}
MogoMapListenerHandler.Companion.getMogoMapListenerHandler().registerHostMapListener(TAG, new IMogoMapListener() {
@Override
public void onMapLoaded() {
// 延时加载其他模块
getWindow().getDecorView().post(() -> {
HdMapBuildConfig.isMapLoaded = true;
loadOthersModules();
loadFunctionFragment();
EventDispatchCenter.getInstance().setMapLoadedCallback(() -> {
CallerLogger.INSTANCE.d(M_HMI + TAG, "map loaded." + Thread.currentThread().getName());
// 延时加载其他模块
getWindow().getDecorView().post(() -> {
loadOthersModules();
loadFunctionFragment();
// TODO 这里临时兼容进入VR模式标记状态机。有些业务OCH会根据状态判断加载
MogoStatusManager.getInstance().setVrMode(TAG, true);
// 设置地图样式
MogoMapListenerHandler.Companion.getMogoMapListenerHandler().onMapModeChanged(EnumMapUI.MAP_STYLE_DAY_VR);
});
CallerLogger.INSTANCE.i(M_HMI + TAG, "App launch timer cost " + (System.currentTimeMillis() - start) + "ms");
// TODO 这里临时兼容进入VR模式标记状态机。有些业务OCH会根据状态判断加载
MogoStatusManager.getInstance().setVrMode(TAG, true);
// 设置地图样式
MogoMapListenerHandler.Companion.getMogoMapListenerHandler().onMapModeChanged(EnumMapUI.MAP_STYLE_DAY_VR);
});
CallerLogger.INSTANCE.i(M_HMI + TAG, "App launch timer cost " + (System.currentTimeMillis() - start) + "ms");
}
});
// 加载地图
loadFunctionMapView();
}
@@ -263,27 +256,16 @@ public class MainActivity extends MvpActivity<MainView, MainPresenter> implement
MogoModulesManager.getInstance().loadFunctionModules();
mPresenter.delayOperations();
MogoModulesManager.getInstance().loadFunctionModulesServer();
// 启动一些基本的服务:定位等
startBaseService();
UiThreadHandler.postDelayed(() -> {
CallerLogger.INSTANCE.d(M_HMI + TAG, "5秒已过启动基础服务……");
MogoModulesManager.getInstance().loadBaseModule();
}, 5_000L);
if (DebugConfig.isDebug()) {
// 启动Native内存泄漏监测
startLeakMonitor();
}
}
/**
* 启动后台服务
*/
private void startBaseService() {
Intent intentMainService = new Intent(this, MogoMainService.class);
startService(intentMainService);
// USB 摄像头行车记录仪进程
// Intent intentCarcorderService = new Intent(this, CarcorderService.class);
// startService(intentCarcorderService);
}
private void startLeakMonitor() {
LeakMonitorConfig leakMonitorConfig = new LeakMonitorConfig.Builder()
.setLoopInterval(50000)
@@ -355,16 +337,11 @@ public class MainActivity extends MvpActivity<MainView, MainPresenter> implement
return new MainPresenter(this);
}
@Override
public void onLocationChanged(MogoLocation location) {
EventDispatchCenter.getInstance().onLocationChanged(location);
}
@Override
protected void onResume() {
super.onResume();
MogoStatusManager.getInstance().setMainPageResumeStatus(TAG, true);
MogoStatusManager.getInstance().setMainPageIsBackgroundStatus(TAG, true);
MogoStatusManager.getInstance().setMainPageIsBackgroundStatus(TAG, false);
}
@Override
@@ -379,16 +356,6 @@ public class MainActivity extends MvpActivity<MainView, MainPresenter> implement
MogoStatusManager.getInstance().setMainPageIsBackgroundStatus(TAG, true);
}
@Override
public void onBackPressed() {
}
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
}
@Override
public void onAutopilotStatusResponse(@NonNull AutopilotStatusInfo autoPilotStatusInfo) {
int status = autoPilotStatusInfo.getIpcConnStatus();
@@ -434,11 +401,7 @@ public class MainActivity extends MvpActivity<MainView, MainPresenter> implement
protected void onDestroy() {
super.onDestroy();
CallerAutoPilotStatusListenerManager.INSTANCE.removeListener(TAG);
IMogoHosListenerRegister listenerRegister = CallerMapUIServiceManager.INSTANCE.getHostListenerRegister();
if (listenerRegister != null) {
listenerRegister.unregisterMarkerClickListener(TAG);
listenerRegister.unregisterHostMapListener(TAG);
}
MogoMapListenerHandler.Companion.getMogoMapListenerHandler().unregisterHostMapListener(TAG);
IMogoMapUIController mapUIController = CallerMapUIServiceManager.INSTANCE.getMapUIController();
if (mapUIController != null) {
mapUIController.destroy();

View File

@@ -1,4 +1,4 @@
package com.mogo.eagle.core.function.main.cards;
package com.mogo.eagle.core.function.main.modules;
import static com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.M_HMI;

View File

@@ -1,75 +0,0 @@
package com.mogo.eagle.core.function.main.monitoring;
import static com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.M_HMI;
import android.content.Context;
import android.os.Handler;
import android.os.Message;
import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener;
import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager;
import com.mogo.eagle.core.function.call.check.CallerCheckManager;
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger;
/**
* @author liujing
* @description 车辆监控,暂时隐藏该功能
* @since: 8/16/21
*/
public class VehicleMonitoring implements Handler.Callback {
private static final String TAG = "VehicleMonitoring";
private final Context mContext;
private final Handler mHandler = new Handler(this);
//自动驾驶状态下**分钟间隔弹框提示一次 后期根据需求做修改,暂定30秒自检一次
private static final long AUTO_CHECK_STATUS_DELAY = 30 * 1000;
//非自动驾驶测试数据 后期根据需求做修改
private static final long MANUAL_CHECK_STATUS_DELAY = 30 * 1000;
//自动驾驶状态
private static int AutopilotStatus = CallerAutoPilotStatusListenerManager.INSTANCE.getAutoPilotStatusInfo().getState();
public VehicleMonitoring(Context context) {
mContext = context;
}
public void vehicleCheck() {
//暂时隐藏自检功能
/**
*
if (AutopilotStatus == IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING) {
CallerLogger.INSTANCE.d(M_HMI + TAG, "自动驾驶中...");
mHandler.sendEmptyMessageDelayed(AutopilotStatus, AUTO_CHECK_STATUS_DELAY);
} else {
CallerLogger.INSTANCE.d(M_HMI + TAG, "非自动驾驶状态");
//非自动驾驶状态只展示一次
mHandler.sendEmptyMessageDelayed(AutopilotStatus, MANUAL_CHECK_STATUS_DELAY);
}
*/
}
@Override
public boolean handleMessage(Message msg) {
// AutopilotStatus = CallerAutoPilotStatusListenerManager.INSTANCE.getAutoPilotStatusInfo().getState();
// switch (msg.what) {
// case IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING:
// vehicleMonitor();
// mHandler.sendEmptyMessageDelayed(AutopilotStatus, AUTO_CHECK_STATUS_DELAY);
// return true;
// case IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_DISABLE:
// case IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_ENABLE:
// vehicleMonitor();
// mHandler.sendEmptyMessageDelayed(AutopilotStatus, MANUAL_CHECK_STATUS_DELAY);
// return true;
// default:
// }
return false;
}
public void vehicleMonitor() {
CallerLogger.INSTANCE.d(M_HMI + TAG, "vehicleMonitor");
CallerCheckManager.checkMonitor(mContext);
}
}

View File

@@ -1,82 +0,0 @@
package com.mogo.eagle.core.function.main.registercenter;
import android.content.Context;
import com.alibaba.android.arouter.facade.annotation.Route;
import com.mogo.eagle.core.data.constants.MogoServicePaths;
import com.mogo.map.listener.IMogoMapListener;
import com.mogo.map.location.IMogoLocationListener;
import com.mogo.map.marker.IMogoMarkerClickListener;
import com.mogo.map.navi.IMogoCarLocationChangedListener;
import com.mogo.service.module.IMogoRegisterCenter;
import java.util.Iterator;
/**
* @author congtaowang
* @since 2020-01-09
* <p>
* 描述
*/
@Route(path = MogoServicePaths.PATH_REGISTER_CENTER)
public class MogoRegisterCenter implements IMogoRegisterCenter {
@Override
public void registerMogoMapListener(String moduleName, IMogoMapListener listener) {
MogoRegisterCenterHandler.getInstance().registerMogoMapListener(moduleName, listener);
}
@Override
public void unregisterMogoMapListener(String moduleName) {
MogoRegisterCenterHandler.getInstance().unregisterMogoMapListener(moduleName);
}
@Override
public void registerMogoLocationListener(String moduleName, IMogoLocationListener listener) {
MogoRegisterCenterHandler.getInstance().registerMogoLocationListener(moduleName, listener);
}
@Override
public Iterator<IMogoLocationListener> getLocationListeners() {
return MogoRegisterCenterHandler.getInstance().getLocationListeners();
}
@Override
public void unregisterMogoLocationListener(String moduleName) {
MogoRegisterCenterHandler.getInstance().unregisterMogoLocationListener(moduleName);
}
@Override
public void registerMogoMarkerClickListener(String moduleName, IMogoMarkerClickListener listener) {
MogoRegisterCenterHandler.getInstance().registerMogoMarkerClickListener(moduleName, listener);
}
@Override
public void unregisterMogoMarkerClickListener(String moduleName) {
MogoRegisterCenterHandler.getInstance().unregisterMogoMarkerClickListener(moduleName);
}
@Override
public void registerMogoStaticMarkerClickListener(String tag, IMogoMarkerClickListener listener) {
MogoRegisterCenterHandler.getInstance().registerMogoStaticMarkerClickListener(tag, listener);
}
@Override
public void unregisterMogoStaticMarkerClickListener(String tag, IMogoMarkerClickListener listener ) {
MogoRegisterCenterHandler.getInstance().unregisterMogoStaticMarkerClickListener(tag, listener);
}
@Override
public void registerCarLocationChangedListener(String tag, IMogoCarLocationChangedListener listener) {
MogoRegisterCenterHandler.getInstance().registerCarLocationChangedListener(tag, listener);
}
@Override
public void unregisterCarLocationChangedListener(String tag, IMogoCarLocationChangedListener listener) {
MogoRegisterCenterHandler.getInstance().unregisterCarLocationChangedListener(tag, listener);
}
@Override
public void init(Context context) {
}
}

View File

@@ -1,137 +0,0 @@
package com.mogo.eagle.core.function.main.registercenter;
import android.content.Context;
import com.mogo.map.listener.IMogoMapListener;
import com.mogo.map.location.IMogoLocationListener;
import com.mogo.map.marker.IMogoMarkerClickListener;
import com.mogo.map.navi.IMogoCarLocationChangedListener;
import com.mogo.service.module.IMogoRegisterCenter;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
/**
* @author congtaowang
* @since 2020-01-09
* <p>
* 描述
*/
public class MogoRegisterCenterHandler implements IMogoRegisterCenter {
private static volatile MogoRegisterCenterHandler sInstance;
private final Map<String, IMogoMapListener> mMap = new HashMap<>();
private final Map<String, IMogoLocationListener> mLocation = new HashMap<>();
private final Map<String, IMogoMarkerClickListener> mMarker = new HashMap<>();
private final Map<String, ArrayList<IMogoMarkerClickListener>> mStaticMarker = new HashMap<>();
private final Map<String, IMogoCarLocationChangedListener> mCarLocations = new ConcurrentHashMap<>();
private MogoRegisterCenterHandler() {
}
public static MogoRegisterCenterHandler getInstance() {
if (sInstance == null) {
synchronized (MogoRegisterCenterHandler.class) {
if (sInstance == null) {
sInstance = new MogoRegisterCenterHandler();
}
}
}
return sInstance;
}
public synchronized void release() {
sInstance = null;
}
@Override
public void registerMogoMapListener(String tag, IMogoMapListener listener) {
mMap.put(tag, listener);
}
@Override
public void unregisterMogoMapListener(String tag) {
mMap.remove(tag);
}
@Override
public void registerMogoLocationListener(String tag, IMogoLocationListener listener) {
mLocation.put(tag, listener);
}
@Override
public void unregisterMogoLocationListener(String tag) {
mLocation.remove(tag);
}
@Override
public void registerMogoMarkerClickListener(String tag, IMogoMarkerClickListener listener) {
mMarker.put(tag, listener);
}
@Override
public void unregisterMogoMarkerClickListener(String tag) {
mMarker.remove(tag);
}
@Override
public void registerMogoStaticMarkerClickListener(String tag, IMogoMarkerClickListener listener) {
ArrayList<IMogoMarkerClickListener> list = mStaticMarker.get(tag);
if (list == null) {
list = new ArrayList<>();
list.add(listener);
mStaticMarker.put(tag, list);
}
list.add(listener);
mStaticMarker.put(tag, list);
}
@Override
public void unregisterMogoStaticMarkerClickListener(String tag, IMogoMarkerClickListener listener) {
ArrayList<IMogoMarkerClickListener> list = mStaticMarker.get(tag);
if (list == null) {
return;
}
list.remove(listener);
}
@Override
public void registerCarLocationChangedListener(String tag, IMogoCarLocationChangedListener listener) {
mCarLocations.put(tag, listener);
}
@Override
public void unregisterCarLocationChangedListener(String tag, IMogoCarLocationChangedListener listener) {
mCarLocations.remove(tag);
}
@Override
public void init(Context context) {
}
public IMogoMarkerClickListener getMarkerListener(String tag) {
return mMarker.get(tag);
}
public ArrayList<IMogoMarkerClickListener> getStaticMarkerListener(String tag){
return mStaticMarker.get(tag);
}
public Iterator<IMogoMapListener> getMapListeners() {
return mMap.values().iterator();
}
@Override
public Iterator<IMogoLocationListener> getLocationListeners() {
return mLocation.values().iterator();
}
public Iterator<IMogoCarLocationChangedListener> getCarLocationChangedListener() {
return mCarLocations.values().iterator();
}
}

View File

@@ -1,106 +0,0 @@
package com.mogo.eagle.core.function.main.service;
import static com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.M_HMI;
import android.app.Service;
import android.content.Intent;
import android.os.IBinder;
import androidx.annotation.Nullable;
import com.alibaba.android.arouter.facade.annotation.Route;
import com.mogo.commons.AbsMogoApplication;
import com.mogo.eagle.core.data.config.HdMapBuildConfig;
import com.mogo.eagle.core.data.map.MogoLocation;
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger;
import com.mogo.eagle.core.function.main.EventDispatchCenter;
import com.mogo.eagle.core.function.main.cards.MogoModulesManager;
import com.mogo.eagle.core.function.main.monitoring.VehicleMonitoring;
import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager;
import com.mogo.eagle.core.utilcode.util.UiThreadHandler;
import com.mogo.map.location.IMogoLocationClient;
import com.mogo.map.location.IMogoLocationListener;
import com.mogo.map.navi.MogoCarLocationChangedListenerRegister;
public
/**
* @author congtaowang
* @since 2020/6/10
*
* 描述
*/
@Route(path = "/service/base/info")
class MogoMainService extends Service implements IMogoLocationListener {
private static final String TAG = "MogoMainService";
/**
* 主模块管控定位,可以向各个模块发送统一定位信息
*/
private IMogoLocationClient mLocationClient;
@Override
public void onCreate() {
CallerLogger.INSTANCE.d(M_HMI + TAG, "基本服务启动");
initAndStartLocation();
UiThreadHandler.postDelayed(() -> {
CallerLogger.INSTANCE.d(M_HMI + TAG, "5秒已过启动基础服务……");
loadBaseModules();
initGpsSimulatorListener();
HdMapBuildConfig.isMapLoaded = true;
}, 5_000L
);
// 车辆检测
VehicleMonitoring monitoring = new VehicleMonitoring(this);
monitoring.vehicleCheck();
}
@Nullable
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
return START_NOT_STICKY;
}
private void initAndStartLocation() {
CallerLogger.INSTANCE.d(M_HMI + TAG, "开始定位");
mLocationClient = CallerMapUIServiceManager.INSTANCE.getSingletonLocationClient(AbsMogoApplication.getApp());
if (mLocationClient != null) {
mLocationClient.addLocationListener(this);
mLocationClient.start(2_000L);
}
}
/**
* 初始化自车定位监听
*/
private void initGpsSimulatorListener() {
CallerLogger.INSTANCE.d(M_HMI + TAG, "注册自车位置监听");
MogoCarLocationChangedListenerRegister.getInstance().registerCarLocationChangedListener(EventDispatchCenter.getInstance());
}
private void loadBaseModules() {
CallerLogger.INSTANCE.d(M_HMI + TAG, "加载基本模块");
MogoModulesManager.getInstance().loadBaseModule();
}
@Override
public void onLocationChanged(MogoLocation location) {
EventDispatchCenter.getInstance().onLocationChanged(location);
}
@Override
public void onDestroy() {
super.onDestroy();
if (mLocationClient != null) {
mLocationClient.removeLocationListener(this);
mLocationClient.stop();
mLocationClient.destroy();
mLocationClient = null;
}
}
}

View File

@@ -69,28 +69,20 @@ dependencies {
implementation rootProject.ext.dependencies.lifecycle_extension
if (Boolean.valueOf(USE_MAVEN_PACKAGE)) {
implementation rootProject.ext.dependencies.mogoserviceapi
implementation rootProject.ext.dependencies.mogo_core_res
implementation rootProject.ext.dependencies.mogo_core_data
implementation rootProject.ext.dependencies.mogo_core_utils
implementation rootProject.ext.dependencies.mogo_core_function_api
implementation rootProject.ext.dependencies.mogo_core_function_call
implementation rootProject.ext.dependencies.mogomap
implementation rootProject.ext.dependencies.mogomapapi
} else {
implementation project(':services:mogo-service-api')
implementation project(':foudations:mogo-commons')
implementation project(':core:mogo-core-res')
implementation project(':core:mogo-core-data')
implementation project(':core:mogo-core-utils')
implementation project(':core:mogo-core-function-api')
implementation project(':core:mogo-core-function-call')
implementation project(":libraries:mogo-map")
implementation project(":libraries:mogo-map-api")
}
}

View File

@@ -15,6 +15,8 @@ import com.mogo.map.MogoPoiSearch;
import com.mogo.map.MogoTrafficSearch;
import com.mogo.map.listener.IMogoHosListenerRegister;
import com.mogo.map.listener.MogoHosListenerRegister;
import com.mogo.map.location.GDLocationClient;
import com.mogo.map.location.IMogoGDLocationClient;
import com.mogo.map.location.IMogoLocationClient;
import com.mogo.map.marker.IMogoMarkerManager;
import com.mogo.map.overlay.IMogoOverlayManager;
@@ -78,6 +80,11 @@ public class MogoMapService implements IMogoMapService {
return new MogoTrafficSearch();
}
@Override
public IMogoGDLocationClient getGDLocationServer(Context context) {
return GDLocationClient.getInstance(context);
}
@Override
public void init(Context context) {
CallerVisualAngleManager.INSTANCE.init(context);

View File

@@ -55,13 +55,11 @@ dependencies {
implementation rootProject.ext.dependencies.mogo_core_utils
implementation rootProject.ext.dependencies.mogo_core_res
implementation rootProject.ext.dependencies.mogo_core_data
implementation rootProject.ext.dependencies.mogo_core_function_api
implementation rootProject.ext.dependencies.mogo_core_function_call
} else {
implementation project(':core:mogo-core-utils')
implementation project(':core:mogo-core-res')
implementation project(':core:mogo-core-data')
implementation project(':core:mogo-core-function-api')
implementation project(':core:mogo-core-function-call')
implementation project(":foudations:mogo-commons")
}

View File

@@ -66,8 +66,6 @@ dependencies {
if (Boolean.valueOf(USE_MAVEN_PACKAGE)) {
implementation rootProject.ext.dependencies.mogocommons
implementation rootProject.ext.dependencies.mogoserviceapi
implementation rootProject.ext.dependencies.mogo_core_data
implementation rootProject.ext.dependencies.mogo_core_utils
implementation rootProject.ext.dependencies.mogo_core_res
@@ -75,8 +73,6 @@ dependencies {
implementation rootProject.ext.dependencies.mogo_core_function_call
} else {
implementation project(":foudations:mogo-commons")
implementation project(':services:mogo-service-api')
implementation project(':core:mogo-core-data')
implementation project(':core:mogo-core-utils')
implementation project(':core:mogo-core-res')

View File

@@ -51,14 +51,9 @@ dependencies {
kapt rootProject.ext.dependencies.aroutercompiler
if (Boolean.valueOf(USE_MAVEN_PACKAGE)) {
api rootProject.ext.dependencies.mogoserviceapi
implementation rootProject.ext.dependencies.mogo_core_data
implementation rootProject.ext.dependencies.mogo_core_utils
implementation rootProject.ext.dependencies.mogo_core_function_call
} else {
api project(':services:mogo-service-api')
implementation project(':core:mogo-core-data')
implementation project(':core:mogo-core-utils')
implementation project(':core:mogo-core-function-call')

View File

@@ -57,19 +57,15 @@ dependencies {
implementation rootProject.ext.dependencies.mogocommons
implementation rootProject.ext.dependencies.mogo_core_data
implementation rootProject.ext.dependencies.mogo_core_utils
implementation rootProject.ext.dependencies.mogo_core_function_api
implementation rootProject.ext.dependencies.mogo_core_function_call
implementation rootProject.ext.dependencies.mogo_core_res
} else {
implementation project(":foudations:mogo-commons")
implementation project(':core:mogo-core-data')
implementation project(':core:mogo-core-utils')
implementation project(':core:mogo-core-function-api')
implementation project(':core:mogo-core-function-call')
implementation project(':core:mogo-core-res')
implementation project(':libraries:mogo-adas')
implementation project(":libraries:mogo-map-api")
implementation project(":libraries:mogo-map")
}
}

View File

@@ -5,14 +5,14 @@ import static com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.M_V2X
import android.content.Context;
import com.alibaba.android.arouter.facade.annotation.Route;
import com.mogo.commons.AbsMogoApplication;
import com.mogo.eagle.core.data.map.MogoLatLng;
import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager;
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger;
import com.mogo.eagle.core.function.v2x.events.bridge.BridgeApi;
import com.mogo.eagle.core.function.v2x.events.consts.MoGoV2XServicePaths;
import com.mogo.eagle.core.function.v2x.events.consts.V2XConst;
import com.mogo.eagle.core.function.v2x.events.entity.model.DrawLineInfo;
import com.mogo.eagle.core.function.v2x.events.manager.IMoGoPersonWarnPolylineManager;
import com.mogo.map.MogoOverlayManager;
import com.mogo.map.overlay.IMogoOverlayManager;
import com.mogo.map.overlay.IMogoPolyline;
import com.mogo.map.overlay.MogoPolylineOptions;
@@ -55,7 +55,7 @@ public class MoGoPersonWarnPolylineManager implements IMoGoPersonWarnPolylineMan
options.add(locations.get(i));
}
// 绘制线的对象
IMogoOverlayManager overlay = MogoOverlayManager.getInstance();
IMogoOverlayManager overlay = CallerMapUIServiceManager.INSTANCE.getOverlayManager(AbsMogoApplication.getApp());
if (overlay != null) {
mMogoPolyline = overlay.addPolyline(options);
mMogoPolyline.setTransparency(0.5f);

View File

@@ -5,14 +5,14 @@ import static com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.M_V2X
import android.content.Context;
import com.alibaba.android.arouter.facade.annotation.Route;
import com.mogo.commons.AbsMogoApplication;
import com.mogo.eagle.core.data.map.MogoLatLng;
import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager;
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger;
import com.mogo.eagle.core.function.v2x.events.bridge.BridgeApi;
import com.mogo.eagle.core.function.v2x.events.consts.MoGoV2XServicePaths;
import com.mogo.eagle.core.function.v2x.events.consts.V2XConst;
import com.mogo.eagle.core.function.v2x.events.entity.model.DrawLineInfo;
import com.mogo.eagle.core.function.v2x.events.manager.IMoGoStopPolylineManager;
import com.mogo.map.MogoOverlayManager;
import com.mogo.map.overlay.IMogoOverlayManager;
import com.mogo.map.overlay.IMogoPolyline;
import com.mogo.map.overlay.MogoPolylineOptions;
@@ -54,7 +54,7 @@ public class MoGoStopPolylineManager implements IMoGoStopPolylineManager {
options.add(locations.get(i));
}
// 绘制线的对象
IMogoOverlayManager overlay = MogoOverlayManager.getInstance();
IMogoOverlayManager overlay = CallerMapUIServiceManager.INSTANCE.getOverlayManager(AbsMogoApplication.getApp());
if (overlay != null) {
mMogoPolyline = overlay.addPolyline(options);
}

View File

@@ -27,7 +27,6 @@ import com.mogo.eagle.core.function.v2x.events.marker.V2XMarkerAdapter;
import com.mogo.eagle.core.function.v2x.events.utils.EntityUtilsKt;
import com.mogo.eagle.core.function.v2x.events.utils.MapUtils;
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger;
import com.mogo.map.MogoMarkerManager;
import com.mogo.map.marker.IMogoMarker;
import com.mogo.map.marker.IMogoMarkerClickListener;
import com.mogo.map.marker.IMogoMarkerManager;
@@ -164,7 +163,7 @@ public class MoGoV2XMarkerManager implements IMoGoV2XMarkerManager {
mAlarmInfoMarker = Objects.requireNonNull(CallerMapUIServiceManager.INSTANCE.getMarkerService()).drawMarker(markerShowEntity);
} else {
optionsRipple.icon(V2XMarkerAdapter.getV2XRoadEventViewPng(context, roadEventEntity));
IMogoMarkerManager marker = MogoMarkerManager.getInstance(context);
IMogoMarkerManager marker = CallerMapUIServiceManager.INSTANCE.getMarkerManager(context);
if (marker != null) {
mAlarmInfoMarker = marker.addMarker(V2X_EVENT_ALARM_POI, optionsRipple);
}
@@ -210,7 +209,7 @@ public class MoGoV2XMarkerManager implements IMoGoV2XMarkerManager {
@Override
public void clearALLPOI() {
try {
IMogoMarkerManager markerManager = MogoMarkerManager.getInstance(AbsMogoApplication.getApp());
IMogoMarkerManager markerManager = CallerMapUIServiceManager.INSTANCE.getMarkerManager(AbsMogoApplication.getApp());
if (markerManager != null) {
markerManager.removeMarkers();
}

View File

@@ -5,13 +5,13 @@ import static com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.M_V2X
import android.content.Context;
import com.alibaba.android.arouter.facade.annotation.Route;
import com.mogo.commons.AbsMogoApplication;
import com.mogo.eagle.core.data.map.MogoLatLng;
import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager;
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger;
import com.mogo.eagle.core.function.v2x.events.bridge.BridgeApi;
import com.mogo.eagle.core.function.v2x.events.consts.MoGoV2XServicePaths;
import com.mogo.eagle.core.function.v2x.events.entity.model.DrawLineInfo;
import com.mogo.eagle.core.function.v2x.events.manager.IMoGoWarnPolylineManager;
import com.mogo.map.MogoOverlayManager;
import com.mogo.map.overlay.IMogoOverlayManager;
import com.mogo.map.overlay.IMogoPolyline;
import com.mogo.map.overlay.MogoPolylineOptions;
@@ -62,7 +62,7 @@ public class MoGoWarnPolylineManager implements IMoGoWarnPolylineManager {
}
// 绘制线的对象
IMogoOverlayManager overlay = MogoOverlayManager.getInstance();
IMogoOverlayManager overlay = CallerMapUIServiceManager.INSTANCE.getOverlayManager(AbsMogoApplication.getApp());
if (overlay != null) {
mMogoPolyline = overlay.addPolyline(options);
}

View File

@@ -1,11 +1,11 @@
package com.mogo.eagle.core.function.v2x.events.overlay;
import com.mogo.commons.AbsMogoApplication;
import com.mogo.eagle.core.data.map.MogoLatLng;
import com.mogo.eagle.core.data.map.MogoLocation;
import com.mogo.eagle.core.function.v2x.events.bridge.BridgeApi;
import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager;
import com.mogo.eagle.core.function.v2x.events.utils.LocationUtils;
import com.mogo.eagle.core.utilcode.util.ColorUtils;
import com.mogo.map.MogoOverlayManager;
import com.mogo.map.overlay.IMogoOverlayManager;
import com.mogo.map.overlay.IMogoPolyline;
import com.mogo.map.overlay.MogoPolylineOptions;
@@ -66,7 +66,7 @@ public class V2XOptimalRouteOverlay {
// 线条粗细,渐变,渐变色值
mPolylineOptions.width(25).useGradient(true).colorValues(mPolylineColors);
// 绘制线
IMogoOverlayManager overlay = MogoOverlayManager.getInstance();
IMogoOverlayManager overlay = CallerMapUIServiceManager.INSTANCE.getOverlayManager(AbsMogoApplication.getApp());
if (overlay != null) {
mMoGoPolyline = overlay.addPolyline(mPolylineOptions);
}

View File

@@ -9,6 +9,7 @@ import androidx.localbroadcastmanager.content.LocalBroadcastManager;
import com.mogo.commons.module.status.MogoStatusManager;
import com.mogo.eagle.core.data.config.HmiBuildConfig;
import com.mogo.eagle.core.data.map.entity.V2XMessageEntity;
import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager;
import com.mogo.eagle.core.function.v2x.events.consts.V2XConst;
import com.mogo.eagle.core.function.v2x.events.scenario.IV2XScenarioManager;
import com.mogo.eagle.core.function.v2x.events.scenario.scene.road.V2XRoadEventScenario;
@@ -17,7 +18,6 @@ import com.mogo.eagle.core.function.v2x.events.scenario.scene.warning.V2XFrontWa
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger;
import com.mogo.eagle.core.utilcode.util.ThreadUtils;
import com.mogo.eagle.core.utilcode.util.Utils;
import com.mogo.map.MogoMapUIController;
import com.mogo.map.uicontroller.IMogoMapUIController;
import com.mogo.map.uicontroller.VisualAngleMode;
@@ -105,7 +105,7 @@ public class V2XScenarioManager implements IV2XScenarioManager {
* 道路事件触发后,切换到中景
*/
private void sceneChange() {
IMogoMapUIController mapUiController = MogoMapUIController.getInstance();
IMogoMapUIController mapUiController = CallerMapUIServiceManager.INSTANCE.getMapUIController();
if (mapUiController != null && mapUiController.getCurrentMapVisualAngle() != VisualAngleMode.MODE_MEDIUM_SIGHT) {
mapUiController.changeMapVisualAngle(VisualAngleMode.MODE_MEDIUM_SIGHT, null);
}

View File

@@ -10,6 +10,7 @@ import androidx.lifecycle.*
import androidx.lifecycle.Lifecycle.Event
import androidx.lifecycle.Lifecycle.Event.ON_CREATE
import androidx.lifecycle.Lifecycle.Event.ON_DESTROY
import com.mogo.commons.AbsMogoApplication
import com.mogo.eagle.core.data.map.*
import com.mogo.eagle.core.data.map.MapRoadInfo.StopLine
import com.mogo.eagle.core.data.map.entity.V2XRoadEventEntity
@@ -47,7 +48,7 @@ object AiRoadMarker {
private val carLocation by lazy { AtomicReference<Triple<Double, Double, Double>>() }
private val overlayManager by lazy { MogoOverlayManager.getInstance() }
private val overlayManager by lazy { CallerMapUIServiceManager.getOverlayManager(AbsMogoApplication.getApp()) }
private val line by lazy { AtomicReference<IMogoPolyline>() }
@@ -300,7 +301,7 @@ object AiRoadMarker {
options.colorValues(colors)
Logger.d(TAG, "--- marker --- 7 --- points: ${points.size}")
if (line == null || line.isDestroyed) {
val l = overlayManager.addPolyline(options)
val l = overlayManager?.addPolyline(options)
this.line.set(l)
line = l
} else {

View File

@@ -3,13 +3,15 @@ package com.mogo.eagle.core.function.v2x.events.scenario.scene.road
import android.graphics.*
import android.util.*
import com.mogo.cloud.commons.utils.*
import com.mogo.commons.AbsMogoApplication
import com.mogo.eagle.core.data.map.*
import com.mogo.eagle.core.data.map.entity.V2XRoadEventEntity
import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager
import com.mogo.eagle.core.function.v2x.R
import com.mogo.eagle.core.function.v2x.events.bridge.BridgeApi.context
import com.mogo.eagle.core.function.v2x.events.bridge.BridgeApi.v2xMarker
import com.mogo.eagle.core.utilcode.util.DrivingDirectionUtils
import com.mogo.map.*
import com.mogo.map.R.raw
import com.mogo.map.marker.*
import com.mogo.map.overlay.*
import java.util.*
@@ -31,7 +33,7 @@ object V2XAiRoadEventMarker {
private val distance = AtomicInteger(0)
private val overlayManager by lazy { MogoOverlayManager.getInstance() }
private val overlayManager by lazy { CallerMapUIServiceManager.getOverlayManager(AbsMogoApplication.getApp()) }
fun drawMarkers(entity: V2XRoadEventEntity): Pair<IMogoPolyline?, List<IMogoMarker>?>? {
removeMarkers(current.get())
@@ -61,10 +63,12 @@ object V2XAiRoadEventMarker {
val p = polygons[i]
val options = MogoMarkerOptions().data(entity).latitude(p.second).longitude(p.first)
options.anchor(0.5f, 0.5f)
options.icon3DRes(raw.sanjiaozhui)
options.icon3DRes(R.raw.sanjiaozhui)
try {
val marker = MogoMarkerManager.getInstance(context()).addMarker("road_pyramid_" + entity.getPoiType(), options)
markers += marker
val marker = CallerMapUIServiceManager.getMarkerManager(AbsMogoApplication.getApp())?.addMarker("road_pyramid_" + entity.poiType, options)
marker?.let {
markers += it
}
} catch (t: Throwable) {
t.printStackTrace()
}
@@ -87,14 +91,14 @@ object V2XAiRoadEventMarker {
if (points.size > 2) {
points.add(points[0])
}
options.points(points);
options.points(points)
options.useGradient(true)
options.useFacade(true)
options.setGps(false)
options.width(5f)
options.zIndex(75000f)
options.maxIndex(800000f)
val line = overlayManager.addPolyline(options)
val line = overlayManager?.addPolyline(options)
current.set(Pair(line, markers))
if (line != null) {
line.isVisible = true

View File

@@ -21,7 +21,6 @@ import com.mogo.eagle.core.function.v2x.events.scenario.view.IV2XMarker;
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger;
import com.mogo.eagle.core.utilcode.mogo.thread.WorkThreadHandler;
import com.mogo.eagle.core.utilcode.util.UiThreadHandler;
import com.mogo.map.MogoMarkerManager;
import com.mogo.map.marker.IMogoMarkerManager;
import com.mogo.map.overlay.IMogoPolyline;
import com.mogo.commons.utils.Trigonometric;
@@ -97,7 +96,7 @@ public class V2XWarningMarker implements IV2XMarker {
} else {
}
//二轮车和行人的渲染和移动
IMogoMarkerManager marker = MogoMarkerManager.getInstance(AbsMogoApplication.getApp());
IMogoMarkerManager marker = CallerMapUIServiceManager.INSTANCE.getMarkerManager(AbsMogoApplication.getApp());
if (marker != null) {
marker.removeMarkers(TYPE_MARKER_CLOUD_WARN_DATA);
}
@@ -218,7 +217,7 @@ public class V2XWarningMarker implements IV2XMarker {
stopPolyLineManager.clearLine();
}
IMogoMarkerManager marker = MogoMarkerManager.getInstance(AbsMogoApplication.getApp());
IMogoMarkerManager marker = CallerMapUIServiceManager.INSTANCE.getMarkerManager(AbsMogoApplication.getApp());
if (marker != null) {
//清除小箭头
marker.removeMarkers(WARNING_ARROWS);
@@ -267,7 +266,7 @@ public class V2XWarningMarker implements IV2XMarker {
private void handleStopLine() {
try {
if (mCloundWarningInfo != null) {
IMogoMarkerManager marker = MogoMarkerManager.getInstance(AbsMogoApplication.getApp());
IMogoMarkerManager marker = CallerMapUIServiceManager.INSTANCE.getMarkerManager(AbsMogoApplication.getApp());
if (marker != null) {
marker.removeMarkers(TYPE_MARKER_CLOUD_STOP_LINE_DATA);
}
@@ -448,7 +447,7 @@ public class V2XWarningMarker implements IV2XMarker {
@Override
public void clearPOI() {
IMogoMarkerManager marker = MogoMarkerManager.getInstance(AbsMogoApplication.getApp());
IMogoMarkerManager marker = CallerMapUIServiceManager.INSTANCE.getMarkerManager(AbsMogoApplication.getApp());
if (marker != null) {
marker.removeMarkers(V2X_FRONT_WARNING_MARKER);
}

View File

@@ -15,18 +15,16 @@ import androidx.constraintlayout.widget.ConstraintLayout;
import androidx.core.content.ContextCompat;
import com.mogo.cloud.trafficlive.api.ITrafficCarLiveCallBack;
import com.mogo.cloud.trafficlive.api.MoGoAiCloudTrafficLive;
import com.mogo.commons.AbsMogoApplication;
import com.mogo.commons.voice.AIAssist;
import com.mogo.eagle.core.data.map.MogoLocation;
import com.mogo.eagle.core.function.call.map.CallerMapLocationListenerManager;
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger;
import com.mogo.eagle.core.function.v2x.R;
import com.mogo.eagle.core.function.v2x.events.bridge.BridgeApi;
import com.mogo.eagle.core.function.v2x.events.voice.V2XVoiceCallbackListener;
import com.mogo.eagle.core.function.v2x.events.voice.V2XVoiceConstants;
import com.mogo.eagle.core.function.v2x.events.voice.V2XVoiceManager;
import com.mogo.eagle.core.utilcode.util.Utils;
import com.mogo.eagle.core.widget.RoundLayout;
import com.mogo.map.MogoLocationClient;
import com.mogo.map.location.IMogoLocationClient;
/**
@@ -99,12 +97,7 @@ public class CarZegoLiveVideoView extends RoundLayout {
*/
private void playLiveVideo() {
if (mSurfaceView != null) {
IMogoLocationClient locationClient = MogoLocationClient.getInstance(getContext());
MogoLocation mogoLocation = null;
if (locationClient != null) {
mogoLocation = locationClient.getLastKnowLocation();
}
MogoLocation mogoLocation = CallerMapLocationListenerManager.INSTANCE.getCurrentLocation();
if (mogoLocation != null) {
MoGoAiCloudTrafficLive.viewFrontVehicleLive(mogoLocation.getLatitude(), mogoLocation.getLongitude(), ((int) mogoLocation.getBearing()), mSurfaceView, new ITrafficCarLiveCallBack() {
@Override

View File

@@ -3,6 +3,7 @@ package com.mogo.eagle.core.function.v2x.events.view;
import static com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.M_V2X;
import static com.mogo.eagle.core.widget.media.video.SimpleVideoPlayer.PLAY_EVT_PLAY_BEGIN;
import static com.mogo.eagle.core.widget.media.video.SimpleVideoPlayer.PLAY_EVT_PLAY_LOADING;
import android.content.Context;
import android.content.Intent;
import android.graphics.PorterDuff;
@@ -20,17 +21,15 @@ import com.mogo.cloud.trafficlive.api.MoGoAiCloudTrafficLive;
import com.mogo.commons.voice.AIAssist;
import com.mogo.eagle.core.data.map.MogoLocation;
import com.mogo.eagle.core.data.map.entity.MarkerCarInfo;
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger;
import com.mogo.eagle.core.function.call.map.CallerMapLocationListenerManager;
import com.mogo.eagle.core.function.v2x.R;
import com.mogo.eagle.core.function.v2x.events.bridge.BridgeApi;
import com.mogo.eagle.core.function.v2x.events.voice.V2XVoiceCallbackListener;
import com.mogo.eagle.core.function.v2x.events.voice.V2XVoiceConstants;
import com.mogo.eagle.core.function.v2x.events.voice.V2XVoiceManager;
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger;
import com.mogo.eagle.core.utilcode.util.Utils;
import com.mogo.eagle.core.widget.RoundLayout;
import com.mogo.eagle.core.widget.media.video.SimpleVideoPlayer;
import com.mogo.map.MogoLocationClient;
import com.mogo.map.location.IMogoLocationClient;
import com.shuyu.gsyvideoplayer.GSYVideoManager;
import com.shuyu.gsyvideoplayer.builder.GSYVideoOptionBuilder;
import com.shuyu.gsyvideoplayer.cache.CacheFactory;
@@ -164,31 +163,28 @@ public class V2XCrossRoadVideoView extends RoundLayout {
}
//重新获取直播流地址
else {
IMogoLocationClient iMogoLocationClient = MogoLocationClient.getInstance(getContext());
if (iMogoLocationClient != null) {
MogoLocation mogoLocation = iMogoLocationClient.getLastKnowLocation();
if (mogoLocation == null) {
return;
}
MoGoAiCloudTrafficLive.viewFrontIntersectionLive(mogoLocation.getLatitude(), mogoLocation.getLongitude(), ((int) mogoLocation.getBearing()), new ITrafficIntersectionLiveCallBack() {
@Override
public void liveUrlResult(String liveUrl) {
if (!TextUtils.isEmpty(liveUrl)) {
MarkerCarInfo.CarLiveInfo carLiveInfo = new MarkerCarInfo.CarLiveInfo();
carLiveInfo.setVideoUrl(liveUrl);
setCarLiveInfo(carLiveInfo);
playLiveVideo(carLiveInfo);
} else {
CallerLogger.INSTANCE.d(M_V2X + TAG, "startLive 路口实况直播地址为空");
}
}
@Override
public void onError(String errorMsg) {
CallerLogger.INSTANCE.d(M_V2X + TAG, "获取路口实况失败");
}
});
MogoLocation mogoLocation = CallerMapLocationListenerManager.INSTANCE.getCurrentLocation();
if (mogoLocation == null) {
return;
}
MoGoAiCloudTrafficLive.viewFrontIntersectionLive(mogoLocation.getLatitude(), mogoLocation.getLongitude(), ((int) mogoLocation.getBearing()), new ITrafficIntersectionLiveCallBack() {
@Override
public void liveUrlResult(String liveUrl) {
if (!TextUtils.isEmpty(liveUrl)) {
MarkerCarInfo.CarLiveInfo carLiveInfo = new MarkerCarInfo.CarLiveInfo();
carLiveInfo.setVideoUrl(liveUrl);
setCarLiveInfo(carLiveInfo);
playLiveVideo(carLiveInfo);
} else {
CallerLogger.INSTANCE.d(M_V2X + TAG, "startLive 路口实况直播地址为空");
}
}
@Override
public void onError(String errorMsg) {
CallerLogger.INSTANCE.d(M_V2X + TAG, "获取路口实况失败");
}
});
}
}
}

View File

@@ -10,9 +10,9 @@ import com.mogo.eagle.core.data.map.MogoLocation;
import com.mogo.eagle.core.function.api.map.listener.IMoGoMapLocationListener;
import com.mogo.eagle.core.function.call.hmi.CallerHmiManager;
import com.mogo.eagle.core.function.call.map.CallerMapLocationListenerManager;
import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager;
import com.mogo.eagle.core.function.call.v2x.CallLimitingVelocityListenerManager;
import com.mogo.eagle.core.utilcode.util.UiThreadHandler;
import com.mogo.map.MogoMapUIController;
import com.zhjt.service_biz.BizConfig;
import java.util.Timer;
@@ -52,7 +52,7 @@ public class SpeedLimitDataManager implements IMoGoMapLocationListener {
@Override
public void run() {
if (mLocation != null) {
if (MogoMapUIController.getInstance() != null) {
if(CallerMapUIServiceManager.INSTANCE.getMapUIController()!=null){
getSpeedLimit();
}
}
@@ -61,7 +61,7 @@ public class SpeedLimitDataManager implements IMoGoMapLocationListener {
@BizConfig(biz = V2I, dependentBizNode = "", bizNode = BIZ_SLW)
private void getSpeedLimit() {
if (!isShowObuLimitSpeedView) {
int speedLimit = MogoMapUIController.getInstance().getLimitSpeed(mLocation.getLongitude(), mLocation.getLatitude(), mLocation.getBearing());
int speedLimit = CallerMapUIServiceManager.INSTANCE.getMapUIController().getLimitSpeed(mLocation.getLongitude(), mLocation.getLatitude(), mLocation.getBearing());
UiThreadHandler.post(() -> {
if (speedLimit > 0) {
CallerHmiManager.INSTANCE.showLimitingVelocity(speedLimit);