diff --git a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/LineUploadManager.kt b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/LineUploadManager.kt new file mode 100644 index 0000000000..9538562e7d --- /dev/null +++ b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/LineUploadManager.kt @@ -0,0 +1,75 @@ +package com.mogo.eagle.core.function.v2x + +import android.content.Context +import com.mogo.cloud.passport.MoGoAiCloudClientConfig +import com.mogo.commons.constants.HostConst +import com.mogo.eagle.core.data.v2x.LineUploadData +import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager +import com.mogo.eagle.core.function.v2x.events.network.V2XRefreshModel +import com.mogo.eagle.core.function.v2x.road.V2XEventServiceApi +import com.mogo.eagle.core.network.MoGoRetrofitFactory +import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger +import io.reactivex.android.schedulers.AndroidSchedulers +import io.reactivex.disposables.Disposable +import io.reactivex.schedulers.Schedulers +import kotlin.properties.Delegates + +class LineUploadManager private constructor(context: Context) { + + companion object { + + private const val TAG = "LineUploadManager" + + @Volatile + private var lineUploadManager: LineUploadManager? = null + + @Synchronized + fun getInstance(context: Context): LineUploadManager? { + if (lineUploadManager == null) { + synchronized(V2XRefreshModel::class.java) { + if (lineUploadManager == null) { + lineUploadManager = LineUploadManager(context) + } + } + } + return lineUploadManager + } + } + + private var mContext: Context? = null + private var disposable: Disposable? = null + + init { + mContext = context + } + + private var lineId: Long? by Delegates.observable( + CallerAutoPilotStatusListenerManager + .getAutoPilotStatusInfo().autopilotControlParameters?.autoPilotLine?.lineId + ) { _, _, newValue -> + CallerLogger.d(TAG, " old line : $lineId , new line : $newValue") + lineId = newValue +// uploadLine() + } + + private fun uploadLine() { + lineId?.let { + val lineUploadData = LineUploadData(it, MoGoAiCloudClientConfig.getInstance().sn) + disposable = MoGoRetrofitFactory.getInstance(HostConst.getHost()) //todo 改域名 + .create(V2XEventServiceApi::class.java) + .uploadLineId(lineUploadData) + .retry(3) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe { data -> + CallerLogger.d(TAG, " uploadLine : $data") + } + } + } + + fun onDestroy() { + mContext = null + disposable?.dispose() + } + +} \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/V2XProvider.kt b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/V2XProvider.kt index 460656b069..b2345e8b84 100644 --- a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/V2XProvider.kt +++ b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/V2XProvider.kt @@ -19,12 +19,17 @@ class V2XProvider : IV2XEventProvider { override val functionName: String get() = "V2XProvider" + + private var mContext:Context? = null + override fun init(context: Context) { + mContext = context CallerTrafficLightManager.getTrafficLightProvider().initTrafficLightServer(context) VipCarManager.INSTANCE.initServer(context) SpeedLimitDataManager.getInstance().start() TrafficLightDispatcher.INSTANCE.initServer(context) SpeedLimitDispatcher.INSTANCE.initLimit(context) + LineUploadManager.getInstance(context) if (AppIdentityModeUtils.isBus(FunctionBuildConfig.appIdentityMode) && AppIdentityModeUtils.isPassenger(FunctionBuildConfig.appIdentityMode)) { //不处理 @@ -47,7 +52,9 @@ class V2XProvider : IV2XEventProvider { } else { V2XEventManager.onDestroy() } - + mContext?.let { + LineUploadManager.getInstance(it)?.onDestroy() + } // RedLightWarningManager.INSTANCE.onDestroy() } } \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/network/V2XRefreshModel.java b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/network/V2XRefreshModel.java index 5f0d5a63e8..e2e061f259 100644 --- a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/network/V2XRefreshModel.java +++ b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/network/V2XRefreshModel.java @@ -27,7 +27,7 @@ import okhttp3.RequestBody; public class V2XRefreshModel { private Context mContext; - private static V2XRefreshModel mV2XRefreshModel; + private static volatile V2XRefreshModel mV2XRefreshModel; private V2XRefreshModel() { } diff --git a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/road/V2XEventServiceApi.kt b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/road/V2XEventServiceApi.kt index 5b73866375..e08ffaead1 100644 --- a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/road/V2XEventServiceApi.kt +++ b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/road/V2XEventServiceApi.kt @@ -1,11 +1,17 @@ package com.mogo.eagle.core.function.v2x.road +import com.mogo.eagle.core.data.BaseData +import com.mogo.eagle.core.data.v2x.LineUploadData import io.reactivex.Observable -import retrofit2.http.GET -import retrofit2.http.Query +import retrofit2.http.* interface V2XEventServiceApi { @GET("/eagleEye-mis/config/queryV2NInformation") fun queryAllV2XEventsByLineId(@Query("lineId") lineId: String, @Query("sn") sn: String): Observable + + @Headers("Content-type:application/json;charset=UTF-8" ) + @POST( "" ) + fun uploadLineId(@Body lineId: LineUploadData): Observable + } \ No newline at end of file diff --git a/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/v2x/LineUploadData.kt b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/v2x/LineUploadData.kt new file mode 100644 index 0000000000..8700029ed9 --- /dev/null +++ b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/v2x/LineUploadData.kt @@ -0,0 +1,6 @@ +package com.mogo.eagle.core.data.v2x + +/** + * 路线上报 + */ +data class LineUploadData(val lineId:Long,val sn:String) \ No newline at end of file