diff --git a/app/src/main/java/com/mogo/launcher/MogoApplication.java b/app/src/main/java/com/mogo/launcher/MogoApplication.java index 70fdb70b22..2e43ea4896 100644 --- a/app/src/main/java/com/mogo/launcher/MogoApplication.java +++ b/app/src/main/java/com/mogo/launcher/MogoApplication.java @@ -66,6 +66,7 @@ public class MogoApplication extends AbsMogoApplication { MogoModulePaths.addModule(new MogoModule(MogoServicePaths.PATH_SHARE, "ShareControl")); MogoModulePaths.addBaseModule( new MogoModule( ServiceConst.PATH_REFRESH_STRATEGY, ServiceConst.PATH_REFRESH_STRATEGY ) ); + MogoModulePaths.addBaseModule(new MogoModule(MogoServicePaths.PATH_OBU,"moduleObu")); MogoModulePaths.addBaseModule( new MogoModule( V2XConst.PATH_V2X_UI, V2XConst.PATH_V2X_UI ) ); MogoModulePaths.addModule(new MogoModule( PushUIConstants.TAG, PushUIConstants.TAG)); diff --git a/config.gradle b/config.gradle index 697188d722..64130c0bcf 100644 --- a/config.gradle +++ b/config.gradle @@ -158,6 +158,6 @@ ext { tanluupload : "com.mogo.module:module-tanlu-upload:${TANLULIB_VERSION}", // obu sdk - obusdk : "com.zhidao.enterprise.smartv2x:smartv2x:1.0.0.2" + obusdk : "com.zhidao.enterprise.smartv2x:smartv2x:1.0.0.3" ] } \ No newline at end of file diff --git a/gradle.properties b/gradle.properties index 0cd7865214..966647ce14 100644 --- a/gradle.properties +++ b/gradle.properties @@ -24,44 +24,45 @@ SNAPSHOT_REPOSITORY_URL=http://nexus.zhidaoauto.com/repository/maven-snapshots/ USERNAME=xintai PASSWORD=xintai2018 # 编译模式: false - 依赖本地版本, true - 依赖 maven 版本 -RELEASE=false +RELEASE=true # 模块版本 ## 工程内模块 -MOGO_COMMONS_VERSION=1.2.1.11 -MOGO_UTILS_VERSION=1.2.1.11 -MAP_AMAP_VERSION=1.2.1.11 -MAP_AUTONAVI_VERSION=1.2.1.11 -MOGO_MAP_VERSION=1.2.1.11 -MOGO_MAP_API_VERSION=1.2.1.11 -MOGO_SERVICE_VERSION=1.2.1.11 -MOGO_SERVICE_API_VERSION=1.2.1.11 -MOGO_CONNECTION_VERSION=1.2.1.11 -MOGO_MODULE_APPS_VERSION=1.2.1.11 -MOGO_MODULE_NAVI_VERSION=1.2.1.11 -MOGO_MODULE_SHARE_VERSION=1.2.1.11 -MOGO_MODULE_COMMON_VERSION=1.2.1.12 -MOGO_MODULE_MAIN_VERSION=1.2.1.11 -MOGO_MODULE_MAP_VERSION=1.2.1.11 -MOGO_MODULE_SERVICE_VERSION=1.2.1.11 -MOGO_MODULE_EXTENSIONS_VERSION=1.2.1.11 -MOGO_MODULE_SEARCH_VERSION=1.2.1.11 -MOGO_MODULE_BACK_VERSION=1.2.1.11 -MOGO_MODULE_GPS_SIMULATOR_VERSION=1.2.1.11 -MOGO_MODULE_GPS_SIMULATOR_DEBUG_VERSION=1.2.1.11 -MOGO_MODULE_GPS_SIMULATOR_NOOP_VERSION=1.2.1.11 -MOGO_MODULE_AUTHORIZE_VERSION=1.2.1.11 -MOGO_MODULE_GUIDE_VERSION=1.2.1.11 -MOGO_MODULE_MEDIA_VERSION=1.2.1.11 +MOGO_COMMONS_VERSION=1.2.1.12-shunyi +MOGO_UTILS_VERSION=1.2.1.12-shunyi +MAP_AMAP_VERSION=1.2.1.12-shunyi +MAP_AUTONAVI_VERSION=1.2.1.12-shunyi +MOGO_MAP_VERSION=1.2.1.12-shunyi +MOGO_MAP_API_VERSION=1.2.1.12-shunyi +MOGO_SERVICE_VERSION=1.2.1.12-shunyi +MOGO_SERVICE_API_VERSION=1.2.1.13-shunyi +MOGO_CONNECTION_VERSION=1.2.1.12-shunyi +MOGO_MODULE_APPS_VERSION=1.2.1.12-shunyi +MOGO_MODULE_NAVI_VERSION=1.2.1.12-shunyi +MOGO_MODULE_SHARE_VERSION=1.2.1.12-shunyi +MOGO_MODULE_COMMON_VERSION=1.2.1.13-shunyi +MOGO_MODULE_MAIN_VERSION=1.2.1.12-shunyi +MOGO_MODULE_MAP_VERSION=1.2.1.12-shunyi +MOGO_MODULE_SERVICE_VERSION=1.2.1.12-shunyi +MOGO_MODULE_EXTENSIONS_VERSION=1.2.1.12-shunyi +MOGO_MODULE_SEARCH_VERSION=1.2.1.12-shunyi +MOGO_MODULE_BACK_VERSION=1.2.1.12-shunyi +MOGO_MODULE_GPS_SIMULATOR_VERSION=1.2.1.12-shunyi +MOGO_MODULE_GPS_SIMULATOR_DEBUG_VERSION=1.2.1.12-shunyi +MOGO_MODULE_GPS_SIMULATOR_NOOP_VERSION=1.2.1.12-shunyi +MOGO_MODULE_AUTHORIZE_VERSION=1.2.1.12-shunyi +MOGO_MODULE_GUIDE_VERSION=1.2.1.12-shunyi +MOGO_MODULE_MEDIA_VERSION=1.2.1.12-shunyi -MOGO_MODULE_MAIN_LAUNCHER_VERSION = 1.2.1.11 -MOGO_MODULE_MAIN_INDEPENDENT_VERSION = 1.2.1.11 +MOGO_MODULE_MAIN_LAUNCHER_VERSION = 1.2.1.12-shunyi +MOGO_MODULE_MAIN_INDEPENDENT_VERSION = 1.2.1.12-shunyi MOGO_MODULE_OBU_VERSION = 1.2.1.10-SNAPSHOT ## 工程外部模块 # 探路 -MOGO_MODULE_TANLU_VERSION=1.2.1.5 +MOGO_MODULE_TANLU_VERSION=1.2.1.8-SNAPSHOT + # 车聊聊 CARCHATTING_VERSION=1.1.9 # 车聊聊接口 @@ -73,13 +74,13 @@ MOGO_MODULE_GUIDESHOW_PROVIDER_VERSION=1.0.2-SNAPSHOT # 在线车辆F MOGO_MODULE_ONLINECAR_VERSION=1.0.3.2 # v2x -MOGO_MODULE_V2X_VERSION=1.1.36 +MOGO_MODULE_V2X_VERSION=1.1.36-SNAPSHOT # 推送 MOGO_MODULE_PUSH_VERSION=1.1.3 # 广告资源位 MOGO_MODULE_AD_CARD_VERSION=1.0.1 # 探路上报和分享模块 -TANLULIB_VERSION=1.2.1.7 +TANLULIB_VERSION=1.2.1.8-SNAPSHOT # Boost分包 diff --git a/modules/mogo-module-main/src/main/java/com/mogo/module/main/MainActivity.java b/modules/mogo-module-main/src/main/java/com/mogo/module/main/MainActivity.java index 74302e8e52..72dff48b27 100644 --- a/modules/mogo-module-main/src/main/java/com/mogo/module/main/MainActivity.java +++ b/modules/mogo-module-main/src/main/java/com/mogo/module/main/MainActivity.java @@ -126,10 +126,10 @@ public class MainActivity extends MvpActivity< MainView, MainPresenter > impleme mMogoMapService.getHostListenerRegister().registerMarkerClickListener( this ); } -// IMogoObuManager obuManager = mServiceApis.getObuManager(); -// if(obuManager!=null) { -// obuManager.registerObuDataChangedListener(EventDispatchCenter.getInstance()); -// } + IMogoObuManager obuManager = mServiceApis.getObuManager(); + if(obuManager!=null) { + obuManager.registerObuDataChangedListener(EventDispatchCenter.getInstance()); + } EventDispatchCenter.getInstance().setMapLoadedCallback( () -> { Logger.d( TAG, "map loaded." + Thread.currentThread().getName() ); diff --git a/modules/mogo-module-obu/build.gradle b/modules/mogo-module-obu/build.gradle index 3545c6498a..655eabdb94 100644 --- a/modules/mogo-module-obu/build.gradle +++ b/modules/mogo-module-obu/build.gradle @@ -34,10 +34,7 @@ android { dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) implementation rootProject.ext.dependencies.kotlinstdlibjdk7 - implementation rootProject.ext.dependencies.androidxappcompat - implementation rootProject.ext.dependencies.androidxrecyclerview implementation rootProject.ext.dependencies.androidxccorektx - implementation rootProject.ext.dependencies.androidxconstraintlayout implementation rootProject.ext.dependencies.arouter kapt rootProject.ext.dependencies.aroutercompiler implementation rootProject.ext.dependencies.rxjava diff --git a/modules/mogo-module-obu/src/main/java/com/zhidao/mogo/module/obu/MockUtil.kt b/modules/mogo-module-obu/src/main/java/com/zhidao/mogo/module/obu/MockUtil.kt index 92158e2f0f..d8d0563ce3 100644 --- a/modules/mogo-module-obu/src/main/java/com/zhidao/mogo/module/obu/MockUtil.kt +++ b/modules/mogo-module-obu/src/main/java/com/zhidao/mogo/module/obu/MockUtil.kt @@ -1,18 +1,16 @@ package com.zhidao.mogo.module.obu -import com.mogo.service.obu.IMogoObuDataChangedListener import com.mogo.utils.logger.Logger import com.zhidao.smartv2x.listener.OnMessageReceiveListener import com.zhidao.smartv2x.model.obu.CarEventInfo -import com.zhidao.smartv2x.model.obu.CarLocationInfo -import com.zhidao.smartv2x.model.obu.TrafficLightInfo import io.reactivex.Observable import io.reactivex.Scheduler -import io.reactivex.Single +import io.reactivex.android.schedulers.AndroidSchedulers import io.reactivex.disposables.Disposable -import io.reactivex.internal.operators.single.SingleSubscribeOn import io.reactivex.schedulers.Schedulers +import io.reactivex.schedulers.Schedulers.io import java.util.concurrent.TimeUnit +import kotlin.random.Random /** * 模拟相关操作及数据的单例类 @@ -32,21 +30,44 @@ object MockUtil { } private fun intervalMockData(){ - intervalObs = Observable.interval(1000,TimeUnit.MILLISECONDS).map { + intervalObs = Observable.interval(5000,TimeUnit.MILLISECONDS).map { it.toString() - }.subscribe { - val carLocationInfo = CarLocationInfo() - carLocationInfo.carId = "carLocation$it" - dataCallback.showCarLocationInfo(carLocationInfo) - val other = "other$it" - dataCallback.showOtherInfo(other) - val eventInfo = CarEventInfo() - eventInfo.describe = "event des $it" - eventInfo.type = "event type $it" - dataCallback.showCarEventInfo(eventInfo) - val traffic = TrafficLightInfo() - traffic.id = "traffic $it" - dataCallback.showTrafficLightInfo(traffic) + }.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe { + val random = Random.nextInt(0, 3) + Logger.d(TAG, "random====$random") + val carEventInfo = CarEventInfo() + when (random) { + 0->{ + // 绿波引导 + carEventInfo.type = "绿波车速引导" + carEventInfo.typeCode = "13" + val r = Random.nextInt(0, 3) + carEventInfo.describe = when (r) { + 0 -> "保持当前车速行驶!" + 1 -> "建议50km/h车速行驶" + else -> "建议30km/h ~ 50km/h 车速行驶" + } + dataCallback.showCarEventInfo(carEventInfo) + } + 1->{ + // 前方急刹预警 + carEventInfo.type = "紧急制动预警" + carEventInfo.typeCode = "06" + carEventInfo.describe = "这个应该是随便写,反正也不用" + dataCallback.showCarEventInfo(carEventInfo) + } + 2->{ + // 行人碰撞预警 + carEventInfo.type = "行人碰撞预警" + carEventInfo.typeCode = "39" + carEventInfo.describe = "这个应该是随便写,反正也不用" + dataCallback.showCarEventInfo(carEventInfo) + } + else->{ + // 其他,不处理 + } + } + } } diff --git a/modules/mogo-module-obu/src/main/java/com/zhidao/mogo/module/obu/ObuManager.kt b/modules/mogo-module-obu/src/main/java/com/zhidao/mogo/module/obu/ObuManager.kt index 00b18e6948..758a876a5c 100644 --- a/modules/mogo-module-obu/src/main/java/com/zhidao/mogo/module/obu/ObuManager.kt +++ b/modules/mogo-module-obu/src/main/java/com/zhidao/mogo/module/obu/ObuManager.kt @@ -4,6 +4,7 @@ import android.content.Context import android.os.Bundle import android.os.Handler import android.os.Looper +import android.os.Message import android.view.View import androidx.fragment.app.Fragment import com.alibaba.android.arouter.facade.annotation.Route @@ -28,9 +29,11 @@ import com.zhidao.smartv2x.model.obu.TrafficLightInfo * @author tongchenfei */ @Route(path = MogoServicePaths.PATH_OBU) -class ObuManager: IMogoObuManager { +class ObuManager: IMogoObuManager,Handler.Callback { companion object{ const val TAG = "ObuManger" + const val MSG_MONITOR_OBU_STATUS = 1001 + const val DEFAULT_MONITOR_TIME = 10_000L } private var dataChangedListener: IMogoObuDataChangedListener? = null @@ -58,7 +61,10 @@ class ObuManager: IMogoObuManager { MockUtil.init(this) } else { // 初始化sdk,注册数据回调等信息 - V2xController.getInstance().setMessageReceiveListener(this@ObuManager) + V2xController.getInstance().setMessageReceiveListener(this) + V2xController.getInstance().init() +// V2xController.getInstance().setMessageReceiveListener(this@ObuManager) + handler.sendEmptyMessageDelayed(MSG_MONITOR_OBU_STATUS, DEFAULT_MONITOR_TIME) } } @@ -98,8 +104,17 @@ class ObuManager: IMogoObuManager { * 车辆位置信息回调接口 */ override fun showCarLocationInfo(info: CarLocationInfo?) { - Logger.d(TAG, "thread: ${Thread.currentThread()} showCarLocationInfo: ${info?.carId}") - dataChangedListener?.showCarLocationInfo(info) + Logger.v(TAG, "thread: ${Thread.currentThread()} showCarLocationInfo: ${info?.carId}") + if(!DebugConfig.isUseMockObuData()) { + // 不使用模拟数据时候不做此处理 + // 由于obu会频繁回调此接口,故10秒收不到此数据,则认为obu连接不正常,就断开重连一下 + handler.removeMessages(MSG_MONITOR_OBU_STATUS) + handler.sendEmptyMessageDelayed(MSG_MONITOR_OBU_STATUS, DEFAULT_MONITOR_TIME) + } + + handler.post{ + dataChangedListener?.showCarLocationInfo(info) + } } /** @@ -107,7 +122,9 @@ class ObuManager: IMogoObuManager { */ override fun showOtherInfo(info: String?) { Logger.d(TAG, "thread: ${Thread.currentThread()} showOtherInfo: $info") - dataChangedListener?.showOtherInfo(info) + handler.post{ + dataChangedListener?.showOtherInfo(info) + } } /** @@ -115,7 +132,9 @@ class ObuManager: IMogoObuManager { */ override fun showTrafficLightInfo(info: TrafficLightInfo?) { Logger.d(TAG, "thread: ${Thread.currentThread()} showTrafficLightInfo: ${info?.id}") - dataChangedListener?.showTrafficLightInfo(info) + handler.post{ + dataChangedListener?.showTrafficLightInfo(info) + } } /** @@ -123,6 +142,25 @@ class ObuManager: IMogoObuManager { */ override fun showCarEventInfo(info: CarEventInfo?) { Logger.d(TAG, "thread: ${Thread.currentThread()} showCarEventInfo: ${info?.type}") - dataChangedListener?.showCarEventInfo(info) + handler.post { + dataChangedListener?.showCarEventInfo(info) + } + } + + /** + * @param msg A [Message][android.os.Message] object + * @return True if no further handling is desired + */ + override fun handleMessage(msg: Message?): Boolean { + if (msg?.what == MSG_MONITOR_OBU_STATUS) { + // obu未正常连接,需要重新连接 + Logger.d(TAG,"obu未正常连接,需要重新连接") + V2xController.getInstance().release() + V2xController.getInstance().setMessageReceiveListener(this) + V2xController.getInstance().init() +// V2xController.getInstance().release() + return true + } + return false } } \ No newline at end of file