Merge branch 'dev_robotaxi-d-app-module_290_220715_2.9.0' into dev_robotaxi-d-app-module_290_220715_2.9.0_interface_subscribe

This commit is contained in:
xinfengkun
2022-08-10 16:47:15 +08:00
17 changed files with 193 additions and 109 deletions

View File

@@ -682,7 +682,7 @@ public class BusOrderModel {
private void closeBeautificationMode() {
if (FunctionBuildConfig.isDemoMode) {//收车结束美化
FunctionBuildConfig.isIgnoreConditionsDrawAutopilotTrajectoryData = false;
CallerAutoPilotManager.INSTANCE.setDemoMode(false);
CallerAutoPilotManager.INSTANCE.setIPCDemoMode(false);
CallerLogger.INSTANCE.d(M_BUS + TAG, "美化模式-ignore置为false收车");
}
}
@@ -801,7 +801,7 @@ public class BusOrderModel {
&& backgroundCurrentStationIndex <= stationList.size()-1)
&& stationList.get(backgroundCurrentStationIndex).isLeaving()){//行驶过程中设置美化
FunctionBuildConfig.isIgnoreConditionsDrawAutopilotTrajectoryData = true;
CallerAutoPilotManager.INSTANCE.setDemoMode(true);
CallerAutoPilotManager.INSTANCE.setIPCDemoMode(true);
CallerLogger.INSTANCE.d(M_BUS + TAG, "美化模式-ignore置为true每次滑动出发");
}
@@ -941,7 +941,7 @@ public class BusOrderModel {
if (FunctionBuildConfig.isDemoMode && backgroundCurrentStationIndex <= stationList.size() - 1) {//到达一站结束美化
FunctionBuildConfig.isIgnoreConditionsDrawAutopilotTrajectoryData = false;
CallerAutoPilotManager.INSTANCE.setDemoMode(false);
CallerAutoPilotManager.INSTANCE.setIPCDemoMode(false);
CallerLogger.INSTANCE.d(M_BUS + TAG, "美化模式-ignore置为false到最后一站");
}
CallerLogger.INSTANCE.d( M_BUS + TAG, "到站====currentStationIndex=" + backgroundCurrentStationIndex);

View File

@@ -14,14 +14,21 @@ import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_TAXI_P
import com.mogo.eagle.core.utilcode.util.UiThreadHandler
import com.mogo.eagle.core.utilcode.util.Utils
import com.mogo.och.common.module.utils.DateTimeUtil
import com.mogo.och.common.module.utils.NumberFormatUtil
import com.mogo.och.taxi.passenger.R
import com.mogo.och.taxi.passenger.event.FinishActivity
import com.mogo.och.taxi.passenger.mulprocess.BinderCursor
import com.mogo.och.taxi.passenger.mulprocess.BinderProvider
import com.mogo.och.taxi.passenger.mulprocess.ICallback
import com.mogo.och.taxi.passenger.mulprocess.ILeftMenuService
import com.mogo.och.taxi.passenger.ui.video.FloatingDistanceInfoUtils
import com.mogo.och.taxi.passenger.ui.video.VideoActivity
import org.greenrobot.eventbus.EventBus
import rx.Observable
import rx.Observer
import rx.schedulers.Schedulers
import java.util.*
@SuppressLint("StaticFieldLeak")
@@ -43,7 +50,7 @@ object LeftMenuOpen {
private var orderService: ILeftMenuService? = null
private var icallbacks: RemoteCallbackList<ICallback> = RemoteCallbackList<ICallback>()
private var icallbacks: RemoteCallbackList<ICallback>? = null
var checkIndex = OverlayLeftViewUtils.LIVE
private var lastClickTime = 0L
@@ -80,6 +87,7 @@ object LeftMenuOpen {
cu?.let {
it.close()
cu = null
orderService = null
}
val iterator = dragList.iterator()
@@ -175,9 +183,6 @@ object LeftMenuOpen {
fun registerDragView(view: View?) {
if (view != null) {
dragList.add(view)
// if (orderService == null) {
// registerC()
// }
view.setOnTouchListener(ItemViewTouchListener())
view.setOnClickListener {
open?.let { it1 -> it1(windowView!!, windowManager) }
@@ -200,46 +205,84 @@ object LeftMenuOpen {
}
fun transmissionIndex(index:Int){
CallerLogger.d(M_TAXI_P + TAG, "tran--transmissionIndex---$index")
if (orderService == null) {
registerC()
}
orderService?.transmissionIndex(index)
Observable.empty<String?>().subscribeOn(Schedulers.io())
.subscribe(object : Observer<String?> {
override fun onCompleted() {
CallerLogger.d(M_TAXI_P + TAG, "tran--transmissionIndex---$index")
if (orderService == null) {
registerC()
}
orderService?.transmissionIndex(index)
}
override fun onError(e: Throwable?) {}
override fun onNext(t: String?) {}
})
}
/**
* 主进程调用
*/
fun registerCallbackHost(cb:ICallback?){
// if (orderService == null) {
// registerC()
// }
if(icallbacks==null){
icallbacks = RemoteCallbackList<ICallback>()
}
cb?.let {
icallbacks.register(it)
icallbacks?.register(it)
}
}
/**
* 主进程调用 反注册
*/
fun unregisterCallbackHost(cb:ICallback?){
cb?.let {
icallbacks.unregister(it)
icallbacks?.unregister(it)
}
icallbacks?.kill()
icallbacks = null
}
/**
* 子进程调用 注册回调 主进程中调用
* 方便主进程传递到子进程 速度、剩余公里、剩余时间、到达时间
*/
fun registerCallback(cb:ICallback?){
CallerLogger.d(M_TAXI_P + TAG, "tran--registerCallback--注册")
if (orderService == null) {
registerC()
}
cb?.let {
orderService?.registerCallback(it)
}
Observable.empty<String?>().subscribeOn(Schedulers.io())
.subscribe(object : Observer<String?> {
override fun onCompleted() {
CallerLogger.d(M_TAXI_P + TAG, "tran--registerCallback--注册")
if (orderService == null) {
registerC()
}
cb?.let {
orderService?.registerCallback(it)
}
}
override fun onError(e: Throwable?) {}
override fun onNext(t: String?) {}
})
}
/**
* 子进程调用 反注册
*/
fun unregisterCallback(cb:ICallback?){
CallerLogger.d(M_TAXI_P + TAG, "tran--unregisterCallback--反注册")
cb?.let {
orderService?.unRegisterCallback(it)
}
Observable.empty<String?>().subscribeOn(Schedulers.io())
.subscribe(object : Observer<String?> {
override fun onCompleted() {
CallerLogger.d(M_TAXI_P + TAG, "tran--unregisterCallback--反注册")
cb?.let {
orderService?.unRegisterCallback(it)
}
}
override fun onError(e: Throwable?) {}
override fun onNext(t: String?) {}
})
}
/**
* 主进程调用 向子进程传输 剩余距离、剩余时间、和速度
*/
fun callCallBack(meters: Long,timeInSecond: Long,speed:Float){
if(checkIndex == OverlayLeftViewUtils.CONSULT||checkIndex == OverlayLeftViewUtils.MOVIE) {
if (System.currentTimeMillis() - lastClickTime < FAST_CLICK_DELAY_TIME){
@@ -252,15 +295,17 @@ object LeftMenuOpen {
override fun onCompleted() {
CallerLogger.d(M_TAXI_P + TAG, "callCallBack$meters--$timeInSecond--$speed")
try {
val len = icallbacks.beginBroadcast()
for (i in 0 until len) {
try {
icallbacks.getBroadcastItem(i).onResult(meters, timeInSecond, speed)
} catch (e: RemoteException) {
e.printStackTrace()
val len = icallbacks?.beginBroadcast()
len?.let {
for (i in 0 until len) {
try {
icallbacks?.getBroadcastItem(i)?.onResult(meters, timeInSecond, speed)
} catch (e: RemoteException) {
e.printStackTrace()
}
}
}
icallbacks.finishBroadcast()
icallbacks?.finishBroadcast()
}catch (e:Exception){
CallerLogger.e(M_TAXI_P + TAG, "callCallBack${e.message}")
}
@@ -272,15 +317,24 @@ object LeftMenuOpen {
}
fun invoKeyByEventType(typeID:Int){
val len = icallbacks.beginBroadcast()
for (i in 0 until len) {
try {
icallbacks.getBroadcastItem(i).postEvent(typeID)
} catch (e: RemoteException) {
e.printStackTrace()
}
}
icallbacks.finishBroadcast()
Observable.empty<String?>().subscribeOn(Schedulers.io())
.subscribe(object : Observer<String?> {
override fun onCompleted() {
val len = icallbacks?.beginBroadcast()
len?.let {
for (i in 0 until it) {
try {
icallbacks?.getBroadcastItem(i)?.postEvent(typeID)
} catch (e: RemoteException) {
e.printStackTrace()
}
}
}
icallbacks?.finishBroadcast()
}
override fun onError(e: Throwable?) {}
override fun onNext(t: String?) {}
})
}
/**
@@ -320,4 +374,44 @@ object LeftMenuOpen {
val w = extras.getParcelable<BinderCursor.BinderParcelable>("binder")
return w!!.mBinder
}
val callBack = object : ICallback.Stub() {
override fun onResult(meters :Long, timeInSecond:Long,speed:Float) {
if(speed<0){
// 距离单位
var disUnit = "公里"
// 距离
var remainDis: String? = "0"
if (meters > 0) {
if (meters / 1000 < 1) {
disUnit = ""
remainDis = Math.round(meters.toFloat()).toString()
} else {
disUnit = "公里"
remainDis = NumberFormatUtil.formatLong(meters.toDouble() / 1000)
}
}
// 剩余时间
val time = Math.ceil(timeInSecond.toDouble() / 60f).toInt()
val beforeTime = Calendar.getInstance()
beforeTime.add(Calendar.MINUTE, time)
//到达时间
val arriveTime = DateTimeUtil.formatCalendarToString(beforeTime, DateTimeUtil.TAXI_HH_mm)
FloatingDistanceInfoUtils.setDistance(meters,remainDis,disUnit,time,arriveTime)
}else{
FloatingDistanceInfoUtils.setSpeed(speed)
}
}
override fun postEvent(type: Int) {
when (type) {
VideoActivity.EVENT_FINISH -> {
EventBus.getDefault().post(FinishActivity())
}
else -> {}
}
}
}
}

View File

@@ -227,6 +227,22 @@ object FloatingDistanceInfoUtils {
if(processView!=null){
processView = null
}
actvDistancew?.let {
actvDistancew = null
}
actvDistancewUnit?.let {
actvDistancewUnit = null
}
actvSurplusTime?.let {
actvSurplusTime = null
}
actvArrivedTime?.let {
actvArrivedTime = null
}
actvSpeed?.let {
actvSpeed = null
}
isShowing = false
} catch (e: Exception) {
e.printStackTrace()

View File

@@ -77,46 +77,6 @@ class VideoActivity : AppCompatActivity() {
private var videotype = VIDEOTYPE_CONSULT
val callBack = object : ICallback.Stub() {
override fun onResult(meters :Long, timeInSecond:Long,speed:Float) {
if(speed<0){
// 距离单位
var disUnit = "公里"
// 距离
var remainDis: String? = "0"
if (meters > 0) {
if (meters / 1000 < 1) {
disUnit = ""
remainDis = Math.round(meters.toFloat()).toString()
} else {
disUnit = "公里"
remainDis = NumberFormatUtil.formatLong(meters.toDouble() / 1000)
}
}
// 剩余时间
val time = Math.ceil(timeInSecond.toDouble() / 60f).toInt()
val beforeTime = Calendar.getInstance()
beforeTime.add(Calendar.MINUTE, time)
//到达时间
val arriveTime = DateTimeUtil.formatCalendarToString(beforeTime, DateTimeUtil.TAXI_HH_mm)
FloatingDistanceInfoUtils.setDistance(meters,remainDis,disUnit,time,arriveTime)
}else{
FloatingDistanceInfoUtils.setSpeed(speed)
}
}
override fun postEvent(type: Int) {
when (type) {
EVENT_FINISH -> {
finish()
}
else -> {}
}
}
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
EventBus.getDefault().register(this)
@@ -150,7 +110,7 @@ class VideoActivity : AppCompatActivity() {
}
initListener()
initData()
LeftMenuOpen.registerCallback(callBack)
LeftMenuOpen.registerCallback(LeftMenuOpen.callBack)
}
private fun initConsultData(){
@@ -409,7 +369,7 @@ class VideoActivity : AppCompatActivity() {
CallerLogger.d(SceneConstant.M_TAXI_P + TAG, "onDestroy()")
super.onDestroy()
EventBus.getDefault().unregister(this)
LeftMenuOpen.unregisterCallback(callBack)
LeftMenuOpen.unregisterCallback(LeftMenuOpen.callBack)
releaseOnNewInstance()
OverlayLeftViewUtils.dismissOverlayView(false)
FloatingDistanceInfoUtils.dismissOverlayView()

View File

@@ -832,7 +832,7 @@ public class TaxiModel {
&& mCurrentOCHOrder.orderStatus == TaxiOrderStatusEnum.OnTheWayToEnd.getCode()) {
// 当美化模式(演示模式)开启时: 订单对应自动驾驶开启后置true
FunctionBuildConfig.isIgnoreConditionsDrawAutopilotTrajectoryData = true;
CallerAutoPilotManager.INSTANCE.setDemoMode(true);
CallerAutoPilotManager.INSTANCE.setIPCDemoMode(true);
CallerLogger.INSTANCE.d(M_TAXI + TAG, "美化模式-ignore置为true更新本地order信息");
}
}
@@ -846,7 +846,7 @@ public class TaxiModel {
if (FunctionBuildConfig.isDemoMode) {
// 当美化模式(演示模式)开启时: 取消或订单已完成时置false
FunctionBuildConfig.isIgnoreConditionsDrawAutopilotTrajectoryData = false;
CallerAutoPilotManager.INSTANCE.setDemoMode(false);
CallerAutoPilotManager.INSTANCE.setIPCDemoMode(false);
CallerLogger.INSTANCE.d(M_TAXI + TAG, "美化模式-ignore置为false已完成or清除当前订单");
}
}
@@ -1135,7 +1135,7 @@ public class TaxiModel {
if (FunctionBuildConfig.isDemoMode) {
// 当美化模式(演示模式)开启时: 订单对应自动驾驶开启后置true
FunctionBuildConfig.isIgnoreConditionsDrawAutopilotTrajectoryData = true;
CallerAutoPilotManager.INSTANCE.setDemoMode(true);
CallerAutoPilotManager.INSTANCE.setIPCDemoMode(true);
CallerLogger.INSTANCE.d(M_TAXI + TAG, "美化模式-ignore置为true到达出发点且已开启自动驾驶");
}
}
@@ -1190,7 +1190,7 @@ public class TaxiModel {
if (FunctionBuildConfig.isDemoMode) {
// 当美化模式(演示模式)开启时: 到达目的地置false
FunctionBuildConfig.isIgnoreConditionsDrawAutopilotTrajectoryData = false;
CallerAutoPilotManager.INSTANCE.setDemoMode(false);
CallerAutoPilotManager.INSTANCE.setIPCDemoMode(false);
CallerLogger.INSTANCE.d(M_TAXI + TAG, "美化模式-ignore置为false到达目的地");
}
}

View File

@@ -107,7 +107,7 @@ class DevaToolsProvider : IDevaToolsProvider {
StatusManager.show(container)
}
override fun hideStatusBar(container: ViewGroup) {
StatusManager.hide(container)
override fun hideStatusBar() {
StatusManager.hide()
}
}

View File

@@ -32,6 +32,7 @@ import com.zhjt.mogo_core_function_devatools.status.ui.StatusView
import kotlinx.coroutines.*
import kotlinx.coroutines.flow.*
import mogo_msg.MogoReportMsg
import java.lang.ref.*
import java.util.concurrent.*
@@ -43,6 +44,7 @@ object StatusManager {
private var timer: Job? = null
private var hasInit = false
private val listeners by lazy { CopyOnWriteArrayList<IStatusListener>() }
private var container: WeakReference<ViewGroup>? = null
private val listener = object : IMoGoAutopilotStatusListener {
override fun onAutopilotGuardian(guardianInfo: MogoReportMsg.MogoReportMessage?) {
@@ -152,15 +154,15 @@ object StatusManager {
}
return
}
this.container = WeakReference(container)
val child = StatusView(model, container.context)
container.addView(child, ViewGroup.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT))
}
fun hide(container: ViewGroup) {
container.visibility = View.GONE
fun hide() {
container?.get()?.takeIf { it.visibility == View.VISIBLE }?.run { visibility = View.GONE }
}
private fun onDestroy(ctx: Context) {
hasInit = false
CallerAutoPilotStatusListenerManager.removeListener(TAG)

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 11 KiB

View File

@@ -1214,7 +1214,6 @@ import java.util.*
}
override fun showSmallFragment() {
CallerDevaToolsManager.hideStatusBar(statusBarContainer)
// 加载全览模式图层
val fragmentOverview = ARouter.getInstance().build(MoGoFragmentPaths.PATH_FRAGMENT_OVERVIEW)
.navigation() as BaseFragment
@@ -1226,16 +1225,20 @@ import java.util.*
show(fragmentOverview)
}.commitAllowingStateLoss()
}
CallerDevaToolsManager.hideStatusBar()
}
override fun hideSmallFragment() {
context?.let { CallerDevaToolsManager.showStatusBar(it, statusBarContainer) }
val fragmentOverview = ARouter.getInstance().build(MoGoFragmentPaths.PATH_FRAGMENT_OVERVIEW)
.navigation() as BaseFragment
activity?.supportFragmentManager?.beginTransaction()
?.setCustomAnimations(R.anim.slide_in, R.anim.fade_out)
?.hide(fragmentOverview)
?.setCustomAnimations(R.anim.slide_in, R.anim.fade_out)?.apply {
if (fragmentOverview.isVisible) {
hide(fragmentOverview)
}
}
?.commitAllowingStateLoss()
context?.let { CallerDevaToolsManager.showStatusBar(it, statusBarContainer) }
}
override fun onDestroy() {

View File

@@ -17,7 +17,7 @@ import androidx.annotation.Nullable;
import com.amap.api.maps.AMap;
import com.amap.api.maps.CameraUpdate;
import com.amap.api.maps.CameraUpdateFactory;
import com.amap.api.maps.MapView;
import com.amap.api.maps.TextureMapView;
import com.amap.api.maps.UiSettings;
import com.amap.api.maps.model.BitmapDescriptor;
import com.amap.api.maps.model.BitmapDescriptorFactory;
@@ -65,7 +65,7 @@ public class AMapCustomView
extends RelativeLayout
implements IMoGoMapLocationListener {
public static final String TAG = "AMapCustomView";
private MapView mAMapView;
private TextureMapView mAMapView;
private AMap mAMap;
private int zoomLevel = 15;
private CameraUpdate mCameraUpdate;

View File

@@ -67,7 +67,6 @@ object MarkerDrawerManager {
private fun loopRouteAndWipe(routePoints: List<LatLng>?, lon: Double, lat: Double) {
if (routePoints != null && routePoints.isNotEmpty()) {
val arrivedIndex: Int = getArrivedPointIndex(routePoints, lon, lat)
Log.d("cff", "thread is:${Thread.currentThread().name},arrivedIndex is:$arrivedIndex")
if (arrivedIndex != -1 && lastArrivedIndex != arrivedIndex) {
callback?.onLocationChanged(routePoints, arrivedIndex)
lastArrivedIndex = arrivedIndex

View File

@@ -17,10 +17,11 @@
android:layout_height="match_parent"
android:layout_centerInParent="true">
<com.amap.api.maps.MapView
<com.amap.api.maps.TextureMapView
android:id="@+id/aMapView"
android:layout_width="match_parent"
android:layout_height="match_parent" />
android:layout_height="match_parent"
/>
<TextView
android:id="@+id/overLayer"

View File

@@ -112,5 +112,5 @@ interface IDevaToolsProvider : IProvider {
/**
* 隐藏状态栏
*/
fun hideStatusBar(container: ViewGroup)
fun hideStatusBar()
}

View File

@@ -159,9 +159,9 @@ object CallerDevaToolsManager {
/**
* 隐藏状态栏
*/
fun hideStatusBar(container: ViewGroup) {
fun hideStatusBar() {
if (!AppIdentityModeUtils.isPassenger(FunctionBuildConfig.appIdentityMode)) {
devaToolsProviderApi?.hideStatusBar(container)
devaToolsProviderApi?.hideStatusBar()
}
}
}

View File

@@ -253,6 +253,10 @@ public class AdasChannel implements IAdasNetCommApi, FpgaSocket.IWebSocketConnec
return false;
}
ByteString byteString = ByteString.of(bytes);
if (!byteString.startsWith(Constants.RAW_MG)) {
CupidLogUtils.e(TAG, "协议不匹配,命令下发失败 bytes=" + ByteUtil.byteArrToHex(bytes));
return false;
}
return mSocket.sendDataWebSocket(byteString);
}

View File

@@ -72,7 +72,12 @@ public class MogoRouteOverlayManager implements
if (from != 1 || location == null) {
return;
}
if (isArriveAtStation.get() || autopilotMode.get() != 1) {
if (isArriveAtStation.get()) {
RouteOverlayDrawer.getInstance().clearMogoRouteOverlay();
return;
}
boolean force = FunctionBuildConfig.isIgnoreConditionsDrawAutopilotTrajectoryData;
if (!force && autopilotMode.get() != 1) {
RouteOverlayDrawer.getInstance().clearMogoRouteOverlay();
return;
}