-
-
+
@@ -12,7 +12,7 @@
android:right="3px"
android:top="3px">
-
+
diff --git a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/IOperationChangedListener.java b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/IOperationChangedListener.java
new file mode 100644
index 0000000000..af7fc38699
--- /dev/null
+++ b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/IOperationChangedListener.java
@@ -0,0 +1,6 @@
+package com.mogo.och.taxi;
+
+public interface IOperationChangedListener {
+ void onOperationChanged(boolean launch);
+ void onOrderStatusChanged(int status);
+}
diff --git a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/MogoOCHTaxi.java b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/MogoOCHTaxi.java
index d2a0674630..fb79ee489e 100644
--- a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/MogoOCHTaxi.java
+++ b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/MogoOCHTaxi.java
@@ -8,7 +8,10 @@ import com.alibaba.android.arouter.facade.annotation.Route;
import com.mogo.module.common.MogoApisHandler;
import com.mogo.och.IMogoOCH;
import com.mogo.och.OCHConstants;
+import com.mogo.och.taxi.ui.OCHTaxiFragment;
import com.mogo.och.taxi.ui.OCHTaxiUiController;
+import com.mogo.service.statusmanager.IMogoStatusChangedListener;
+import com.mogo.service.statusmanager.StatusDescriptor;
import com.mogo.utils.UiThreadHandler;
import com.mogo.utils.logger.Logger;
@@ -20,13 +23,17 @@ public
* 网约车-出租车
*/
@Route( path = OCHConstants.PATH )
-class MogoOCHTaxi implements IMogoOCH {
+class MogoOCHTaxi implements IMogoOCH , IMogoStatusChangedListener {
private static final String TAG = "MogoOCHTaxi";
-
+ private OCHTaxiFragment ochTaxiFragment;
+ private FragmentActivity mActivity;
+ private int mContainerId;
@Override
public void init( FragmentActivity activity, int containerId ) {
- MogoOCHTaxiModel.getInstance().init( activity.getApplicationContext() );
+ this.mActivity = activity;
+ this.mContainerId = containerId;
+// MogoOCHTaxiModel.getInstance().init( activity.getApplicationContext() );
OCHTaxiUiController.getInstance().init( activity, containerId );
UiThreadHandler.postDelayed( () -> {
@@ -38,5 +45,36 @@ class MogoOCHTaxi implements IMogoOCH {
@Override
public void init( Context context ) {
Logger.d( TAG, "init" );
+ MogoApisHandler.getInstance().getApis().getStatusManagerApi().registerStatusChangedListener("ochTaxi", StatusDescriptor.VR_MODE,this);
+ MogoApisHandler.getInstance().getApis().getStatusManagerApi().registerStatusChangedListener("ochTaxi", StatusDescriptor.TOP_VIEW,this);
+ }
+
+ private void showFragment() {
+ if (ochTaxiFragment == null) {
+ Logger.d(TAG, "准备add fragment======");
+ ochTaxiFragment = new OCHTaxiFragment();
+ mActivity.getSupportFragmentManager().beginTransaction().add(mContainerId, ochTaxiFragment).commit();
+ return;
+ }
+ Logger.d(TAG, "准备show fragment");
+ mActivity.getSupportFragmentManager().beginTransaction().show(ochTaxiFragment).commit();
+ }
+
+ private void hideFragment(){
+ if (ochTaxiFragment != null){
+ mActivity.getSupportFragmentManager().beginTransaction().hide(ochTaxiFragment).commit();
+ }
+ }
+
+ @Override
+ public void onStatusChanged(StatusDescriptor descriptor, boolean isTrue) {
+ if (descriptor == StatusDescriptor.VR_MODE){
+ if (isTrue){
+ showFragment();
+ MogoOCHTaxiModel.getInstance().init( mActivity.getApplicationContext() );
+ }else {
+ hideFragment();
+ }
+ }
}
}
diff --git a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/MogoOCHTaxiModel.java b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/MogoOCHTaxiModel.java
index 0588c710ed..c044046c82 100644
--- a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/MogoOCHTaxiModel.java
+++ b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/MogoOCHTaxiModel.java
@@ -5,12 +5,12 @@ import android.content.Intent;
import android.location.Location;
import android.net.ConnectivityManager;
import android.text.TextUtils;
+import android.util.Log;
import com.mogo.cloud.commons.utils.CoordinateUtils;
import com.mogo.cloud.passport.MoGoAiCloudClientConfig;
import com.mogo.commons.data.BaseData;
import com.mogo.commons.network.SubscribeImpl;
-import com.mogo.commons.network.Utils;
import com.mogo.map.MogoLatLng;
import com.mogo.map.navi.IMogoCarLocationChangedListener2;
import com.mogo.module.common.MogoApisHandler;
@@ -93,16 +93,18 @@ class MogoOCHTaxiModel {
*/
private boolean mIsArriveAtEndStation = false;
- /**
- * 乘客已到达上车站点
- */
- private boolean mIsUserArriveAtStartStation = false;
+// /**
+// * 乘客已到达上车站点
+// */
+// private boolean mIsUserArriveAtStartStation = false;
/**
* 查询订单信息重试次数
*/
private int mRetryCounter = 0;
+ private int mOCHRHCarstatus = -1;
+
private Object readResolve() {
// 阻止反序列化,必须实现 Serializable 接口
return sInstance;
@@ -111,6 +113,9 @@ class MogoOCHTaxiModel {
public void init( Context context ) {
mContext = context.getApplicationContext();
+ if (mOCHTaxiServiceApi == null){
+ mOCHTaxiServiceApi = MogoApisHandler.getInstance().getApis().getNetworkApi().create(OCHTaxiServiceApi.class, HostConst.OCH_DOMAIN);
+ }
MogoApisHandler.getInstance()
.getApis()
.getSocketManagerApi( context )
@@ -127,7 +132,47 @@ class MogoOCHTaxiModel {
.getApis()
.getIntentManagerApi()
.registerIntentListener( ConnectivityManager.CONNECTIVITY_ACTION, mNetWorkIntentListener );
- if ( NetworkUtils.isConnected( mContext ) ) {
+// if ( NetworkUtils.isConnected( mContext ) ) {
+// restoreOrderInfo();
+// }
+// if ( NetworkUtils.isConnected( mContext ) ) {
+// querryCarStatus();
+// }
+ }
+
+ public void querryCarStatus() {
+ mOCHTaxiServiceApi.queryCarStatus( new OCHCarStatus (MoGoAiCloudClientConfig.getInstance().getSn(),0))
+ .subscribeOn(Schedulers.io())
+ .observeOn( AndroidSchedulers.mainThread() )
+ .subscribe( new SubscribeImpl< OCHCarStatusResponse >(RequestOptions.create(mContext)) {
+ @Override
+ public void onSuccess(OCHCarStatusResponse data) {
+ super.onSuccess(data);
+ Logger.e(TAG,"querryCarStatus:"+data.data.status);
+ mOCHRHCarstatus = data.data.status;
+ //更新view
+ OCHTaxiUiController.getInstance().onOperationChanged(mOCHRHCarstatus==1);
+ //刷新数据
+ updateData(mOCHRHCarstatus);
+ }
+
+ @Override
+ public void onError(Throwable e) {
+ super.onError(e);
+ Logger.e(TAG,"querryCarStatus:"+e.getMessage());
+ }
+
+ @Override
+ public void onError(String message, int code) {
+ super.onError(message,code);
+ Logger.e(TAG,"querryCarStatus:"+message);
+ }
+ });
+ }
+
+ public void updateData(int status){
+ if (status == 1){
+ //查询订单
restoreOrderInfo();
}
}
@@ -141,23 +186,36 @@ class MogoOCHTaxiModel {
if ( mCurrentOCHOrder == null ) {
// 订单恢复
String orderInfo = SharedPrefsMgr.getInstance( mContext ).getString( SP_KEY_OCH_TAXI_ORDER );
+ Logger.d(TAG,"restoreOrderInfo:"+orderInfo);
if ( !TextUtils.isEmpty( orderInfo ) ) {
mCurrentOCHOrder = GsonUtil.objectFromJson( orderInfo, OCHTaxiOrderResponse.class );
- if ( mCurrentOCHOrder == null ) {
- // 解决本地没有缓存订单号的问题
- query2RestoreOrderStatus( null );
- } else {
- query2RestoreOrderStatus( mCurrentOCHOrder.orderNo );
- }
- } else {
- // 解决本地没有缓存订单号的问题
- query2RestoreOrderStatus( null );
}
- } else {
- query2RestoreOrderStatus( mCurrentOCHOrder.orderNo );
}
+ query2RestoreOrderStatus(mCurrentOCHOrder == null ? null : mCurrentOCHOrder.orderNo);
}
+// private void restoreOrderInfo_() {
+// Logger.d( TAG, "重新查询订单状态" );
+// mRetryCounter = 0;
+// if ( mCurrentOCHOrder == null ) {
+// // 订单恢复
+// String orderInfo = SharedPrefsMgr.getInstance( mContext ).getString( SP_KEY_OCH_TAXI_ORDER );
+// if ( !TextUtils.isEmpty( orderInfo ) ) {
+// mCurrentOCHOrder = GsonUtil.objectFromJson( orderInfo, OCHTaxiOrderResponse.class );
+// if ( mCurrentOCHOrder == null ) {
+// // 解决本地没有缓存订单号的问题
+// query2RestoreOrderStatus( null );
+// } else {
+// query2RestoreOrderStatus( mCurrentOCHOrder.orderNo );
+// }
+// } else {
+// // 解决本地没有缓存订单号的问题
+// query2RestoreOrderStatus( null );
+// }
+// } else {
+// query2RestoreOrderStatus( mCurrentOCHOrder.orderNo );
+// }
+// }
/**
* 查询订单状态,来恢复旧订单(因crash导致应用重启、断网没收到推送等)状态
*
@@ -171,62 +229,65 @@ class MogoOCHTaxiModel {
* @param orderNo
*/
private void query2RestoreOrderStatus( String orderNo ) {
+ Logger.e(TAG,"query2RestoreOrderStatus:"+orderNo);
queryOCHOrderStatus( orderNo, new OCHOrderStatusCallback< OCHTaxiOrderResponse2 >() {
@Override
public void onSuccess( OCHTaxiOrderResponse2 data ) {
- if ( data == null || data.result == null ) {
+
+ if ( data == null || data.data == null) {
Logger.d( TAG, "订单已取消或已完成" );
clearCurrentOCHOrder();
- OCHTaxiUiController.getInstance().removeFragment();
+ OCHTaxiUiController.getInstance().onOrderStatusChanged(OCHOrderStatus.None.getCode());
return;
}
convertCurrentOrder( data );
- OCHOrderStatus status = OCHOrderStatus.valueOf( data.result.orderDispatchType );
+ OCHOrderStatus status = OCHOrderStatus.valueOf( data.data.orderDispatchType );
+ OCHTaxiUiController.getInstance().onOrderStatusChanged(data.data.orderDispatchType);
switch ( status ) {
case Completed:
TipToast.shortTip( mContext.getString( R.string.module_och_taxi_order_completed ) );
clearCurrentOCHOrder();
- OCHTaxiUiController.getInstance().removeFragment();
+// OCHTaxiUiController.getInstance().removeFragment();
break;
case Cancel:
TipToast.shortTip( mContext.getString( R.string.module_och_taxi_order_cancel ) );
clearCurrentOCHOrder();
- OCHTaxiUiController.getInstance().removeFragment();
+// OCHTaxiUiController.getInstance().removeFragment();
break;
case ArriveAtEndStation:
mIsArriveAtEndStation = true;
mIsArriveAtStartStation = false;
mIsOnTheWay2EndStation = false;
- mIsUserArriveAtStartStation = false;
- OCHTaxiUiController.getInstance().addFragment();
+// mIsUserArriveAtStartStation = false;
+// OCHTaxiUiController.getInstance().addFragment();
break;
case ArriveAtStartStation:
mIsArriveAtStartStation = true;
mIsArriveAtEndStation = false;
mIsOnTheWay2EndStation = false;
- mIsUserArriveAtStartStation = false;
- OCHTaxiUiController.getInstance().addFragment();
+// mIsUserArriveAtStartStation = false;
+// OCHTaxiUiController.getInstance().addFragment();
break;
case UserArriveAtStartStation:
mIsArriveAtStartStation = true;
mIsArriveAtEndStation = false;
mIsOnTheWay2EndStation = false;
- mIsUserArriveAtStartStation = true;
- OCHTaxiUiController.getInstance().addFragment();
+// mIsUserArriveAtStartStation = true;
+// OCHTaxiUiController.getInstance().addFragment();
break;
case OnTheWayToEndStation:
mIsArriveAtStartStation = false;
mIsArriveAtEndStation = false;
mIsOnTheWay2EndStation = true;
- mIsUserArriveAtStartStation = false;
- OCHTaxiUiController.getInstance().addFragment();
+// mIsUserArriveAtStartStation = false;
+// OCHTaxiUiController.getInstance().addFragment();
break;
case OnTheWayToStartStation:
default:
mIsArriveAtStartStation = false;
mIsArriveAtEndStation = false;
mIsOnTheWay2EndStation = false;
- mIsUserArriveAtStartStation = false;
+// mIsUserArriveAtStartStation = false;
mOrderMsgListener.onMsgReceived( mCurrentOCHOrder );
break;
}
@@ -256,24 +317,24 @@ class MogoOCHTaxiModel {
if ( mCurrentOCHOrder == null ) {
mCurrentOCHOrder = new OCHTaxiOrderResponse();
}
- mCurrentOCHOrder.orderNo = data.result.orderNo;
- mCurrentOCHOrder.orderDispatchType = data.result.orderDispatchType;
- mCurrentOCHOrder.endStation = data.result.endStation;
- mCurrentOCHOrder.startStation = data.result.startStation;
- mCurrentOCHOrder.travelDistance = data.result.travelDistance;
- mCurrentOCHOrder.orderType = data.result.orderType;
+ mCurrentOCHOrder.orderNo = data.data.orderNo;
+ mCurrentOCHOrder.orderDispatchType = data.data.orderDispatchType;
+ mCurrentOCHOrder.endStation = data.data.endStation;
+ mCurrentOCHOrder.startStation = data.data.startStation;
+ mCurrentOCHOrder.travelDistance = data.data.travelDistance;
+ mCurrentOCHOrder.orderType = data.data.orderType;
mCurrentOCHOrder.drivingRoutes = new ArrayList<>();
OCHTaxiOrderResponse.OCHTaxiStation startStation = new OCHTaxiOrderResponse.OCHTaxiStation();
- startStation.lon = data.result.startStationCoordinate.get( 0 );
- startStation.lat = data.result.startStationCoordinate.get( 1 );
- startStation.siteId = data.result.startStationId;
- startStation.siteName = data.result.startStation;
+ startStation.lon = data.data.startStationCoordinate.get( 0 );
+ startStation.lat = data.data.startStationCoordinate.get( 1 );
+ startStation.siteId = data.data.startStationId;
+ startStation.siteName = data.data.startStation;
mCurrentOCHOrder.drivingRoutes.add( startStation );
OCHTaxiOrderResponse.OCHTaxiStation endStation = new OCHTaxiOrderResponse.OCHTaxiStation();
- endStation.lon = data.result.endStationCoordinate.get( 0 );
- endStation.lat = data.result.endStationCoordinate.get( 1 );
- endStation.siteId = data.result.endStationId;
- endStation.siteName = data.result.endStation;
+ endStation.lon = data.data.endStationCoordinate.get( 0 );
+ endStation.lat = data.data.endStationCoordinate.get( 1 );
+ endStation.siteId = data.data.endStationId;
+ endStation.siteName = data.data.endStation;
mCurrentOCHOrder.drivingRoutes.add( endStation );
cacheOrderInfo2Native( mCurrentOCHOrder );
@@ -288,12 +349,55 @@ class MogoOCHTaxiModel {
Logger.d( TAG, "onIntentReceived = %s", intentStr );
if ( ConnectivityManager.CONNECTIVITY_ACTION.equals( intentStr ) ) {
if ( NetworkUtils.isConnected( mContext ) ) {
- restoreOrderInfo();
+// restoreOrderInfo();
+ querryCarStatus();
}
}
}
};
+ public void changedOperationStatus() {
+ if ( mOCHRHCarstatus == -1){
+ querryCarStatus();
+ return;
+ }
+
+ if (checkCurrentOCHOrder()){
+ TipToast.shortTip( "订单未完成,无法下线收车" );
+ return;
+ }
+
+ int status = mOCHRHCarstatus == 1 ? 0 : 1;
+ mOCHTaxiServiceApi.updateCarStatus(new OCHCarStatus(MoGoAiCloudClientConfig.getInstance().getSn(),status))
+ .subscribeOn(Schedulers.io())
+ .observeOn( AndroidSchedulers.mainThread() )
+ .subscribe( new SubscribeImpl< OCHCarStatusResponse >(RequestOptions.create(mContext)) {
+ @Override
+ public void onSuccess(OCHCarStatusResponse o) {
+ super.onSuccess(o);
+ Logger.d(TAG,"OCHCarStatusResponse:"+o.data.status);
+ mOCHRHCarstatus = o.data.status;
+// mIsWork = mOCHRHCarstatus.status == 1;
+// mOCHRHCarstatus.status = status;
+ OCHTaxiUiController.getInstance().onOperationChanged(mOCHRHCarstatus == 1);
+ updateData(mOCHRHCarstatus);
+ Logger.d(TAG,"changeCarStatus:"+status);
+ }
+
+ @Override
+ public void onError(Throwable e) {
+ super.onError(e);
+ Logger.d(TAG,"changeCarStatus:"+e.getMessage());
+ }
+
+ @Override
+ public void onError(String message, int code) {
+ super.onError(message, code);
+ Logger.d(TAG,"changeCarStatus:"+message);
+ }
+ });
+ }
+
/**
* 自车定位
*/
@@ -301,12 +405,12 @@ class MogoOCHTaxiModel {
@Override
public void onCarLocationChanged2( Location location ) {
- Logger.d( TAG, "定位已判断是否达到上车站点: 起点(%s, %s), 当前位置(%s, %s)",
- mCurrentOCHOrder.drivingRoutes.get( 0 ).lon,
- mCurrentOCHOrder.drivingRoutes.get( 0 ).lat,
- location.getLongitude(),
- location.getLatitude()
- );
+// Logger.d( TAG, "定位已判断是否达到上车站点: 起点(%s, %s), 当前位置(%s, %s)",
+// mCurrentOCHOrder.drivingRoutes.get( 0 ).lon,
+// mCurrentOCHOrder.drivingRoutes.get( 0 ).lat,
+// location.getLongitude(),
+// location.getLatitude()
+// );
onLocationChanged( location );
}
@@ -331,9 +435,9 @@ class MogoOCHTaxiModel {
if ( mIsArriveAtStartStation ) {
return;
}
- if ( mIsUserArriveAtStartStation ) {
- return;
- }
+// if ( mIsUserArriveAtStartStation ) {
+// return;
+// }
judgeStartStation( location );
}
@@ -392,14 +496,14 @@ class MogoOCHTaxiModel {
return mIsArriveAtEndStation;
}
- /**
- * 用户是否达到上车站点
- *
- * @return
- */
- public boolean isUserArriveAtStartStation() {
- return mIsUserArriveAtStartStation;
- }
+// /**
+// * 用户是否达到上车站点
+// *
+// * @return
+// */
+// public boolean isUserArriveAtStartStation() {
+// return mIsUserArriveAtStartStation;
+// }
/**
* 设置去往终点状态
@@ -446,7 +550,8 @@ class MogoOCHTaxiModel {
if ( !isArriveAtStartStation() ) {
registerCarLocationListener();
}
- OCHTaxiUiController.getInstance().addFragment();
+// OCHTaxiUiController.getInstance().addFragment();
+ OCHTaxiUiController.getInstance().onOrderStatusChanged(mCurrentOCHOrder.orderDispatchType);
}
}
@@ -510,7 +615,7 @@ class MogoOCHTaxiModel {
break;
case UserArriveAtStartStation:
mIsArriveAtStartStation = true;
- mIsUserArriveAtStartStation = true;
+// mIsUserArriveAtStartStation = true;
OCHTaxiUiController.getInstance().onUserArriveAtStartStation();
break;
default:
@@ -576,11 +681,13 @@ class MogoOCHTaxiModel {
if ( callback != null ) {
callback.onError();
}
+ Logger.e(TAG,"updateOCHOrderStatus:"+e.getMessage());
}
@Override
public void onError( String message, int code ) {
super.onError( message, code );
+ Logger.e(TAG,"updateOCHOrderStatus:"+message);
if ( callback != null ) {
callback.onFail();
}
@@ -620,6 +727,7 @@ class MogoOCHTaxiModel {
@Override
public void onError( String message, int code ) {
super.onError( message, code );
+ Logger.e("MogoOCHTaxi","queryOCHOrderStatus:"+message);
if ( callback != null ) {
callback.onFail();
}
@@ -635,7 +743,7 @@ class MogoOCHTaxiModel {
mIsArriveAtStartStation = false;
mIsArriveAtEndStation = false;
mIsOnTheWay2EndStation = false;
- mIsUserArriveAtStartStation = false;
+// mIsUserArriveAtStartStation = false;
SharedPrefsMgr.getInstance( mContext ).remove( SP_KEY_OCH_TAXI_ORDER );
}
@@ -646,8 +754,7 @@ class MogoOCHTaxiModel {
*/
public boolean checkCurrentOCHOrder() {
if ( mCurrentOCHOrder != null
- && mCurrentOCHOrder.drivingRoutes != null
- && mCurrentOCHOrder.drivingRoutes.size() >= 2 ) {
+ && mCurrentOCHOrder.drivingRoutes != null) {
return true;
}
return false;
diff --git a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/OCHCarStatus.java b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/OCHCarStatus.java
new file mode 100644
index 0000000000..761fa03877
--- /dev/null
+++ b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/OCHCarStatus.java
@@ -0,0 +1,20 @@
+package com.mogo.och.taxi;
+
+import com.mogo.commons.data.BaseData;
+
+public
+/**
+ *
+ * 修改/查询网约车-出租车订单状态的数据结构
+ */
+class OCHCarStatus extends BaseData {
+
+ public String sn;// 不排除本地没有缓存订单号的情况
+ public int status; //0 收车 1出车
+
+ public OCHCarStatus(String sn,
+ int status ) {
+ this.sn = sn;
+ this.status = status;
+ }
+}
diff --git a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/OCHCarStatusResponse.java b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/OCHCarStatusResponse.java
new file mode 100644
index 0000000000..62c76e6233
--- /dev/null
+++ b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/OCHCarStatusResponse.java
@@ -0,0 +1,29 @@
+package com.mogo.och.taxi;
+
+import com.mogo.commons.data.BaseData;
+
+public
+/**
+ *
+ * 修改/查询网约车-出租车订单状态的数据结构
+ */
+class OCHCarStatusResponse extends BaseData {
+
+ public String sn;// 不排除本地没有缓存订单号的情况
+ public int status; //0 收车 1出车
+ public Result data;
+
+ public OCHCarStatusResponse(String sn,
+ int status ) {
+ this.sn = sn;
+ this.status = status;
+ }
+ public static class Result{
+ public int id;
+ public String sn;
+ public String areaCode;
+ public String plateNumber;
+ public int status;
+// String remark;
+ }
+}
diff --git a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/OCHTaxiOrderResponse2.java b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/OCHTaxiOrderResponse2.java
index 16d92726fb..d01f18014b 100644
--- a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/OCHTaxiOrderResponse2.java
+++ b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/OCHTaxiOrderResponse2.java
@@ -13,7 +13,7 @@ public
*/
class OCHTaxiOrderResponse2 extends BaseData {
- public Result result;
+ public Result data;
public static class Result {
public String _id;
diff --git a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/OCHTaxiServiceApi.java b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/OCHTaxiServiceApi.java
index b9ef5421cf..d1fed854ac 100644
--- a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/OCHTaxiServiceApi.java
+++ b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/OCHTaxiServiceApi.java
@@ -23,7 +23,7 @@ interface OCHTaxiServiceApi {
* @return
*/
@Headers( {"Content-type:application/json;charset=UTF-8"} )
- @POST( "/yycp-onlinecar-hailing/onlineCarHailing/order/updateOCHOrder/v1" )
+ @POST( "/yycp-onlinecar-hailing/onlineCarHailing/order/updateOCHOrderState/v1" )
Observable< BaseData > updateOrderStatus( @Body OCHTaxiOrderStatus status );
/**
@@ -32,6 +32,20 @@ interface OCHTaxiServiceApi {
* @return
*/
@Headers( {"Content-type:application/json;charset=UTF-8"} )
- @POST( "/yycp-onlinecar-hailing/onlineCarHailing/order/queryOCHOrderDetails/v1" )
+ @POST( "/yycp-onlinecar-hailing/onlineCarHailing/order/queryOrderForCar/v1" )
Observable< OCHTaxiOrderResponse2 > queryOrder( @Body OCHTaxiOrderStatus status );
+ /**
+ * 查询网约车状态
+ */
+ @Headers({"Content-type:application/json;charset=UTF-8"})
+ @POST("/yycp-onlinecar-hailing/onlineCarHailing/order/queryTaxiCarStatus/v1")
+ Observable queryCarStatus(@Body OCHCarStatus sn );
+
+
+ /**
+ * 更新网约车状态
+ */
+ @Headers({"Content-type:application/json;charset=UTF-8"})
+ @POST("/yycp-onlinecar-hailing/onlineCarHailing/order/updateTaxiCarStatus/v1")
+ Observable updateCarStatus(@Body OCHCarStatus status );
}
diff --git a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/OCHTaxiFragment.java b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/OCHTaxiFragment.java
index a8861ae85e..ad814460dd 100644
--- a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/OCHTaxiFragment.java
+++ b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/OCHTaxiFragment.java
@@ -8,12 +8,14 @@ import android.widget.TextView;
import androidx.annotation.NonNull;
import com.mogo.cloud.commons.utils.CoordinateUtils;
+import com.mogo.commons.voice.AIAssist;
import com.mogo.map.MogoLatLng;
import com.mogo.map.navi.IMogoCarLocationChangedListener2;
import com.mogo.module.common.MogoApisHandler;
import com.mogo.och.BaseOchFragment;
import com.mogo.och.taxi.IMogoADASAutoPilotStatusChangedListener;
import com.mogo.och.taxi.IMogoOCHTaxiArriveCallback;
+import com.mogo.och.taxi.IOperationChangedListener;
import com.mogo.och.taxi.MogoOCHTaxiModel;
import com.mogo.och.taxi.OCHOrderStatus;
import com.mogo.och.taxi.OCHOrderStatusCallback;
@@ -35,6 +37,7 @@ class OCHTaxiFragment extends BaseOchFragment< OCHTaxiView, OCHTaxiPresenter > i
IMogoStatusChangedListener,
IMogoOCHTaxiArriveCallback,
IMogoADASAutoPilotStatusChangedListener,
+ IOperationChangedListener,
IMogoCarLocationChangedListener2 {
public static final String TAG = "OCHTaxiFragment";
@@ -52,7 +55,6 @@ class OCHTaxiFragment extends BaseOchFragment< OCHTaxiView, OCHTaxiPresenter > i
private TextView mStartStationName;
private TextView mEndStationName;
private TextView mDistance;
-
@Override
public int getStationPanelViewId() {
return R.layout.module_och_taxi_panel;
@@ -62,6 +64,7 @@ class OCHTaxiFragment extends BaseOchFragment< OCHTaxiView, OCHTaxiPresenter > i
public void restartAutopilot() {
// 在自动驾驶中,才会有重新开启自动驾驶的操作
if ( MogoOCHTaxiModel.getInstance().isOnTheWay2EndStation() ) {
+ Logger.d( TAG, "restartAutopilot" );
MogoOCHTaxiModel.getInstance().startAutoPilot();
}
}
@@ -74,9 +77,11 @@ class OCHTaxiFragment extends BaseOchFragment< OCHTaxiView, OCHTaxiPresenter > i
mEndStationName = findViewById( R.id.module_och_taxi_order_end_station );
mDistance = findViewById( R.id.module_och_taxi_order_distance );
- showPanel();
+// showPanel();
+ hidPanel();
initListeners();
- updateOrderStatus();
+ // TODO: 2021/6/18 调整接口刷新时间
+// updateOrderStatus();
if ( MogoApisHandler.getInstance()
.getApis()
.getStatusManagerApi()
@@ -85,8 +90,8 @@ class OCHTaxiFragment extends BaseOchFragment< OCHTaxiView, OCHTaxiPresenter > i
} else {
flatMode();
}
- // 出租车不需要开启按钮
- tvOperationStatus.setVisibility(View.GONE);
+
+ tvOperationStatus.setVisibility(View.VISIBLE);
}
private void initListeners() {
@@ -96,6 +101,7 @@ class OCHTaxiFragment extends BaseOchFragment< OCHTaxiView, OCHTaxiPresenter > i
.registerStatusChangedListener( TAG, StatusDescriptor.VR_MODE, this );
OCHTaxiUiController.getInstance().setOCHTaxiArriveCallback( this );
OCHTaxiUiController.getInstance().setAutoPilotStatusChangedListener( this );
+ OCHTaxiUiController.getInstance().setOperationChangeListener(this);
MogoApisHandler.getInstance()
.getApis()
.getRegisterCenterApi()
@@ -117,6 +123,12 @@ class OCHTaxiFragment extends BaseOchFragment< OCHTaxiView, OCHTaxiPresenter > i
}
}
+ @Override
+ protected void onChangeOperationStatus() {
+ super.onChangeOperationStatus();
+ MogoOCHTaxiModel.getInstance().changedOperationStatus();
+ }
+
private void vrMode() {
if ( mRootView != null ) {
mRootView.setVisibility(
@@ -151,15 +163,17 @@ class OCHTaxiFragment extends BaseOchFragment< OCHTaxiView, OCHTaxiPresenter > i
} else if ( MogoOCHTaxiModel.getInstance().isArriveAtStartStation() ) {
Logger.d( TAG, "已经达到起点" );
mOrderStatus.setText( R.string.module_och_taxi_waiting );
- if ( MogoOCHTaxiModel.getInstance().isUserArriveAtStartStation() ) {
- Logger.d( TAG, "乘客已上车" );
- slidePanelView.setVisibility( View.VISIBLE );
-// if ( MogoApisHandler.getInstance().getApis().getAdasControllerApi().getAutopilotStatus() == IMogoAdasOCHCallback.STATUS_AUTOPILOT_ENABLE ) {
-// } else {
-// slidePanelView.setVisibility( View.GONE );
-// }
- slidePanelView.setText( getString( R.string.module_och_taxi_arrive_at_start_station ) );
- }
+// if ( MogoOCHTaxiModel.getInstance().isUserArriveAtStartStation() ) {
+// Logger.d( TAG, "乘客已上车" );
+// slidePanelView.setVisibility( View.VISIBLE );
+//// if ( MogoApisHandler.getInstance().getApis().getAdasControllerApi().getAutopilotStatus() == IMogoAdasOCHCallback.STATUS_AUTOPILOT_ENABLE ) {
+//// } else {
+//// slidePanelView.setVisibility( View.GONE );
+//// }
+// slidePanelView.setText( getString( R.string.module_och_taxi_arrive_at_start_station ) );
+// }
+ slidePanelView.setVisibility( View.VISIBLE );
+ slidePanelView.setText( getString( R.string.module_och_taxi_arrive_at_start_station ) );
} else if ( MogoOCHTaxiModel.getInstance().checkCurrentOCHOrder() ) {
Logger.d( TAG, "去往上车站点" );
slidePanelView.setVisibility( View.GONE );
@@ -247,6 +261,7 @@ class OCHTaxiFragment extends BaseOchFragment< OCHTaxiView, OCHTaxiPresenter > i
.unregisterStatusChangedListener( TAG, StatusDescriptor.VR_MODE, this );
OCHTaxiUiController.getInstance().setOCHTaxiArriveCallback( null );
OCHTaxiUiController.getInstance().setAutoPilotStatusChangedListener( null );
+ OCHTaxiUiController.getInstance().setOperationChangeListener(null);
MogoApisHandler.getInstance()
.getApis()
.getRegisterCenterApi()
@@ -269,7 +284,7 @@ class OCHTaxiFragment extends BaseOchFragment< OCHTaxiView, OCHTaxiPresenter > i
Logger.d( TAG, "更新状态成功" );
MogoOCHTaxiModel.getInstance().clearCurrentOCHOrder();
MogoOCHTaxiModel.getInstance().cancelAutopilot();
- OCHTaxiUiController.getInstance().removeFragment();
+ OCHTaxiUiController.getInstance().onOrderStatusChanged(0);
}
@Override
@@ -284,8 +299,8 @@ class OCHTaxiFragment extends BaseOchFragment< OCHTaxiView, OCHTaxiPresenter > i
} );
return;
// 乘客已确认到达起点,前往下一站并开启自动驾驶
- } else if ( MogoOCHTaxiModel.getInstance().isUserArriveAtStartStation()
- && !MogoOCHTaxiModel.getInstance().isOnTheWay2EndStation() ) {
+ } else if ( !MogoOCHTaxiModel.getInstance().isOnTheWay2EndStation() ) {
+// MogoOCHTaxiModel.getInstance().isUserArriveAtStartStation() &&
MogoOCHTaxiModel.getInstance().startAutoPilot();
}
}
@@ -367,4 +382,33 @@ class OCHTaxiFragment extends BaseOchFragment< OCHTaxiView, OCHTaxiPresenter > i
}
mLocation = location;
}
+
+ @Override
+ public void onOperationChanged(boolean launch) {
+ Logger.e(TAG,"onOperationChanged:"+ launch);
+ isOperationStatus = launch;
+ if ( launch ) {
+ tvOperationStatus.setText( "收车" );
+// showSlidePanle("滑动出发");
+// showPanel();
+ } else {
+ AIAssist.getInstance(getContext()).speakTTSVoice("已收车");
+ tvOperationStatus.setText("出车");
+// hideSlidePanel();
+// hidPanel();
+ }
+// changeLayoutViewStatus(launch);
+ }
+
+ private void changeLayoutViewStatus(boolean launch) {
+ getPanelView().setVisibility(launch ? View.VISIBLE : View.INVISIBLE);
+ }
+
+ @Override
+ public void onOrderStatusChanged(int status) {
+ getActivity().runOnUiThread(() -> {
+ getPanelView().setVisibility(status != 0 ? View.VISIBLE : View.INVISIBLE);
+ updateOrderStatus();
+ });
+ }
}
diff --git a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/OCHTaxiUiController.java b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/OCHTaxiUiController.java
index 3cec64867f..a7d025469a 100644
--- a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/OCHTaxiUiController.java
+++ b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/OCHTaxiUiController.java
@@ -10,6 +10,7 @@ import androidx.fragment.app.FragmentManager;
import com.mogo.module.common.MogoApisHandler;
import com.mogo.och.taxi.IMogoADASAutoPilotStatusChangedListener;
import com.mogo.och.taxi.IMogoOCHTaxiArriveCallback;
+import com.mogo.och.taxi.IOperationChangedListener;
import com.mogo.och.taxi.MogoOCHTaxiModel;
import com.mogo.utils.UiThreadHandler;
import com.mogo.utils.logger.Logger;
@@ -31,6 +32,7 @@ class OCHTaxiUiController implements IMogoOCHTaxiArriveCallback, IMogoADASAutoPi
private IMogoOCHTaxiArriveCallback mOCHTaxiArriveCallback;
private IMogoADASAutoPilotStatusChangedListener mAutoPilotStatusChangedListener;
+ private IOperationChangedListener mOperationChangedLisnter;
private OCHTaxiUiController() {
}
@@ -101,6 +103,10 @@ class OCHTaxiUiController implements IMogoOCHTaxiArriveCallback, IMogoADASAutoPi
this.mAutoPilotStatusChangedListener = autoPilotStatusChangedListener;
}
+ public void setOperationChangeListener(IOperationChangedListener listener){
+ this.mOperationChangedLisnter = listener;
+ }
+
@Override
public void onTheWay2StartStation() {
runOnUIThread( () -> {
@@ -167,6 +173,8 @@ class OCHTaxiUiController implements IMogoOCHTaxiArriveCallback, IMogoADASAutoPi
}
+
+
/**
* 进入鹰眼模式,设置手势缩放地图失效
*/
@@ -178,4 +186,19 @@ class OCHTaxiUiController implements IMogoOCHTaxiArriveCallback, IMogoADASAutoPi
.getMapUIController()
.openVrMode( false );
}
+
+ public void onOperationChanged(boolean b) {
+ runOnUIThread( () -> {
+ if (mOperationChangedLisnter != null){
+ mOperationChangedLisnter.onOperationChanged(b);
+ }
+ } );
+ }
+ public void onOrderStatusChanged(int status){
+ runOnUIThread( () -> {
+ if (mOperationChangedLisnter != null){
+ mOperationChangedLisnter.onOrderStatusChanged(status);
+ }
+ } );
+ }
}
diff --git a/OCH/mogo-och-taxi/src/main/res/layout/module_och_taxi_panel.xml b/OCH/mogo-och-taxi/src/main/res/layout/module_och_taxi_panel.xml
index 888fec075e..a9ccf96c3e 100644
--- a/OCH/mogo-och-taxi/src/main/res/layout/module_och_taxi_panel.xml
+++ b/OCH/mogo-och-taxi/src/main/res/layout/module_och_taxi_panel.xml
@@ -2,6 +2,7 @@
@@ -72,6 +73,7 @@
android:layout_height="wrap_content"
android:text="上车"
android:textColor="@color/module_och_taxi_order_start_station_anchor_textColor"
+ android:layout_marginRight="@dimen/module_och_taxi_order_text_marginRight"
android:textSize="@dimen/module_och_taxi_order_start_station_anchor_textSize"
android:textStyle="bold"
app:layout_constraintBottom_toBottomOf="@+id/module_och_taxi_order_start_station"
@@ -116,6 +118,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="下车"
+ android:layout_marginRight="@dimen/module_och_taxi_order_text_marginRight"
android:textColor="@color/module_och_taxi_order_end_station_anchor_textColor"
android:textSize="@dimen/module_och_taxi_order_end_station_anchor_textSize"
android:textStyle="bold"
diff --git a/OCH/mogo-och-taxi/src/main/res/values-xhdpi-2560x1440/dimens.xml b/OCH/mogo-och-taxi/src/main/res/values-xhdpi-2560x1440/dimens.xml
index 95796c9ef6..7c13d7dcbd 100644
--- a/OCH/mogo-och-taxi/src/main/res/values-xhdpi-2560x1440/dimens.xml
+++ b/OCH/mogo-och-taxi/src/main/res/values-xhdpi-2560x1440/dimens.xml
@@ -5,7 +5,7 @@
15px
25px
25px
- 20px
+ 32px
1px
20px
20px
@@ -24,4 +24,5 @@
32px
36px
17px
+ 31.5px
\ No newline at end of file
diff --git a/OCH/mogo-och-taxi/src/main/res/values/dimens.xml b/OCH/mogo-och-taxi/src/main/res/values/dimens.xml
index 954782677b..ff8e1c5530 100644
--- a/OCH/mogo-och-taxi/src/main/res/values/dimens.xml
+++ b/OCH/mogo-och-taxi/src/main/res/values/dimens.xml
@@ -24,4 +24,5 @@
20px
24px
17px
+ 22.5px
\ No newline at end of file
diff --git a/OCH/mogo-och/src/main/java/com/mogo/och/view/SlidePanelView.java b/OCH/mogo-och/src/main/java/com/mogo/och/view/SlidePanelView.java
index ee4785e198..fd2c4ddd65 100644
--- a/OCH/mogo-och/src/main/java/com/mogo/och/view/SlidePanelView.java
+++ b/OCH/mogo-och/src/main/java/com/mogo/och/view/SlidePanelView.java
@@ -57,7 +57,7 @@ public class SlidePanelView extends View {
private final Paint blockPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
private final Paint textPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
- private static int textSize = 40;
+ private static int textSize = 67;
private static int BLOCK_START_X = 15;
private static int BLOCK_START_Y = 15;
private static int NORMAL_TEXT_MARGIN_LEFT = 40;
diff --git a/OCH/mogo-och/src/main/res/drawable-xhdpi-2560x1440/module_mogo_och_autopilot_status_bg.xml b/OCH/mogo-och/src/main/res/drawable-xhdpi-2560x1440/module_mogo_och_autopilot_status_bg.xml
new file mode 100644
index 0000000000..97ac9039cc
--- /dev/null
+++ b/OCH/mogo-och/src/main/res/drawable-xhdpi-2560x1440/module_mogo_och_autopilot_status_bg.xml
@@ -0,0 +1,16 @@
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+
+
diff --git a/OCH/mogo-och/src/main/res/drawable-xhdpi-2560x1440/module_och_base_slide_block.png b/OCH/mogo-och/src/main/res/drawable-xhdpi-2560x1440/module_och_base_slide_block.png
index ed7b293b90..c7655b477c 100644
Binary files a/OCH/mogo-och/src/main/res/drawable-xhdpi-2560x1440/module_och_base_slide_block.png and b/OCH/mogo-och/src/main/res/drawable-xhdpi-2560x1440/module_och_base_slide_block.png differ
diff --git a/OCH/mogo-och/src/main/res/drawable-xhdpi-2560x1440/module_och_bus_ic_autopilot.png b/OCH/mogo-och/src/main/res/drawable-xhdpi-2560x1440/module_och_bus_ic_autopilot.png
new file mode 100644
index 0000000000..927296d690
Binary files /dev/null and b/OCH/mogo-och/src/main/res/drawable-xhdpi-2560x1440/module_och_bus_ic_autopilot.png differ
diff --git a/OCH/mogo-och/src/main/res/drawable/module_mogo_och_autopilot_status_bg.xml b/OCH/mogo-och/src/main/res/drawable/module_mogo_och_autopilot_status_bg.xml
index b5596fad13..97ac9039cc 100644
--- a/OCH/mogo-och/src/main/res/drawable/module_mogo_och_autopilot_status_bg.xml
+++ b/OCH/mogo-och/src/main/res/drawable/module_mogo_och_autopilot_status_bg.xml
@@ -2,13 +2,13 @@
-
-
+
-
-
+
diff --git a/OCH/mogo-och/src/main/res/drawable/module_mogo_och_operation_status_bg.xml b/OCH/mogo-och/src/main/res/drawable/module_mogo_och_operation_status_bg.xml
index 914743547f..753d85e3ec 100644
--- a/OCH/mogo-och/src/main/res/drawable/module_mogo_och_operation_status_bg.xml
+++ b/OCH/mogo-och/src/main/res/drawable/module_mogo_och_operation_status_bg.xml
@@ -1,10 +1,14 @@
-
+ android:shape="oval">
+
-
+ android:angle="315"
+ />
+
\ No newline at end of file
diff --git a/OCH/mogo-och/src/main/res/drawable/module_och_panel_bkg.xml b/OCH/mogo-och/src/main/res/drawable/module_och_panel_bkg.xml
index 204c5fc692..4a08f10745 100644
--- a/OCH/mogo-och/src/main/res/drawable/module_och_panel_bkg.xml
+++ b/OCH/mogo-och/src/main/res/drawable/module_och_panel_bkg.xml
@@ -2,7 +2,7 @@
-
-
+
@@ -12,7 +12,7 @@
android:right="3px"
android:top="3px">
-
+
diff --git a/OCH/mogo-och/src/main/res/layout/module_mogo_och_base_fragment.xml b/OCH/mogo-och/src/main/res/layout/module_mogo_och_base_fragment.xml
index 66ae400e43..c369dc9da8 100644
--- a/OCH/mogo-och/src/main/res/layout/module_mogo_och_base_fragment.xml
+++ b/OCH/mogo-och/src/main/res/layout/module_mogo_och_base_fragment.xml
@@ -20,7 +20,6 @@
android:text="自动驾驶"
android:textColor="@color/module_mogo_och_autopilot_text_color_normal"
android:textSize="@dimen/module_mogo_och_autopilot_status_text_size"
- android:textStyle="bold"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:visibility="visible" />
@@ -50,7 +49,7 @@
android:text="出车"
android:textAlignment="center"
android:textColor="@color/module_mogo_och_autopilot_text_color_selector"
- android:textSize="@dimen/module_mogo_och_autopilot_status_text_size"
+ android:textSize="@dimen/module_mogo_och_operation_status_text_size"
android:textStyle="bold"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent" />
diff --git a/OCH/mogo-och/src/main/res/values-xhdpi-2560x1440/dimens.xml b/OCH/mogo-och/src/main/res/values-xhdpi-2560x1440/dimens.xml
index 7343943aa4..44445885c1 100644
--- a/OCH/mogo-och/src/main/res/values-xhdpi-2560x1440/dimens.xml
+++ b/OCH/mogo-och/src/main/res/values-xhdpi-2560x1440/dimens.xml
@@ -21,17 +21,19 @@
460px
140px
- 140px
- 140px
+ 120px
+ 120px
- 92px
+ 83px
30px
466px
414px
- 44px
+
+ 46px
+ 36px
13px
12px
350px
diff --git a/config.gradle b/config.gradle
index 4530ec1b0f..8b28c2b2ed 100644
--- a/config.gradle
+++ b/config.gradle
@@ -171,7 +171,9 @@ ext {
// obu sdk
obusdk : "com.zhidao.enterprise.smartv2x:smartv2x:1.0.0.3",
- mebulaobu : 'com.zhidao.support.nebulaobu:nebulaobu:1.0.0.3',
+// mebulaobu : 'com.zhidao.support.nebulaobu:nebulaobu:1.0.0.3',
+ mogoobu : 'com.zhidao.support.obu:mogoobu:1.0.0.2',
+
// 左侧面板
moduleleftpanel : "com.mogo.module:module-left-panel:${MOGO_MODULE_LEFT_PANEL_VERSION}",
// 左侧面板空实现
diff --git a/foudations/mogo-commons/src/main/java/com/mogo/commons/network/SubscribeImpl.java b/foudations/mogo-commons/src/main/java/com/mogo/commons/network/SubscribeImpl.java
index ab0aa03504..d673a53dbe 100644
--- a/foudations/mogo-commons/src/main/java/com/mogo/commons/network/SubscribeImpl.java
+++ b/foudations/mogo-commons/src/main/java/com/mogo/commons/network/SubscribeImpl.java
@@ -43,7 +43,7 @@ public abstract class SubscribeImpl< T extends BaseData > implements Observer< T
@Override
public void onNext( T o ) {
if ( o != null ) {
- if ( o.code != 0 ) {
+ if ( o.code != 0 && o.code!= 200 ) {
onError( o.msg, o.code );
} else {
onSuccess( o );
diff --git a/foudations/mogo-utils/src/main/java/com/mogo/utils/FileUtils.java b/foudations/mogo-utils/src/main/java/com/mogo/utils/FileUtils.java
index aaa6e699ee..528a24720a 100644
--- a/foudations/mogo-utils/src/main/java/com/mogo/utils/FileUtils.java
+++ b/foudations/mogo-utils/src/main/java/com/mogo/utils/FileUtils.java
@@ -27,14 +27,15 @@ import java.io.OutputStreamWriter;
*/
public class FileUtils {
public static boolean createFileDir(String fileDir) {
-
if (TextUtils.isEmpty(fileDir)) {
return false;
}
-
try {
File dir = new File(fileDir);
- return dir.exists() || dir.mkdir();
+ if(!dir.exists()){
+ return dir.mkdirs();
+ }
+ return dir.exists();
} catch (Exception e) {
return false;
}
diff --git a/gradle.properties b/gradle.properties
index 995425e5dc..397e869bd5 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -187,4 +187,4 @@ applicationId=com.mogo.launcer
applicationName=IntelligentPilot
versionCode=80007
versionName=8.0.7
-MAP_SDK_VERSION=1.0.0-vr-8.5.49
\ No newline at end of file
+MAP_SDK_VERSION=1.0.0-vr-8.5.51
\ No newline at end of file
diff --git a/libraries/map-custom/src/main/java/com/mogo/map/impl/custom/AMapViewWrapper.java b/libraries/map-custom/src/main/java/com/mogo/map/impl/custom/AMapViewWrapper.java
index 07a5a29fe5..fa50c2e6bf 100644
--- a/libraries/map-custom/src/main/java/com/mogo/map/impl/custom/AMapViewWrapper.java
+++ b/libraries/map-custom/src/main/java/com/mogo/map/impl/custom/AMapViewWrapper.java
@@ -353,6 +353,9 @@ public class AMapViewWrapper implements IMogoMapView,
setUIMode(ui);
break;
case Type_VR:
+ if (DebugConfig.getCarMachineType() == DebugConfig.CAR_MACHINE_TYPE_LENOVO) {
+ mMapView.getMapAutoViewHelper().setScaleVRMode(true);
+ }
mMapView.getMapAutoViewHelper().setMapStyle(MapAutoApi.MAP_STYLE_VR);
return;
case Type_Light:
diff --git a/libraries/map-custom/src/main/java/com/mogo/map/impl/custom/CustomMapApiBuilder.java b/libraries/map-custom/src/main/java/com/mogo/map/impl/custom/CustomMapApiBuilder.java
index 013ab37442..6b3816382f 100644
--- a/libraries/map-custom/src/main/java/com/mogo/map/impl/custom/CustomMapApiBuilder.java
+++ b/libraries/map-custom/src/main/java/com/mogo/map/impl/custom/CustomMapApiBuilder.java
@@ -100,7 +100,8 @@ class CustomMapApiBuilder implements IMogoMapApiBuilder {
.setCoordinateType( MapParams.COORDINATETYPE_GCJ02 )
.setPerspectiveMode( MapParams.MAP_PERSPECTIVE_2D )
.setZoom( 20 )
- .setPointToCenter( 0.734375f, 0.5f )
+// .setPointToCenter( 0.734375f, 0.5f )
+ .setPointToCenter( 0.5f, 0.5f ) //todo 2D模式下需要注意ADAS部分遮挡
.setStyleMode( MapParams.MAP_STYLE_NIGHT ), NavParams.Companion.init() );
MapAutoView mapAutoView = new MapAutoView(context);
IMogoMapView mapView = new AMapViewWrapper(mapAutoView);
diff --git a/modules/mogo-module-adas/build.gradle b/modules/mogo-module-adas/build.gradle
index cea9d8ac5c..dd802e716d 100644
--- a/modules/mogo-module-adas/build.gradle
+++ b/modules/mogo-module-adas/build.gradle
@@ -38,7 +38,7 @@ dependencies {
implementation rootProject.ext.dependencies.androidxappcompat
implementation rootProject.ext.dependencies.androidxconstraintlayout
implementation rootProject.ext.dependencies.arouter
-
+ implementation rootProject.ext.dependencies.rxandroid
annotationProcessor rootProject.ext.dependencies.aroutercompiler
diff --git a/modules/mogo-module-adas/src/main/java/com/mogo/module/adas/AdasAutoPilotManager.java b/modules/mogo-module-adas/src/main/java/com/mogo/module/adas/AdasAutoPilotManager.java
new file mode 100644
index 0000000000..8701beb42c
--- /dev/null
+++ b/modules/mogo-module-adas/src/main/java/com/mogo/module/adas/AdasAutoPilotManager.java
@@ -0,0 +1,51 @@
+package com.mogo.module.adas;
+
+import android.content.Context;
+
+import com.mogo.module.adas.entity.AdasAutoPilotLocReceiverBean;
+import com.mogo.module.common.MogoApisHandler;
+import com.mogo.service.connection.IMogoOnMessageListener;
+
+public class AdasAutoPilotManager implements IMogoOnMessageListener {
+
+ private static volatile AdasAutoPilotManager instance;
+ private static final byte[] obj = new byte[0];
+ private static final int MSG_SOCKET_TYPE = 1;
+ private Context mContext;
+
+ private AdasAutoPilotManager() {
+
+ }
+
+ public static AdasAutoPilotManager getInstance() {
+ if (instance == null) {
+ synchronized (obj) {
+ if (instance == null) {
+ instance = new AdasAutoPilotManager();
+ }
+ }
+ }
+ return instance;
+ }
+
+ public void initSocket(Context context) {
+ this.mContext = context;
+ MogoApisHandler.getInstance()
+ .getApis()
+ .getSocketManagerApi(mContext).registerOnMessageListener(MSG_SOCKET_TYPE, this);
+ }
+
+ @Override
+ public Class target() {
+ return AdasAutoPilotLocReceiverBean.class;
+ }
+
+ @Override
+ public void onMsgReceived(AdasAutoPilotLocReceiverBean adasAutoPilotLocReceiverBean) {
+ if (adasAutoPilotLocReceiverBean != null
+ && adasAutoPilotLocReceiverBean.getLat() != 0.0
+ && adasAutoPilotLocReceiverBean.getLon() != 0.0) {
+
+ }
+ }
+}
diff --git a/modules/mogo-module-adas/src/main/java/com/mogo/module/adas/AdasConstant.java b/modules/mogo-module-adas/src/main/java/com/mogo/module/adas/AdasConstant.java
new file mode 100644
index 0000000000..3bff73bac8
--- /dev/null
+++ b/modules/mogo-module-adas/src/main/java/com/mogo/module/adas/AdasConstant.java
@@ -0,0 +1,11 @@
+package com.mogo.module.adas;
+
+/**
+ * Created by XuYong on 2021/5/28 15:24
+ */
+public class AdasConstant {
+ public static final String HOST_DEV = "http://dzt-test.zhidaohulian.com";
+ public static final String HOST_TEST = "http://dzt-test.zhidaohulian.com";
+ public static final String HOST_DEMO = "http://dzt-show.zhidaohulian.com";
+ public static final String HOST_PRODUCT = "https://dzt.zhidaohulian.com";
+}
diff --git a/modules/mogo-module-adas/src/main/java/com/mogo/module/adas/AdasEventManager.java b/modules/mogo-module-adas/src/main/java/com/mogo/module/adas/AdasEventManager.java
index c8b768b081..eeabdf5f0b 100644
--- a/modules/mogo-module-adas/src/main/java/com/mogo/module/adas/AdasEventManager.java
+++ b/modules/mogo-module-adas/src/main/java/com/mogo/module/adas/AdasEventManager.java
@@ -1,7 +1,17 @@
package com.mogo.module.adas;
+import android.os.RemoteException;
+
import com.google.gson.Gson;
+import com.mogo.cloud.passport.MoGoAiCloudClientConfig;
+import com.mogo.commons.data.BaseData;
+import com.mogo.commons.network.SubscribeImpl;
+import com.mogo.module.adas.entity.AutonomousDriveStatusBean;
+import com.mogo.module.adas.entity.ReportSiteBean;
+import com.mogo.module.adas.entity.WarnMessageModel;
+import com.mogo.module.common.MogoApisHandler;
import com.mogo.utils.logger.Logger;
+import com.mogo.utils.network.RequestOptions;
import com.mogo.utils.network.utils.GsonUtil;
import com.zhidao.autopilotservice.model.AdasAIDLAutopilotArriveModel;
import com.zhidao.autopilotservice.model.AdasAIDLAutopilotStateModel;
@@ -18,6 +28,18 @@ import com.zhidao.support.adas.high.bean.WarnMessageInfo;
import com.zhidao.support.adas.high.common.MsgActionType;
import java.util.ArrayList;
+import java.util.concurrent.TimeUnit;
+
+import io.reactivex.Flowable;
+import io.reactivex.android.schedulers.AndroidSchedulers;
+import io.reactivex.annotations.NonNull;
+import io.reactivex.disposables.Disposable;
+import io.reactivex.functions.Consumer;
+import io.reactivex.schedulers.Schedulers;
+import okhttp3.MediaType;
+import okhttp3.RequestBody;
+
+import static com.mogo.commons.context.ContextHolderUtil.getContext;
/**
* Created by XuYong on 2021/4/25 14:43
@@ -25,14 +47,22 @@ import java.util.ArrayList;
public class AdasEventManager implements OnAdasListener, OnAdasMsgConnectStatusListener {
private final String TAG = "AdasEventManager";
-
private final Gson gson;
-
private final ArrayList iAdasEventListeners = new ArrayList<>();
private final ArrayList iAdasStatusListeners = new ArrayList<>();
+ private IAdasApiService mAdasApiService;
+ private Disposable uploadAutopilotStatus;
+ //自动驾驶状态
+ private int mCurrentAutopilotStatus = -1;
+ //自动驾驶车速度
+ private float mCurrentAutopilotSpeed = 0;
+ private Disposable mdDisposable;
+ //自动驾驶状态
+ private AutopilotStatus.ValuesBean mAutopilotStatus = null;
public AdasEventManager() {
gson = GsonUtil.getGson();
+ mAdasApiService = MogoApisHandler.getInstance().getApis().getNetworkApi().create( IAdasApiService.class, AdasConstant.HOST_PRODUCT );
}
public void addEventListener(AdasDataListener listener) {
@@ -65,6 +95,11 @@ public class AdasEventManager implements OnAdasListener, OnAdasMsgConnectStatusL
}
}
+ public void removeStatusListener() {
+ Logger.d(TAG,"注销adas状态事件监听");
+ iAdasStatusListeners.clear();
+ }
+
@Override
public void onWarnMessage(WarnMessageInfo warnMessageInfo) {
Logger.d(TAG,"onWarnMessage " + warnMessageInfo);
@@ -145,7 +180,6 @@ public class AdasEventManager implements OnAdasListener, OnAdasMsgConnectStatusL
AutopilotStatus.ValuesBean autopilotStatusValues = autopilotStatus.getValues();
AutopilotStatus.ValuesBean mAutopilotStatus;
-
if (autopilotStatusValues != null) {
AdasAIDLAutopilotStateModel adasAIDLAutopilotStateModel=new AdasAIDLAutopilotStateModel();
adasAIDLAutopilotStateModel.setReason(autopilotStatusValues.getReason());
@@ -154,14 +188,15 @@ public class AdasEventManager implements OnAdasListener, OnAdasMsgConnectStatusL
float speed = autopilotStatusValues.getSpeed();
adasAIDLAutopilotStateModel.setState(state);
adasAIDLAutopilotStateModel.setSpeed(speed);
-
+ mCurrentAutopilotStatus = state;
+ mCurrentAutopilotSpeed = speed;
for (AdasDataListener listener:iAdasEventListeners) {
if (listener != null) {
listener.notifyAutopilotState(adasAIDLAutopilotStateModel);
}
}
- }
+ }
}
@Override
@@ -174,8 +209,12 @@ public class AdasEventManager implements OnAdasListener, OnAdasMsgConnectStatusL
if (endLatLon != null) {
AdasAIDLAutopilotArriveModel adasAIDLAutopilotArriveModel = new AdasAIDLAutopilotArriveModel();
adasAIDLAutopilotArriveModel.setCarType(result.getCarType());
- adasAIDLAutopilotArriveModel.setLat(endLatLon.getLat());
- adasAIDLAutopilotArriveModel.setLon(endLatLon.getLon());
+ double lon = endLatLon.getLon();
+ double lat = endLatLon.getLat();
+ adasAIDLAutopilotArriveModel.setLat(lat);
+ adasAIDLAutopilotArriveModel.setLon(lon);
+ Logger.d(TAG,"autopilotArrive reportSite");
+ reportSite(lon, lat);
for (AdasDataListener listener:iAdasEventListeners) {
if (listener != null) {
listener.autopilotArrive(adasAIDLAutopilotArriveModel);
@@ -188,7 +227,7 @@ public class AdasEventManager implements OnAdasListener, OnAdasMsgConnectStatusL
@Override
public void onAutopilotRoute(String route) {
-
+ //todo
}
@Override
@@ -197,6 +236,7 @@ public class AdasEventManager implements OnAdasListener, OnAdasMsgConnectStatusL
for (AdasStatusListener listener :iAdasStatusListeners) {
listener.onServiceConnected();
}
+ updateDriveStatusTask();
}
@Override
@@ -206,4 +246,80 @@ public class AdasEventManager implements OnAdasListener, OnAdasMsgConnectStatusL
listener.onServiceDisconnected();
}
}
+
+ public void updateDriveStatusTask() {
+ Logger.d(TAG,"updateDriveStatusTask");
+ mdDisposable = Flowable.interval(0,5, TimeUnit.SECONDS)
+ .subscribeOn(Schedulers.io())
+ .unsubscribeOn(Schedulers.io())
+ .observeOn(AndroidSchedulers.mainThread())
+ .subscribe(new Consumer() {
+ @Override
+ public void accept(@NonNull Long aLong) throws Exception {
+ updateDriveStatus();
+ }
+ });
+ }
+
+ private void updateDriveStatus() {
+ String sn = MoGoAiCloudClientConfig.getInstance().getSn();
+ AutonomousDriveStatusBean request = new AutonomousDriveStatusBean(sn, mCurrentAutopilotStatus, mCurrentAutopilotSpeed);
+ RequestBody requestBody = RequestBody.create( MediaType.get( "application/json;charset=UTF-8" ), GsonUtil.jsonFromObject( request ) );
+ mAdasApiService.updateAutonomousDriveStatus(requestBody).
+ subscribeOn( Schedulers.io() ).observeOn( AndroidSchedulers.mainThread() )
+ .subscribe(new SubscribeImpl(RequestOptions.create(getContext())) {
+ @Override
+ public void onError(String message, int code) {
+ super.onError(message, code);
+ }
+
+ @Override
+ public void onError(Throwable e) {
+ super.onError(e);
+ }
+
+ @Override
+ public void onSuccess(BaseData o) {
+ super.onSuccess(o);
+ Logger.d(TAG,"updateDriveStatus success");
+ }
+ });
+ }
+
+ private void reportSite( double lon, double lat) {
+ String sn = MoGoAiCloudClientConfig.getInstance().getSn();
+ ReportSiteBean reportSiteBean = new ReportSiteBean(sn, lon, lat);
+ RequestBody requestBody = RequestBody.create( MediaType.get( "application/json;charset=UTF-8" ), GsonUtil.jsonFromObject( reportSiteBean ) );
+ mAdasApiService.updateReportSite(requestBody).
+ subscribeOn( Schedulers.io() ).observeOn( AndroidSchedulers.mainThread() )
+ .subscribe(new SubscribeImpl(RequestOptions.create(getContext())) {
+ @Override
+ public void onError(String message, int code) {
+ super.onError(message, code);
+ }
+
+ @Override
+ public void onError(Throwable e) {
+ super.onError(e);
+ }
+
+ @Override
+ public void onSuccess(BaseData o) {
+ super.onSuccess(o);
+ Logger.d(TAG,"autopilotArrive success");
+ }
+ });
+ }
+
+ public AdasAIDLAutopilotStateModel autopilotStateCall() {
+ AdasAIDLAutopilotStateModel adasAIDLAutopilotStateModel=new AdasAIDLAutopilotStateModel();
+ if (mAutopilotStatus != null) {
+ adasAIDLAutopilotStateModel.setSpeed(mAutopilotStatus.getSpeed());
+ adasAIDLAutopilotStateModel.setState(mAutopilotStatus.getState());
+ adasAIDLAutopilotStateModel.setReason(mAutopilotStatus.getReason());
+ }
+ return adasAIDLAutopilotStateModel;
+ }
+
+
}
diff --git a/modules/mogo-module-adas/src/main/java/com/mogo/module/adas/AdasProvider.java b/modules/mogo-module-adas/src/main/java/com/mogo/module/adas/AdasProvider.java
index 4db28d6873..5288467af5 100644
--- a/modules/mogo-module-adas/src/main/java/com/mogo/module/adas/AdasProvider.java
+++ b/modules/mogo-module-adas/src/main/java/com/mogo/module/adas/AdasProvider.java
@@ -6,6 +6,7 @@ import com.alibaba.android.arouter.facade.annotation.Route;
import com.alibaba.android.arouter.facade.template.IProvider;
import com.mogo.service.MogoServicePaths;
import com.mogo.utils.logger.Logger;
+import com.zhidao.autopilotservice.model.AdasAIDLAutopilotStateModel;
import com.zhidao.support.adas.high.AdasManager;
@@ -24,9 +25,9 @@ public class AdasProvider implements IProvider {
@Override
public void init(Context context) {
Logger.d(TAG, "初始化 AdasProvider 模块");
-
adasEventManager = new AdasEventManager();
initAdas(context, adasEventManager);
+ initAutoPilotBusiness(context);
}
private void initAdas(Context context, AdasEventManager adasEventManager) {
@@ -35,6 +36,10 @@ public class AdasProvider implements IProvider {
AdasManager.getInstance().setOnAdasConnectStatusListener(adasEventManager);
}
+ private void initAutoPilotBusiness(Context context) {
+ AdasAutoPilotManager.getInstance().initSocket(context);
+ }
+
public void addAdasEventListener(AdasDataListener listener) {
adasEventManager.addEventListener(listener);
}
@@ -51,8 +56,46 @@ public class AdasProvider implements IProvider {
adasEventManager.removeStatusListener(listener);
}
+ public void removeAdasStatusListener() {
+ adasEventManager.removeStatusListener();
+ }
+
public void sendWsMessage(String msg) {
AdasManager.getInstance().aiCloudToAdasData(msg);
}
+ public void cancelPilot() {
+ if (AdasManager.getInstance().isSocketConnect()) {
+ AdasManager.getInstance().controlAutopilotCarHead();
+ }
+ }
+
+ public void hideAdas() {
+
+ }
+
+ public void showAdas() {
+
+ }
+
+ public void killAdas() {
+
+ }
+
+ //原ADAS sdk中为空实现
+ public void settingCarModelListInfo(String msg) {
+
+ }
+
+ //原ADAS sdk中为空实现
+ public void setSettingStatus(boolean show) {
+ }
+
+ //原ADAS sdk中为空实现
+ public void setUseAlgorithm(boolean open) {
+ }
+
+ public AdasAIDLAutopilotStateModel autopilotStateCall() {
+ return adasEventManager.autopilotStateCall();
+ }
}
diff --git a/modules/mogo-module-adas/src/main/java/com/mogo/module/adas/AutonomousDriveStatusBean.java b/modules/mogo-module-adas/src/main/java/com/mogo/module/adas/AutonomousDriveStatusBean.java
new file mode 100644
index 0000000000..686ae78eb0
--- /dev/null
+++ b/modules/mogo-module-adas/src/main/java/com/mogo/module/adas/AutonomousDriveStatusBean.java
@@ -0,0 +1,41 @@
+package com.mogo.module.adas;
+
+/**
+ * Created by XuYong on 2021/5/28 16:12
+ */
+public class AutonomousDriveStatusBean {
+
+ private String sn;
+ private int status;
+ private float vehicleSpeed;
+
+ public AutonomousDriveStatusBean(String sn, int status, float vehicleSpeed) {
+ this.sn = sn;
+ this.status = status;
+ this.vehicleSpeed = vehicleSpeed;
+ }
+
+ public String getSn() {
+ return sn;
+ }
+
+ public void setSn(String sn) {
+ this.sn = sn;
+ }
+
+ public int getStatus() {
+ return status;
+ }
+
+ public void setStatus(int status) {
+ this.status = status;
+ }
+
+ public float getVehicleSpeed() {
+ return vehicleSpeed;
+ }
+
+ public void setVehicleSpeed(float vehicleSpeed) {
+ this.vehicleSpeed = vehicleSpeed;
+ }
+}
diff --git a/modules/mogo-module-adas/src/main/java/com/mogo/module/adas/IAdasApiService.java b/modules/mogo-module-adas/src/main/java/com/mogo/module/adas/IAdasApiService.java
new file mode 100644
index 0000000000..d1c58c2da9
--- /dev/null
+++ b/modules/mogo-module-adas/src/main/java/com/mogo/module/adas/IAdasApiService.java
@@ -0,0 +1,24 @@
+package com.mogo.module.adas;
+
+import com.mogo.commons.data.BaseData;
+
+import io.reactivex.Observable;
+import okhttp3.RequestBody;
+import retrofit2.http.Body;
+import retrofit2.http.Headers;
+import retrofit2.http.POST;
+
+/**
+ * Created by XuYong on 2021/5/28 14:24
+ */
+public interface IAdasApiService {
+
+ //上传自动驾驶状态接口
+ @Headers( {"Content-Type:application/json;charset=UTF-8"} )
+ @POST( "/yycp-carDataService/autonomousDrive/updateAutonomousDriveStatus" )
+ Observable updateAutonomousDriveStatus(@Body RequestBody requestBody );
+ //站点上报
+ @Headers( {"Content-Type:application/json;charset=UTF-8"} )
+ @POST( "/yycp-carDataService/autonomousDrive/reportSite" )
+ Observable updateReportSite(@Body RequestBody requestBody );
+}
diff --git a/modules/mogo-module-adas/src/main/java/com/mogo/module/adas/ReportSiteBean.java b/modules/mogo-module-adas/src/main/java/com/mogo/module/adas/ReportSiteBean.java
new file mode 100644
index 0000000000..76677e00ba
--- /dev/null
+++ b/modules/mogo-module-adas/src/main/java/com/mogo/module/adas/ReportSiteBean.java
@@ -0,0 +1,40 @@
+package com.mogo.module.adas;
+
+/**
+ * Created by XuYong on 2021/5/31 16:24
+ */
+public class ReportSiteBean {
+ private String sn;
+ private double lon;
+ private double lat;
+
+ public ReportSiteBean(String sn, double lon, double lat) {
+ this.sn = sn;
+ this.lon = lon;
+ this.lat = lat;
+ }
+
+ public String getSn() {
+ return sn;
+ }
+
+ public void setSn(String sn) {
+ this.sn = sn;
+ }
+
+ public double getLon() {
+ return lon;
+ }
+
+ public void setLon(double lon) {
+ this.lon = lon;
+ }
+
+ public double getLat() {
+ return lat;
+ }
+
+ public void setLat(double lat) {
+ this.lat = lat;
+ }
+}
diff --git a/modules/mogo-module-adas/src/main/java/com/mogo/module/adas/entity/AdasAutoPilotLocReceiverBean.java b/modules/mogo-module-adas/src/main/java/com/mogo/module/adas/entity/AdasAutoPilotLocReceiverBean.java
new file mode 100644
index 0000000000..39686ee7d4
--- /dev/null
+++ b/modules/mogo-module-adas/src/main/java/com/mogo/module/adas/entity/AdasAutoPilotLocReceiverBean.java
@@ -0,0 +1,69 @@
+package com.mogo.module.adas.entity;
+
+public class AdasAutoPilotLocReceiverBean {
+
+ private int poiId;
+ private double lat;
+ private double lon;
+ private String poiAddress;
+ private long systemTime;
+
+ public AdasAutoPilotLocReceiverBean(int poiId, double lat, double lon, String poiAddress, long systemTime) {
+ this.poiId = poiId;
+ this.lat = lat;
+ this.lon = lon;
+ this.poiAddress = poiAddress;
+ this.systemTime = systemTime;
+ }
+
+ public int getPoiId() {
+ return poiId;
+ }
+
+ public void setPoiId(int poiId) {
+ this.poiId = poiId;
+ }
+
+ public double getLat() {
+ return lat;
+ }
+
+ public void setLat(double lat) {
+ this.lat = lat;
+ }
+
+ public double getLon() {
+ return lon;
+ }
+
+ public void setLon(double lon) {
+ this.lon = lon;
+ }
+
+ public String getPoiAddress() {
+ return poiAddress;
+ }
+
+ public void setPoiAddress(String poiAddress) {
+ this.poiAddress = poiAddress;
+ }
+
+ public long getSystemTime() {
+ return systemTime;
+ }
+
+ public void setSystemTime(long systemTime) {
+ this.systemTime = systemTime;
+ }
+
+ @Override
+ public String toString() {
+ return "AdasAutoPilotLocReceiverBean{" +
+ "poiId=" + poiId +
+ ", lat=" + lat +
+ ", lon=" + lon +
+ ", poiAddress='" + poiAddress + '\'' +
+ ", systemTime=" + systemTime +
+ '}';
+ }
+}
diff --git a/modules/mogo-module-adas/src/main/java/com/mogo/module/adas/entity/AutonomousDriveStatusBean.java b/modules/mogo-module-adas/src/main/java/com/mogo/module/adas/entity/AutonomousDriveStatusBean.java
new file mode 100644
index 0000000000..e4bba0a1e2
--- /dev/null
+++ b/modules/mogo-module-adas/src/main/java/com/mogo/module/adas/entity/AutonomousDriveStatusBean.java
@@ -0,0 +1,41 @@
+package com.mogo.module.adas.entity;
+
+/**
+ * Created by XuYong on 2021/5/28 16:12
+ */
+public class AutonomousDriveStatusBean {
+
+ private String sn;
+ private int status;
+ private float vehicleSpeed;
+
+ public AutonomousDriveStatusBean(String sn, int status, float vehicleSpeed) {
+ this.sn = sn;
+ this.status = status;
+ this.vehicleSpeed = vehicleSpeed;
+ }
+
+ public String getSn() {
+ return sn;
+ }
+
+ public void setSn(String sn) {
+ this.sn = sn;
+ }
+
+ public int getStatus() {
+ return status;
+ }
+
+ public void setStatus(int status) {
+ this.status = status;
+ }
+
+ public float getVehicleSpeed() {
+ return vehicleSpeed;
+ }
+
+ public void setVehicleSpeed(float vehicleSpeed) {
+ this.vehicleSpeed = vehicleSpeed;
+ }
+}
diff --git a/modules/mogo-module-adas/src/main/java/com/mogo/module/adas/entity/ReportSiteBean.java b/modules/mogo-module-adas/src/main/java/com/mogo/module/adas/entity/ReportSiteBean.java
new file mode 100644
index 0000000000..ed0f765e2e
--- /dev/null
+++ b/modules/mogo-module-adas/src/main/java/com/mogo/module/adas/entity/ReportSiteBean.java
@@ -0,0 +1,40 @@
+package com.mogo.module.adas.entity;
+
+/**
+ * Created by XuYong on 2021/5/31 16:24
+ */
+public class ReportSiteBean {
+ private String sn;
+ private double lon;
+ private double lat;
+
+ public ReportSiteBean(String sn, double lon, double lat) {
+ this.sn = sn;
+ this.lon = lon;
+ this.lat = lat;
+ }
+
+ public String getSn() {
+ return sn;
+ }
+
+ public void setSn(String sn) {
+ this.sn = sn;
+ }
+
+ public double getLon() {
+ return lon;
+ }
+
+ public void setLon(double lon) {
+ this.lon = lon;
+ }
+
+ public double getLat() {
+ return lat;
+ }
+
+ public void setLat(double lat) {
+ this.lat = lat;
+ }
+}
diff --git a/modules/mogo-module-adas/src/main/java/com/mogo/module/adas/WarnMessageModel.java b/modules/mogo-module-adas/src/main/java/com/mogo/module/adas/entity/WarnMessageModel.java
similarity index 93%
rename from modules/mogo-module-adas/src/main/java/com/mogo/module/adas/WarnMessageModel.java
rename to modules/mogo-module-adas/src/main/java/com/mogo/module/adas/entity/WarnMessageModel.java
index 451c20d381..ae6a6d8cab 100644
--- a/modules/mogo-module-adas/src/main/java/com/mogo/module/adas/WarnMessageModel.java
+++ b/modules/mogo-module-adas/src/main/java/com/mogo/module/adas/entity/WarnMessageModel.java
@@ -1,4 +1,4 @@
-package com.mogo.module.adas;
+package com.mogo.module.adas.entity;
import com.zhidao.support.adas.high.bean.WarnMessageInfo;
diff --git a/modules/mogo-module-adas/src/main/java/com/mogo/module/adas/view/DispatchRemindDialog.java b/modules/mogo-module-adas/src/main/java/com/mogo/module/adas/view/DispatchRemindDialog.java
new file mode 100644
index 0000000000..92f4c7ba86
--- /dev/null
+++ b/modules/mogo-module-adas/src/main/java/com/mogo/module/adas/view/DispatchRemindDialog.java
@@ -0,0 +1,18 @@
+package com.mogo.module.adas.view;
+
+import android.content.Context;
+
+import androidx.annotation.NonNull;
+
+import com.mogo.module.adas.R;
+import com.mogo.module.common.dialog.BaseFloatDialog;
+
+public class DispatchRemindDialog extends BaseFloatDialog {
+
+ public DispatchRemindDialog(@NonNull Context context) {
+ super(context);
+ setContentView(R.layout.dialog_adas_dispatch_remind);
+ }
+
+
+}
diff --git a/modules/mogo-module-adas/src/main/res/drawable/module_adas_bg_shape.xml b/modules/mogo-module-adas/src/main/res/drawable/module_adas_bg_shape.xml
new file mode 100644
index 0000000000..49d2188a32
--- /dev/null
+++ b/modules/mogo-module-adas/src/main/res/drawable/module_adas_bg_shape.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/modules/mogo-module-adas/src/main/res/layout/dialog_adas_dispatch_remind.xml b/modules/mogo-module-adas/src/main/res/layout/dialog_adas_dispatch_remind.xml
new file mode 100644
index 0000000000..c044260fdb
--- /dev/null
+++ b/modules/mogo-module-adas/src/main/res/layout/dialog_adas_dispatch_remind.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/modules/mogo-module-adas/src/main/res/values-xhdpi-2560x1440/dimens.xml b/modules/mogo-module-adas/src/main/res/values-xhdpi-2560x1440/dimens.xml
new file mode 100644
index 0000000000..1ad05815bc
--- /dev/null
+++ b/modules/mogo-module-adas/src/main/res/values-xhdpi-2560x1440/dimens.xml
@@ -0,0 +1,6 @@
+
+
+ 950px
+ 540px
+ 32px
+
\ No newline at end of file
diff --git a/modules/mogo-module-adas/src/main/res/values/colors.xml b/modules/mogo-module-adas/src/main/res/values/colors.xml
new file mode 100644
index 0000000000..7ec5c235fd
--- /dev/null
+++ b/modules/mogo-module-adas/src/main/res/values/colors.xml
@@ -0,0 +1,6 @@
+
+
+ #1F9BFE
+ #E63B4577
+ #4D000000
+
\ No newline at end of file
diff --git a/modules/mogo-module-adas/src/main/res/values/dimens.xml b/modules/mogo-module-adas/src/main/res/values/dimens.xml
new file mode 100644
index 0000000000..1ad05815bc
--- /dev/null
+++ b/modules/mogo-module-adas/src/main/res/values/dimens.xml
@@ -0,0 +1,6 @@
+
+
+ 950px
+ 540px
+ 32px
+
\ No newline at end of file
diff --git a/modules/mogo-module-common/src/main/res/raw/v2x_daolujiebing.n3d b/modules/mogo-module-common/src/main/res/raw/v2x_daolujiebing.n3d
index 83c372fbb7..28ec706964 100644
Binary files a/modules/mogo-module-common/src/main/res/raw/v2x_daolujiebing.n3d and b/modules/mogo-module-common/src/main/res/raw/v2x_daolujiebing.n3d differ
diff --git a/modules/mogo-module-common/src/main/res/raw/v2x_daolujishui.n3d b/modules/mogo-module-common/src/main/res/raw/v2x_daolujishui.n3d
index f862aea7f9..b3ea96ca56 100644
Binary files a/modules/mogo-module-common/src/main/res/raw/v2x_daolujishui.n3d and b/modules/mogo-module-common/src/main/res/raw/v2x_daolujishui.n3d differ
diff --git a/modules/mogo-module-common/src/main/res/raw/v2x_daolushigong.n3d b/modules/mogo-module-common/src/main/res/raw/v2x_daolushigong.n3d
index b170c54e13..c0d184a796 100644
Binary files a/modules/mogo-module-common/src/main/res/raw/v2x_daolushigong.n3d and b/modules/mogo-module-common/src/main/res/raw/v2x_daolushigong.n3d differ
diff --git a/modules/mogo-module-common/src/main/res/raw/v2x_guzhangqiuzhu.n3d b/modules/mogo-module-common/src/main/res/raw/v2x_guzhangqiuzhu.n3d
index 1b6ba3b1bf..c4eb8adc11 100644
Binary files a/modules/mogo-module-common/src/main/res/raw/v2x_guzhangqiuzhu.n3d and b/modules/mogo-module-common/src/main/res/raw/v2x_guzhangqiuzhu.n3d differ
diff --git a/modules/mogo-module-common/src/main/res/raw/v2x_jiaotongjiancha.n3d b/modules/mogo-module-common/src/main/res/raw/v2x_jiaotongjiancha.n3d
index 0e87e83424..c6d86bd772 100644
Binary files a/modules/mogo-module-common/src/main/res/raw/v2x_jiaotongjiancha.n3d and b/modules/mogo-module-common/src/main/res/raw/v2x_jiaotongjiancha.n3d differ
diff --git a/modules/mogo-module-common/src/main/res/raw/v2x_nongwu.n3d b/modules/mogo-module-common/src/main/res/raw/v2x_nongwu.n3d
index 1203a0bdb6..5cce461ce7 100644
Binary files a/modules/mogo-module-common/src/main/res/raw/v2x_nongwu.n3d and b/modules/mogo-module-common/src/main/res/raw/v2x_nongwu.n3d differ
diff --git a/modules/mogo-module-common/src/main/res/raw/v2x_shigu.n3d b/modules/mogo-module-common/src/main/res/raw/v2x_shigu.n3d
index 4c3dc1d3ef..26aea8f852 100644
Binary files a/modules/mogo-module-common/src/main/res/raw/v2x_shigu.n3d and b/modules/mogo-module-common/src/main/res/raw/v2x_shigu.n3d differ
diff --git a/modules/mogo-module-common/src/main/res/raw/v2x_shishilukuang.n3d b/modules/mogo-module-common/src/main/res/raw/v2x_shishilukuang.n3d
index fe98148426..b6dc6a1143 100644
Binary files a/modules/mogo-module-common/src/main/res/raw/v2x_shishilukuang.n3d and b/modules/mogo-module-common/src/main/res/raw/v2x_shishilukuang.n3d differ
diff --git a/modules/mogo-module-common/src/main/res/raw/v2x_yongdu.n3d b/modules/mogo-module-common/src/main/res/raw/v2x_yongdu.n3d
index 978407d06e..a193a302e5 100644
Binary files a/modules/mogo-module-common/src/main/res/raw/v2x_yongdu.n3d and b/modules/mogo-module-common/src/main/res/raw/v2x_yongdu.n3d differ
diff --git a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/EntranceFragment.java b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/EntranceFragment.java
index d5fe0f553b..6eb79ddf6a 100644
--- a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/EntranceFragment.java
+++ b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/EntranceFragment.java
@@ -380,10 +380,6 @@ public class EntranceFragment extends MvpFragment
+
+
+
+
+
+ android:bottomLeftRadius="130px"
+ android:bottomRightRadius="30px"
+ android:topLeftRadius="30px"
+ android:topRightRadius="130px" />
\ No newline at end of file
diff --git a/modules/mogo-module-extensions/src/main/res/values-xhdpi-2560x1440/dimens.xml b/modules/mogo-module-extensions/src/main/res/values-xhdpi-2560x1440/dimens.xml
index 79f55f813d..608a067881 100644
--- a/modules/mogo-module-extensions/src/main/res/values-xhdpi-2560x1440/dimens.xml
+++ b/modules/mogo-module-extensions/src/main/res/values-xhdpi-2560x1440/dimens.xml
@@ -5,7 +5,7 @@
460px
320px
320px
- 15px
+ 20px
110px
40px
279px
diff --git a/modules/mogo-module-extensions/src/main/res/values/strings.xml b/modules/mogo-module-extensions/src/main/res/values/strings.xml
index 9b05b089d1..2ffaf6481b 100644
--- a/modules/mogo-module-extensions/src/main/res/values/strings.xml
+++ b/modules/mogo-module-extensions/src/main/res/values/strings.xml
@@ -69,7 +69,7 @@
- 提前看看出行路况,试试唤醒小智说,“中关村路况怎么样”
- 默认视角
+ 近距视角
远距视角
diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/MogoServices.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/MogoServices.java
index 788ea3028c..7bb5d1e5a4 100644
--- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/MogoServices.java
+++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/MogoServices.java
@@ -437,7 +437,9 @@ public class MogoServices implements IMogoMapListener,
// isNeedUploadCoordinatesDurationInTime() ) { //todo 实时在线车辆需要注释,否则在2D模式下不能展示
// }
//请求在线车辆数据,刷新地图在线车辆
- MapMarkerManager.getInstance().getOnlineCarDataByAutoRefreshStrategy( ro.mLonLat );
+ if (!mLastStatusIsVr){
+ MapMarkerManager.getInstance().getOnlineCarDataByAutoRefreshStrategy( ro.mLonLat );
+ }
Logger.i( TAG, "刷新半径 = %s, 点 = %s, zoomLevel = %s, amount = %s", ro.mRadius, ro.mLonLat, mLastZoomLevel, ro.mAmount );
}
@@ -938,6 +940,8 @@ public class MogoServices implements IMogoMapListener,
@Override
public void onMapModeChanged( EnumMapUI ui ) {
+ Log.i(TAG, "onMapModeChanged:" + ui);
+ clearAllData();
if ( ui == EnumMapUI.Type_VR ) {
if ( !mLastStatusIsVr ) {
MogoApisHandler.getInstance().getApis().getStatusManagerApi().setVrMode( TAG, true );
diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/StatusChangedAdapter.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/StatusChangedAdapter.java
index fb0a9eeede..c8f89e29dc 100644
--- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/StatusChangedAdapter.java
+++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/StatusChangedAdapter.java
@@ -8,7 +8,6 @@ import com.mogo.module.common.MogoApisHandler;
import com.mogo.module.service.launchercard.LauncherCardRefresher;
import com.mogo.module.service.marker.MapMarkerManager;
import com.mogo.module.service.strategy.CarIconDisplayStrategy;
-import com.mogo.module.service.vrmode.VrModeController;
import com.mogo.service.statusmanager.IMogoStatusChangedListener;
import com.mogo.service.statusmanager.StatusDescriptor;
import com.mogo.utils.UiThreadHandler;
@@ -90,7 +89,6 @@ abstract class StatusChangedAdapter implements IMogoStatusChangedListener {
MogoServices.getInstance().unregisterInternalUnWakeupWords();
MogoServices.getInstance().stopAutoRefreshStrategy();
}
- VrModeController.getInstance().onMainPageResumeStatusChanged(resume);
}
public void onMainPageIsBackgroundStatusChanged(boolean isBackground) {
@@ -163,7 +161,6 @@ abstract class StatusChangedAdapter implements IMogoStatusChangedListener {
}
public void onVrModeChanged(boolean isVrMode) {
- VrModeController.getInstance().onVrModeChanged(isVrMode);
if (MarkerServiceHandler.getMogoStatusManager().isSeekHelping()) {
onSeekHelpingStatusChanged(true);
}
diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/intent/MockIntentHandler.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/intent/MockIntentHandler.java
index 02d412edb5..aab5b254b5 100644
--- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/intent/MockIntentHandler.java
+++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/intent/MockIntentHandler.java
@@ -617,6 +617,10 @@ public class MockIntentHandler implements IntentHandler {
case 55:
//开启模拟数据Mock,用于验证算法准确性
TimeDelayUploadManager.getInstance().init(context);
+ break;
+ case 56:
+ // 开启数据采集 自车定位和视觉识别
+
break;
}
}
diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/mocktools/DataCollectionHandler.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/mocktools/DataCollectionHandler.java
new file mode 100644
index 0000000000..a62e92a18a
--- /dev/null
+++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/mocktools/DataCollectionHandler.java
@@ -0,0 +1,75 @@
+package com.mogo.module.service.mocktools;
+
+import android.os.Environment;
+import android.os.Handler;
+import android.os.Message;
+
+import com.mogo.utils.WorkThreadHandler;
+
+import java.io.File;
+
+public class DataCollectionHandler {
+
+ private static volatile DataCollectionHandler handler;
+ private static final byte[] obj = new byte[0];
+ private volatile boolean openDataCollect = false;
+
+ private Handler mLocationDataCollectHandler;
+ private Handler mRecognizeDataCollectHandler;
+
+ private static final String WRITE_FILE_PATH = Environment.getExternalStorageDirectory().getPath() + File.separator + "mockWrite";
+
+ private DataCollectionHandler() {
+
+ }
+
+ public static DataCollectionHandler getInstance() {
+ if (handler == null) {
+ synchronized (obj) {
+ if (handler == null) {
+ handler = new DataCollectionHandler();
+ }
+ }
+ }
+ return handler;
+ }
+
+ public void start() {
+ openDataCollect = true;
+ }
+
+ public boolean canCollectData() {
+ return openDataCollect;
+ }
+
+ public void collectLocationDataToFile(String locationData) {
+ if (mLocationDataCollectHandler == null) {
+ mLocationDataCollectHandler = new Handler(WorkThreadHandler.newInstance("data-collect-thread").getLooper()) {
+ @Override
+ public void handleMessage(Message msg) {
+ super.handleMessage(msg);
+
+ }
+ };
+ }
+ }
+
+ public void collectRecogniseDataToFile() {
+ if (mRecognizeDataCollectHandler == null) {
+ mRecognizeDataCollectHandler = new Handler(WorkThreadHandler.newInstance("recognize-collect-thread").getLooper()) {
+ @Override
+ public void handleMessage(Message msg) {
+ super.handleMessage(msg);
+
+ }
+ };
+ }
+ }
+
+ public void stop() {
+ openDataCollect = false;
+ mLocationDataCollectHandler = null;
+ mRecognizeDataCollectHandler = null;
+ }
+
+}
diff --git a/modules/mogo-module-smp/src/main/res/drawable-xhdpi-2560x1440/module_small_map_view_my_location_logo.png b/modules/mogo-module-smp/src/main/res/drawable-xhdpi-2560x1440/module_small_map_view_my_location_logo.png
new file mode 100644
index 0000000000..fa98de96a1
Binary files /dev/null and b/modules/mogo-module-smp/src/main/res/drawable-xhdpi-2560x1440/module_small_map_view_my_location_logo.png differ
diff --git a/modules/mogo-module-v2x/build.gradle b/modules/mogo-module-v2x/build.gradle
index 4be22e5052..a299f8db01 100644
--- a/modules/mogo-module-v2x/build.gradle
+++ b/modules/mogo-module-v2x/build.gradle
@@ -94,7 +94,8 @@ dependencies {
androidTestImplementation 'androidx.test.ext:junit:1.1.1'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
implementation project(':modules:mogo-module-obu')
- implementation rootProject.ext.dependencies.mebulaobu
+// implementation rootProject.ext.dependencies.mebulaobu
+ implementation rootProject.ext.dependencies.mogoobu
}
diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/V2XObuManager.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/V2XObuManager.java
index fc56d5c187..02b4309e98 100644
--- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/V2XObuManager.java
+++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/V2XObuManager.java
@@ -17,6 +17,7 @@ import com.mogo.commons.debug.DebugConfig;
import com.mogo.commons.voice.AIAssist;
import com.mogo.map.location.MogoLocation;
import com.mogo.module.common.MogoApisHandler;
+import com.mogo.module.common.drawer.AdasRecognizedResultDrawer;
import com.mogo.module.common.entity.V2XMessageEntity;
import com.mogo.module.common.entity.V2XObuEventEntity;
import com.mogo.module.common.entity.V2XPushMessageEntity;
@@ -29,6 +30,8 @@ import com.mogo.module.v2x.utils.DrivingDirectionUtils;
import com.mogo.module.v2x.utils.ObuConfig;
import com.mogo.module.v2x.utils.TestOnLineCarUtils;
import com.mogo.module.v2x.utils.ToastUtils;
+import com.mogo.module.v2x.utils.V2XUtils;
+import com.mogo.service.adas.entity.ADASRecognizedResult;
import com.mogo.service.entrance.IMogoEntranceButtonController;
import com.mogo.utils.UiThreadHandler;
import com.mogo.utils.logger.Logger;
@@ -38,15 +41,26 @@ import com.zhidao.mogo.module.obu.obu.IObuCallback;
import com.zhidao.mogo.module.obu.obu.bean.MogoObuEventInfo;
import com.zhidao.mogo.module.obu.obu.bean.MogoObuLocationInfo;
import com.zhidao.mogo.module.obu.obu.bean.MogoObuTrafficLightInfo;
-import com.zhidao.support.nebulaobu.NebulaObuClient;
-import com.zhidao.support.nebulaobu.OnObuListener;
-import com.zhidao.support.nebulaobu.model.ActiveSafetyInfo;
-import com.zhidao.support.nebulaobu.model.ObuInfo;
-import com.zhidao.support.nebulaobu.model.ObuInfoMore;
+//import com.zhidao.support.nebulaobu.NebulaObuClient;
+//import com.zhidao.support.nebulaobu.OnObuListener;
+//import com.zhidao.support.nebulaobu.model.ActiveSafetyInfo;
+//import com.zhidao.support.nebulaobu.model.ObuInfo;
+//import com.zhidao.support.nebulaobu.model.ObuInfoMore;
+
+import com.zhidao.support.obu.MogoObuManager;
+import com.zhidao.support.obu.OnMogoObuListener;
+import com.zhidao.support.obu.constants.ObuConstants;
+import com.zhidao.support.obu.model.CvxAppInitIndInfo;
+import com.zhidao.support.obu.model.CvxHvCarIndInfo;
+import com.zhidao.support.obu.model.CvxHvInfoIndInfo;
+import com.zhidao.support.obu.model.CvxRvInfoIndInfo;
+import com.zhidao.support.obu.model.CvxSetConfigCfmInfo;
+import com.zhidao.support.obu.model.CvxV2vThreatIndInfo;
import org.json.JSONArray;
import org.json.JSONObject;
+import java.util.ArrayList;
import java.util.List;
import java.util.Map;
@@ -85,6 +99,7 @@ public class V2XObuManager implements IObuCallback, Handler.Callback {
private final Handler handler = new Handler(this);
private final ObuTypeExchangeReceiver obuTypeExchangeReceiver = new ObuTypeExchangeReceiver();
private ObuManager obuManager;
+ final String icw_data = "02000114010000000000001effd7892b11a4440af70100142a03000907e506100e2917019000005662010a45000b0000220847162c000037970010000a17f6215c459478b6010347ac045000090a0006012c01f4009600080073007300730073000b000000000000000000000000000000002b000037780000247300003261000000000000426c827f47001200100000000000000000000021220000349a006c0010000a17f63ecb45947ba301030000332c0010000a17f642e945947bea010300004d580010000a17f6435545947e4e0103000054c40010000a17f6413a45947f96010300005c300010000a17f62c2845947d140103000070e40010000a17f5fdb14594786001030000992000060004ffec2710";
public void init(Context context) {
Logger.d(MODULE_NAME, "obuManager初始化--");
@@ -94,12 +109,19 @@ public class V2XObuManager implements IObuCallback, Handler.Callback {
obuManager.registerObuDataChangedListener(this);
//使用adas部门obu sdk (星云)
- NebulaObuClient.getInstance().init(context);
- NebulaObuClient.getInstance().registerObu(100);
- NebulaObuClient.getInstance().registerObuListener(listener);
+// NebulaObuClient.getInstance().init(context);
+// NebulaObuClient.getInstance().registerObu(100);
+// NebulaObuClient.getInstance().registerObuListener(listener);
+
+ //自研obu
+ MogoObuManager.getInstance().init(context);
+ MogoObuManager.getInstance().connect();
+ MogoObuManager.getInstance().registerListener(mogoObuListener);
+
+ //TODO 测试
+// MogoObuManager.getInstance().test(icw_data);
// UiThreadHandler.postDelayed( () -> {
-// //TODO 测试
// MarkerServiceHandler.getApis().getV2XListenerManager().warningChangedForListenerWithDirection(3, MogoReceiver.ACTION_V2X_FRONT_WARNING);
// handleSdkObu(1);
//
@@ -109,66 +131,184 @@ public class V2XObuManager implements IObuCallback, Handler.Callback {
context.registerReceiver(obuTypeExchangeReceiver, filter);
}
-
- public void release() {
- NebulaObuClient.getInstance().unregisterObu();
- NebulaObuClient.getInstance().unregisterObuListener();
- }
-
-
- /**
- * 星云obu数据监听
- */
- private OnObuListener listener = new OnObuListener() {
+ private OnMogoObuListener mogoObuListener = new OnMogoObuListener() {
@Override
- public void onRegister() {
+ public void onConnected() {
+ //OBU连接成功
+ Logger.d("liyz", "onConnected ------> ");
}
@Override
public void onConnectFail(boolean isNeedReconnect) {
Logger.d("liyz", "onConnectFail ------> ");
+ //OBU连接失败
}
@Override
- public void onUnregister() {
+ public void onDisconnect() {
+ Logger.d("liyz", "onDisconnect ------> ");
+ //OBU断开连接
}
@Override
- public void onObuInfo(ObuInfo info) {
- Logger.d("liyz", "onObuInfo ------> " + info.toString());
+ public void onReceiveOriginData(String data) {
+ super.onReceiveOriginData(data);
+ Logger.d("liyz", "onReceiveOriginData ------> data = " + data);
+ //接收到的原始数据
}
@Override
- public void onWarningInfo(List infoList) {
- if (infoList != null) {
- if (infoList.size() > 0) { //一般只有一个
- ActiveSafetyInfo info = infoList.get(0);
- Logger.d("liyz", "onWarningInfo type ------> " + info.getWarningtype() + "--size = " + infoList.size());
- if (info.getWarningtype() == 3) {
- if (MogoApisHandler.getInstance().getApis().getStatusManagerApi().isVrMode()) {
- handleSdkObu(2);
- }
- }
+ public void onSendData(byte[] bytes) {
+ super.onSendData(bytes);
+ //发送的数据
+ Logger.d("liyz", "onSendData ------> ");
+ }
+
+ @Override
+ public void onCvxAppInitIndInfo(CvxAppInitIndInfo info) {
+ super.onCvxAppInitIndInfo(info);
+ Logger.d("liyz", "onCvxAppInitIndInfo ------> " + info.toString());
+ //CV2X系统信息
+ }
+
+ @Override
+ public void onCvxSetConfigCfm(CvxSetConfigCfmInfo info) {
+ super.onCvxSetConfigCfm(info);
+ Logger.d("liyz", "onCvxSetConfigCfm ------> " + info.toString());
+ //设置CV2X系统的配置确认
+ }
+
+ @Override
+ public void onCvxHvCarIndInfo(CvxHvCarIndInfo info) {
+ //主车车辆信息
+ Logger.d("liyz", "onCvxHvCarIndInfo ------> " + info.toString());
+ }
+
+ @Override
+ public void onCvxHvInfoIndInfo(CvxHvInfoIndInfo info) {
+ //主车信息
+ }
+
+ @Override
+ public void onCvxRvInfoIndInfo(CvxRvInfoIndInfo info) {
+ //远车信息
+ Logger.d("liyz", "onCvxRvInfoIndInfo ------> " + info.toString());
+ }
+
+ @Override
+ public void onCvxV2vThreatIndInfo(CvxV2vThreatIndInfo info) {
+ //预警信息
+ Logger.e("liyz", "onCvxV2vThreatIndInfo ------> " + info.toString());
+ //预警类型 threat_level 3
+ if (info != null) {
+ if (info.getThreat_info() != null && info.getControl() != null &&
+ info.getThreat_info().getThreat_level() == 3) { //看看2的情况
+ //预警方位
+ int direction = V2XUtils.getDirection((float) info.getExt_info().getAzimuth());
+ Log.d("liyz", "direction = " + direction + "---azimuth = " + (float) info.getExt_info().getAzimuth());
+ MarkerServiceHandler.getApis().getV2XListenerManager().warningChangedForListenerWithDirection(direction, MogoReceiver.ACTION_V2X_FRONT_WARNING);
+
+ //处理预警类型
+ int appId = info.getThreat_info().getApp_id();
+ handleSdkObu(getEventType(appId));
}
+
+ //预警数据的组装,车辆实时移动和变色 TODO 这里需要obu提供他车列表
+ AdasRecognizedResultDrawer.getInstance().renderAdasRecognizedResult(getResultList(info));
+ } else {
+ Log.e("liyz", "info == null ");
}
}
};
+ private int getEventType(int appid) {
+ if (appid == ObuConstants.USE_CASE_ID.EBW) {
+ return ObuConstant.TYPE_URGENCY_COLLISION_WARNING;
+ } else if (appid == ObuConstants.USE_CASE_ID.ICW) {
+ return ObuConstant.TYPE_CROSS_COLLISION_WARNING;
+ }
+ return 0;
+ }
+
+ private List resultList = null;
+
+ private List getResultList(CvxV2vThreatIndInfo info) {
+ if (resultList == null) {
+ resultList = new ArrayList<>();
+ }
+
+ ADASRecognizedResult adasRecognizedResult = new ADASRecognizedResult();
+ adasRecognizedResult.uuid = info.getVehicle_id();
+ if (info.getBasic_info() != null && info.getBasic_info().getPosition() != null) {
+ adasRecognizedResult.lat = info.getBasic_info().getPosition().getLatitude();
+ adasRecognizedResult.lon = info.getBasic_info().getPosition().getLongitude();
+ }
+ adasRecognizedResult.type = 3; //小轿车
+ adasRecognizedResult.heading = info.getBasic_info().getHeading();
+ adasRecognizedResult.speed = info.getBasic_info().getSpeed();
+
+ resultList.add(adasRecognizedResult);
+
+ return resultList;
+
+ }
+
+// public void release() {
+// NebulaObuClient.getInstance().unregisterObu();
+// NebulaObuClient.getInstance().unregisterObuListener();
+// MogoObuManager.getInstance().unregisterListener();
+// }
+
+ /**
+ * 星云obu数据监听
+ */
+// private OnObuListener listener = new OnObuListener() {
+// @Override
+// public void onRegister() {
+// }
+//
+// @Override
+// public void onConnectFail(boolean isNeedReconnect) {
+// }
+//
+// @Override
+// public void onUnregister() {
+// }
+//
+// @Override
+// public void onObuInfo(ObuInfo info) {
+// }
+//
+// @Override
+// public void onWarningInfo(List infoList) {
+// if (infoList != null) {
+// if (infoList.size() > 0) { //一般只有一个
+// ActiveSafetyInfo info = infoList.get(0);
+// Logger.d("liyz", "onWarningInfo type ------> " + info.getWarningtype() + "--size = " + infoList.size());
+// if (info.getWarningtype() == 3) {
+// if (MogoApisHandler.getInstance().getApis().getStatusManagerApi().isVrMode()) {
+// handleSdkObu(2);
+// }
+// }
+// }
+// }
+// }
+// };
private void handleSdkObu(int type) {
V2XMessageEntity messageEntity = new V2XMessageEntity<>();
messageEntity.setType(V2XMessageEntity.V2XTypeEnum.ALERT_OBU_EVENT);
V2XObuEventEntity urgencyEvent = new V2XObuEventEntity();
- if (type == 1) { //交叉路口碰撞预警 TODO
+ if (type == ObuConstant.TYPE_CROSS_COLLISION_WARNING) { //交叉路口碰撞预警
urgencyEvent.setType(ObuConstant.TYPE_CROSS_COLLISION_WARNING);
urgencyEvent.setDesc(V2XObuEventScenario.URGENCY_CROING_WARN_TEXT);
- } else if (type == 2) { // 前车紧急制动预警
+ } else if (type == ObuConstant.TYPE_URGENCY_COLLISION_WARNING) { // 前车紧急制动预警
urgencyEvent.setType(ObuConstant.TYPE_URGENCY_COLLISION_WARNING);
urgencyEvent.setDesc(V2XObuEventScenario.URGENCY_COLLISION_WARN_TEXT);
} else {
- urgencyEvent.setType(ObuConstant.TYPE_URGENCY_COLLISION_WARNING);
- urgencyEvent.setDesc(V2XObuEventScenario.URGENCY_COLLISION_WARN_TEXT);
+// urgencyEvent.setType(ObuConstant.TYPE_URGENCY_COLLISION_WARNING);
+// urgencyEvent.setDesc(V2XObuEventScenario.URGENCY_COLLISION_WARN_TEXT);
}
messageEntity.setContent(urgencyEvent);
@@ -367,7 +507,7 @@ public class V2XObuManager implements IObuCallback, Handler.Callback {
// 暂无设计图,先简单显示
V2XObuEventEntity tmpEvent = new V2XObuEventEntity();
tmpEvent.setType(eventType);
- tmpEvent.setDesc(info.getType()+"--"+info.getDescribe());
+ tmpEvent.setDesc(info.getType() + "--" + info.getDescribe());
messageEntity.setContent(tmpEvent);
V2XObuEventScenario.getInstance().init(messageEntity);
break;
diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/obu/V2XObuEventScenario.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/obu/V2XObuEventScenario.java
index ec962d4b1b..596734eb33 100644
--- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/obu/V2XObuEventScenario.java
+++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/obu/V2XObuEventScenario.java
@@ -44,7 +44,7 @@ public class V2XObuEventScenario extends AbsV2XScenario imple
public static final String URGENCY_COLLISION_WARN_TEXT_ONE = "前车急刹,注意保持安全距离!";
public static final String URGENCY_COLLISION_WARN_TEXT = "前车急刹";
- public static final String URGENCY_CROING_WARN_TEXT = "交叉路口碰撞预警";
+ public static final String URGENCY_CROING_WARN_TEXT = "注意交叉路口车辆";
private static final int MSG_CLOSE_OBU_WINDOW = 1001;
private static final int DEFAULT_EXPIRE_TIME = 20_000;
diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/obu/V2XObuEventWindow.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/obu/V2XObuEventWindow.java
index 44b5f8a400..fc5bbfb829 100644
--- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/obu/V2XObuEventWindow.java
+++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/obu/V2XObuEventWindow.java
@@ -85,7 +85,7 @@ public class V2XObuEventWindow extends FrameLayout implements IV2XWindow 45 && degree < 135) {
+ return 1; //前方
+ } else if (degree > 135 && degree < 225) {
+ return 4; //右方
+ } else if ((degree < 45 && degree > 0) || degree < 360 && degree > 315) {
+ return 3; //左方
+ }
+
+ return 1;
+ }
+
}
diff --git a/modules/mogo-module-v2x/src/main/res/drawable-xhdpi-1920x1000/v2x_icon_car_collide_warning.png b/modules/mogo-module-v2x/src/main/res/drawable-xhdpi-1920x1000/v2x_icon_car_collide_warning.png
new file mode 100644
index 0000000000..f5fd2de5e0
Binary files /dev/null and b/modules/mogo-module-v2x/src/main/res/drawable-xhdpi-1920x1000/v2x_icon_car_collide_warning.png differ
diff --git a/modules/mogo-module-v2x/src/main/res/drawable-xhdpi-2560x1440/v2x_icon_car_collide_warning.png b/modules/mogo-module-v2x/src/main/res/drawable-xhdpi-2560x1440/v2x_icon_car_collide_warning.png
new file mode 100644
index 0000000000..e7709ff347
Binary files /dev/null and b/modules/mogo-module-v2x/src/main/res/drawable-xhdpi-2560x1440/v2x_icon_car_collide_warning.png differ
diff --git a/modules/mogo-module-v2x/src/main/res/drawable-xhdpi/v2x_icon_car_collide_warning.png b/modules/mogo-module-v2x/src/main/res/drawable-xhdpi/v2x_icon_car_collide_warning.png
new file mode 100644
index 0000000000..f5fd2de5e0
Binary files /dev/null and b/modules/mogo-module-v2x/src/main/res/drawable-xhdpi/v2x_icon_car_collide_warning.png differ
diff --git a/modules/mogo-module-v2x/src/main/res/drawable-xhdpi/v2x_icon_obu_traffic_light.png b/modules/mogo-module-v2x/src/main/res/drawable-xhdpi/v2x_icon_obu_traffic_light.png
index 38dc68d539..81a5f5eee8 100644
Binary files a/modules/mogo-module-v2x/src/main/res/drawable-xhdpi/v2x_icon_obu_traffic_light.png and b/modules/mogo-module-v2x/src/main/res/drawable-xhdpi/v2x_icon_obu_traffic_light.png differ
diff --git a/modules/mogo-module-v2x/src/main/res/drawable/v2x_refresh_button_bg.xml b/modules/mogo-module-v2x/src/main/res/drawable/v2x_refresh_button_bg.xml
index cac43e0f2d..a6a6e21a94 100644
--- a/modules/mogo-module-v2x/src/main/res/drawable/v2x_refresh_button_bg.xml
+++ b/modules/mogo-module-v2x/src/main/res/drawable/v2x_refresh_button_bg.xml
@@ -2,7 +2,7 @@
-
-
+
diff --git a/modules/mogo-module-v2x/src/main/res/layout/item_v2x_see_crossroad_live_video.xml b/modules/mogo-module-v2x/src/main/res/layout/item_v2x_see_crossroad_live_video.xml
index 50615a0a07..675da08f48 100644
--- a/modules/mogo-module-v2x/src/main/res/layout/item_v2x_see_crossroad_live_video.xml
+++ b/modules/mogo-module-v2x/src/main/res/layout/item_v2x_see_crossroad_live_video.xml
@@ -4,7 +4,7 @@
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
- android:background="#3D4053"
+ android:background="#3B4577"
android:gravity="center"
app:roundLayoutRadius="@dimen/dp_30"
tools:layout_height="@dimen/module_v2x_event_see_live_window_height">
diff --git a/modules/mogo-module-v2x/src/main/res/layout/view_video_layout_see_crossroad.xml b/modules/mogo-module-v2x/src/main/res/layout/view_video_layout_see_crossroad.xml
index 73a2019ecc..6f4e17553d 100644
--- a/modules/mogo-module-v2x/src/main/res/layout/view_video_layout_see_crossroad.xml
+++ b/modules/mogo-module-v2x/src/main/res/layout/view_video_layout_see_crossroad.xml
@@ -4,7 +4,7 @@
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="@dimen/module_v2x_event_see_live_window_height"
- android:background="@color/live_video_background_color"
+ android:background="#3B4577"
app:roundLayoutRadius="@dimen/dp_20">
params = new HashMap<>(8);
params.put("sn", MoGoAiCloudClientConfig.getInstance().getSn());
-// currentSn = useTestSn ? TEST_SN : MoGoAiCloudClientConfig.getInstance().getSn();
-// params.put("sn", currentSn);
-
SingletonsHolder.get(IMogoNetwork.class).create(CarModelInfoNetApiServices.class, CarModelInfoNetApiServices.getBaseUrl()).
requestCarModelList(params).
subscribeOn(Schedulers.io()).
@@ -695,7 +710,8 @@ public class MogoADASController implements IMogoADASController {
String value = GsonUtil.jsonFromObject(o.getResult());
SharedPrefsMgr.getInstance(context).putString("CAR_MODEL_LIST", value);
if (value != null && !value.isEmpty()) {
- AutopilotServiceManage.getInstance().settingCarModelListInfo(value);
+ //AutopilotServiceManage.getInstance().settingCarModelListInfo(value);
+ adasProvider.settingCarModelListInfo(value);
}
}
@@ -719,7 +735,8 @@ public class MogoADASController implements IMogoADASController {
mIsReleased = true;
//AutopilotServiceManage.getInstance().unRegisterAutopilotDataListener( mAutopolitDataCallBack );
adasProvider.removeAdasEventListener(mAdasDataListener);
- AutopilotServiceManage.getInstance().release();
+ adasProvider.removeAdasStatusListener();
+ //AutopilotServiceManage.getInstance().release();
}
@Override
@@ -829,7 +846,8 @@ public class MogoADASController implements IMogoADASController {
}
int status = IMogoAdasOCHCallback.STATUS_AUTOPILOT_DISABLE;
try {
- status = AutopilotServiceManage.getInstance().autopilotStateCall().getState();
+ //status = AutopilotServiceManage.getInstance().autopilotStateCall().getState();
+ status = adasProvider.autopilotStateCall().getState();
} catch (Exception e) {
e.printStackTrace();
}
@@ -854,11 +872,12 @@ public class MogoADASController implements IMogoADASController {
@Override
public void cancelAutopilot() {
- try {
- AutopilotServiceManage.getInstance().cancelAutopilot();
- } catch (RemoteException e) {
- e.printStackTrace();
- }
+ //try {
+ //AutopilotServiceManage.getInstance().cancelAutopilot();
+ adasProvider.cancelPilot();
+ //} catch (RemoteException e) {
+ // e.printStackTrace();
+ //}
}
@Override
diff --git a/services/mogo-service/src/main/java/com/mogo/service/impl/statusmanager/MogoStatusManager.java b/services/mogo-service/src/main/java/com/mogo/service/impl/statusmanager/MogoStatusManager.java
index 34181e7e32..bfccf24afb 100644
--- a/services/mogo-service/src/main/java/com/mogo/service/impl/statusmanager/MogoStatusManager.java
+++ b/services/mogo-service/src/main/java/com/mogo/service/impl/statusmanager/MogoStatusManager.java
@@ -159,7 +159,7 @@ public class MogoStatusManager implements IMogoStatusManager {
private boolean get_bool_val(StatusDescriptor descriptor ) {
Boolean val = mStatus.get( descriptor );
- return val == null ? false : val;
+ return val != null && val;
}
@Override