[Taxi Passenger v1.1.0] taxi-p 代码调整
This commit is contained in:
@@ -7,11 +7,11 @@ package com.mogo.och.taxi.passenger.bean;
|
||||
*/
|
||||
public class TaxiPassengerOrderQueryReqBean {
|
||||
|
||||
public String sn;
|
||||
public String driverSn;
|
||||
public String orderNo;
|
||||
|
||||
public TaxiPassengerOrderQueryReqBean(String sn, String orderNo) {
|
||||
this.sn = sn;
|
||||
public TaxiPassengerOrderQueryReqBean(String driverSn, String orderNo) {
|
||||
this.driverSn = driverSn;
|
||||
this.orderNo = orderNo;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -17,6 +17,6 @@ public interface IOCHTaxiPassengerOrderStatusCallback {
|
||||
void onCurrentOrderStatusChanged(TaxiPassengerOrderQueryRespBean.Result order);
|
||||
|
||||
// 当前位置距离上车点的距离(米)、预估时间(秒)
|
||||
void onCurrentOrderDistToEndChanged(long meters, long timeInSecond);
|
||||
void onCurrentOrderDistToEndChanged(int meters, int timeInSecond);
|
||||
|
||||
}
|
||||
|
||||
@@ -4,9 +4,11 @@ import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.location.Location;
|
||||
import android.net.ConnectivityManager;
|
||||
import android.text.TextUtils;
|
||||
|
||||
import androidx.annotation.Nullable;
|
||||
|
||||
import com.amap.api.navi.model.NaviLatLng;
|
||||
import com.elegant.network.utils.GsonUtil;
|
||||
import com.mogo.cloud.commons.utils.CoordinateUtils;
|
||||
import com.mogo.commons.debug.DebugConfig;
|
||||
@@ -34,6 +36,7 @@ import com.mogo.och.taxi.passenger.bean.TaxiPassengerOrdersInServiceQueryRespBea
|
||||
import com.mogo.och.taxi.passenger.callback.IOCHTaxiPassengerADASStatusCallback;
|
||||
import com.mogo.och.taxi.passenger.callback.IOCHTaxiPassengerAutopilotPlanningCallback;
|
||||
import com.mogo.och.taxi.passenger.callback.IOCHTaxiPassengerControllerStatusCallback;
|
||||
import com.mogo.och.taxi.passenger.callback.IOCHTaxiPassengerNaviChangedCallback;
|
||||
import com.mogo.och.taxi.passenger.callback.IOCHTaxiPassengerOrderStatusCallback;
|
||||
import com.mogo.och.taxi.passenger.callback.ITaxiPassengerVeloctityCallback;
|
||||
import com.mogo.och.taxi.passenger.constant.TaxiPassengerConst;
|
||||
@@ -51,13 +54,15 @@ import org.jetbrains.annotations.NotNull;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
|
||||
/**
|
||||
* Created by pangfan on 2021/8/19
|
||||
*
|
||||
* 网约车 - 出租车业务逻辑处理
|
||||
*/
|
||||
public class TaxiPassengerModel {
|
||||
public class TaxiPassengerModel implements IOCHTaxiPassengerNaviChangedCallback {
|
||||
|
||||
private static final String TAG = TaxiPassengerModel.class.getSimpleName();
|
||||
|
||||
@@ -76,10 +81,11 @@ public class TaxiPassengerModel {
|
||||
private volatile List<TaxiPassengerOrderQueryRespBean.Result> mWaitServiceList = Collections.emptyList(); //待服务订单
|
||||
|
||||
private IOCHTaxiPassengerADASStatusCallback mADASStatusCallback; //Model->Presenter:自动驾驶状态相关
|
||||
private IOCHTaxiPassengerControllerStatusCallback mControllerStatusCallback; //Model->Presenter:VR mode等
|
||||
private IOCHTaxiPassengerOrderStatusCallback mOrderStatusCallback; //Model->Presenter:订单变更
|
||||
private IOCHTaxiPassengerAutopilotPlanningCallback mAutopilotPlanningCallback; //Model->Presenter:自动驾驶线路规划
|
||||
|
||||
private Map<String,IOCHTaxiPassengerOrderStatusCallback> mOrderStatusCallbackMap = new ConcurrentHashMap<>();
|
||||
private Map<String,IOCHTaxiPassengerControllerStatusCallback> mControllerStatusCallbackMap = new ConcurrentHashMap<>();
|
||||
|
||||
private ITaxiPassengerVeloctityCallback mVeloctityCallback;//道路限速返回
|
||||
|
||||
private double mLongitude, mLatitude;
|
||||
@@ -96,12 +102,27 @@ public class TaxiPassengerModel {
|
||||
this.mADASStatusCallback = callback;
|
||||
}
|
||||
|
||||
public void setControllerStatusCallback(IOCHTaxiPassengerControllerStatusCallback callback) {
|
||||
this.mControllerStatusCallback = callback;
|
||||
public void setControllerStatusCallback(String tag,IOCHTaxiPassengerControllerStatusCallback callback) {
|
||||
if (tag == null || "".equals(tag)) return;
|
||||
|
||||
if (callback == null) {
|
||||
mControllerStatusCallbackMap.remove(tag);
|
||||
return;
|
||||
}
|
||||
|
||||
mControllerStatusCallbackMap.put(tag,callback);
|
||||
|
||||
}
|
||||
|
||||
public void setOrderStatusCallback(IOCHTaxiPassengerOrderStatusCallback callback) {
|
||||
this.mOrderStatusCallback = callback;
|
||||
public void setOrderStatusCallback(String tag ,IOCHTaxiPassengerOrderStatusCallback callback) {
|
||||
if (tag == null || "".equals(tag)) return;
|
||||
|
||||
if (callback == null) {
|
||||
mOrderStatusCallbackMap.remove(tag);
|
||||
return;
|
||||
}
|
||||
|
||||
mOrderStatusCallbackMap.put(tag,callback);
|
||||
}
|
||||
|
||||
public void setVeloctityCallback(ITaxiPassengerVeloctityCallback callback){
|
||||
@@ -218,8 +239,10 @@ public class TaxiPassengerModel {
|
||||
if (mCurrentOCHOrder == null) {
|
||||
//1.1.1. 当本地无currentOrder(已经完成or取消),则更新currentOrder,并通知ui更新
|
||||
updateNativeCurrentOrder(data.data.servicing.get(0));
|
||||
if (mOrderStatusCallback != null) {
|
||||
mOrderStatusCallback.onCurrentOrderStatusChanged(mCurrentOCHOrder);
|
||||
if (mOrderStatusCallbackMap.size() > 0) {
|
||||
for (IOCHTaxiPassengerOrderStatusCallback callback :mOrderStatusCallbackMap.values()){
|
||||
callback.onCurrentOrderStatusChanged(mCurrentOCHOrder);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
//1.1.2. 当本地有currentOrder:
|
||||
@@ -227,10 +250,13 @@ public class TaxiPassengerModel {
|
||||
//orderId一致且orderStatus不一致时:则更新currentOrder,并通知ui更新
|
||||
if (!mCurrentOCHOrder.orderNo.equals(data.data.servicing.get(0).orderNo)) {
|
||||
queryCurOrderStatus();
|
||||
} else if (mCurrentOCHOrder.orderStatus != data.data.servicing.get(0).orderStatus) {
|
||||
// } else if (mCurrentOCHOrder.orderStatus != data.data.servicing.get(0).orderStatus) {
|
||||
} else { //todo 订单拦截放到各自实现去做
|
||||
updateNativeCurrentOrder(data.data.servicing.get(0));
|
||||
if (mOrderStatusCallback != null) {
|
||||
mOrderStatusCallback.onCurrentOrderStatusChanged(mCurrentOCHOrder);
|
||||
if (mOrderStatusCallbackMap.size() > 0) {
|
||||
for (IOCHTaxiPassengerOrderStatusCallback callback :mOrderStatusCallbackMap.values()){
|
||||
callback.onCurrentOrderStatusChanged(mCurrentOCHOrder);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -268,8 +294,10 @@ public class TaxiPassengerModel {
|
||||
} else {
|
||||
updateNativeCurrentOrder(data.data);
|
||||
}
|
||||
if (mOrderStatusCallback != null) {
|
||||
mOrderStatusCallback.onCurrentOrderStatusChanged(data.data);
|
||||
if (mOrderStatusCallbackMap.size() > 0) {
|
||||
for (IOCHTaxiPassengerOrderStatusCallback callback :mOrderStatusCallbackMap.values()){
|
||||
callback.onCurrentOrderStatusChanged(mCurrentOCHOrder);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -346,12 +374,27 @@ public class TaxiPassengerModel {
|
||||
endLon, endLat,
|
||||
carLocation.getLongitude(), carLocation.getLatitude());
|
||||
mCurrentOCHOrder.decreaseTravelDistance(distance);
|
||||
if (mOrderStatusCallback != null && distance >= 0) {
|
||||
mOrderStatusCallback.onCurrentOrderDistToEndChanged((long) distance, 0);
|
||||
}
|
||||
// if (mOrderStatusCallback != null && distance >= 0) {
|
||||
// mOrderStatusCallback.onCurrentOrderDistToEndChanged((long) distance, 0);
|
||||
// }
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 计算订单起终距离
|
||||
* @return
|
||||
*/
|
||||
public int calculateOrderDistanceSum(){
|
||||
double endLon = mCurrentOCHOrder.endSiteGcjPoint.get(0);
|
||||
double endLat = mCurrentOCHOrder.endSiteGcjPoint.get(1);
|
||||
double startLon = mCurrentOCHOrder.startSiteGcjPoint.get(0);
|
||||
double startLat = mCurrentOCHOrder.startSiteGcjPoint.get(1);
|
||||
double distance = CoordinateUtils.calculateLineDistance(
|
||||
endLon, endLat,
|
||||
startLon, startLat);
|
||||
return new Double(distance).intValue();
|
||||
}
|
||||
|
||||
//监听网络变化,避免启动机器时无网导致无法更新订单信息
|
||||
private IMogoIntentListener mNetWorkIntentListener = new IMogoIntentListener() {
|
||||
@Override
|
||||
@@ -372,8 +415,10 @@ public class TaxiPassengerModel {
|
||||
@Override
|
||||
public void onStatusChanged(StatusDescriptor descriptor, boolean isTrue) {
|
||||
if (StatusDescriptor.VR_MODE == descriptor) {
|
||||
if (mControllerStatusCallback != null) {
|
||||
mControllerStatusCallback.onVRModeChanged(isTrue);
|
||||
if (mControllerStatusCallbackMap.size() > 0) {
|
||||
for (IOCHTaxiPassengerControllerStatusCallback callback :mControllerStatusCallbackMap.values()){
|
||||
callback.onVRModeChanged(isTrue);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -419,8 +464,8 @@ public class TaxiPassengerModel {
|
||||
}
|
||||
mLongitude = location.getLongitude();
|
||||
mLatitude = location.getLatitude();
|
||||
if (mControllerStatusCallback != null) {
|
||||
mControllerStatusCallback.onCarLocationChanged(location);
|
||||
for (IOCHTaxiPassengerControllerStatusCallback callback :mControllerStatusCallbackMap.values()){
|
||||
callback.onCarLocationChanged(location);
|
||||
}
|
||||
}
|
||||
};
|
||||
@@ -529,6 +574,29 @@ public class TaxiPassengerModel {
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
public void naviOrderStartToEnd() {
|
||||
NaviLatLng startNaviLatLng = new NaviLatLng(mLongitude,mLatitude);
|
||||
NaviLatLng endNaviLatLng = new NaviLatLng(mCurrentOCHOrder.endSiteGcjPoint.get(1), mCurrentOCHOrder.endSiteGcjPoint.get(0));
|
||||
TaxiPassengerNaviToDestinationModel.getInstance(mContext).initAMapNavi(startNaviLatLng, endNaviLatLng);
|
||||
TaxiPassengerNaviToDestinationModel.getInstance(mContext).setOCHTaciNaviChangedCallback(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCurrentNaviDistAndTimeChanged(int meters, int timeInSecond) {
|
||||
for (IOCHTaxiPassengerOrderStatusCallback callback :mOrderStatusCallbackMap.values()){
|
||||
callback.onCurrentOrderDistToEndChanged(meters,timeInSecond);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void reInitNaviAmap(boolean isPlay, boolean isRestart) {
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* END
|
||||
*/
|
||||
|
||||
@@ -60,6 +60,7 @@ public class TaxiPassengerNaviToDestinationModel implements AMapNaviListener {
|
||||
mAMapNavi = AMapNavi.getInstance(mContext);
|
||||
mAMapNavi.addAMapNaviListener(this);
|
||||
mAMapNavi.setUseInnerVoice(true, true);
|
||||
mAMapNavi.stopSpeak();
|
||||
sList.add(startLatLng);
|
||||
eList.add(endLatLng);
|
||||
}catch (Exception e) {
|
||||
@@ -76,10 +77,6 @@ public class TaxiPassengerNaviToDestinationModel implements AMapNaviListener {
|
||||
}
|
||||
}
|
||||
|
||||
public AMapNavi getmAMapNavi() {
|
||||
return mAMapNavi;
|
||||
}
|
||||
|
||||
public void destroyAmaNavi(){
|
||||
if (mAMapNavi != null){
|
||||
isPlay = false;
|
||||
@@ -249,27 +246,6 @@ public class TaxiPassengerNaviToDestinationModel implements AMapNaviListener {
|
||||
@Override
|
||||
public void showLaneInfo(AMapLaneInfo aMapLaneInfo) {
|
||||
//显示车道信息
|
||||
// StringBuffer sb = new StringBuffer();
|
||||
// sb.append("共" + aMapLaneInfo.frontLane.length + "车道");
|
||||
// for (int i = 0; i < aMapLaneInfo.frontLane.length; i++) {
|
||||
// //当前车道可以选择的动作
|
||||
// int background = aMapLaneInfo.backgroundLane[i];
|
||||
// //当前用户要执行的动作
|
||||
// int recommend = aMapLaneInfo.frontLane[i];
|
||||
//
|
||||
// Log.e("ggb", "---->>> background is " + background + " ; recommend is " + recommend);
|
||||
// //根据文档中每个动作对应的枚举类型,显示对应的图片
|
||||
// try {
|
||||
// sb.append(",第" + (i + 1) + "车道为" + array[background]);
|
||||
// if (recommend != 255) {
|
||||
// sb.append(",当前车道可 " + actions[recommend]);
|
||||
// }
|
||||
//
|
||||
// } catch (Exception e) {
|
||||
// e.printStackTrace();
|
||||
// }
|
||||
// }
|
||||
// Log.e("showLaneInfo", sb.toString());
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -347,87 +323,4 @@ public class TaxiPassengerNaviToDestinationModel implements AMapNaviListener {
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 车道信息说明:
|
||||
* <p>
|
||||
* 0xFF, 无对应车道
|
||||
* 0, 直行
|
||||
* 1, 左转
|
||||
* 2, 直行+左转
|
||||
* 3, 右转
|
||||
* 4, 直行+右转
|
||||
* 5, 左掉头
|
||||
* 6, 左转+右转
|
||||
* 7, 直行+左转+右转
|
||||
* 8, 右掉头
|
||||
* 9, 直行+左掉头
|
||||
* 10, 直行+右掉头
|
||||
* 11, 左转+左掉头
|
||||
* 12, 右转+右掉头
|
||||
* 13, 直行+扩展
|
||||
* 14, 左转+左掉头+扩展
|
||||
* 15, 保留
|
||||
* 16, 直行+左转+左掉头
|
||||
* 17, 右转+左掉头
|
||||
* 18, 左转+右转+左掉头
|
||||
* 19, 直行+右转+左掉头
|
||||
* 20, 左转+右掉头
|
||||
* 21, 公交车道
|
||||
* 22, 空车道
|
||||
* 23 可变车道
|
||||
*/
|
||||
|
||||
String[] array = {
|
||||
"直行车道"
|
||||
, "左转车道"
|
||||
, "左转或直行车道"
|
||||
, "右转车道"
|
||||
, "右转或直行车道"
|
||||
, "左掉头车道"
|
||||
, "左转或者右转车道"
|
||||
, " 左转或右转或直行车道"
|
||||
, "右转掉头车道"
|
||||
, "直行或左转掉头车道"
|
||||
, "直行或右转掉头车道"
|
||||
, "左转或左掉头车道"
|
||||
, "右转或右掉头车道"
|
||||
, "直行并且车道扩展"
|
||||
, "左转+左掉头+扩展"
|
||||
, "不可以选择该车道"
|
||||
, "直行+左转+左掉头车道"
|
||||
, "右转+左掉头"
|
||||
, "左转+右转+左掉头"
|
||||
, "直行+右转+左掉头"
|
||||
, "左转+右掉头"
|
||||
, "公交车道"
|
||||
, "空车道"
|
||||
, "可变车道"
|
||||
};
|
||||
|
||||
String[] actions = {
|
||||
"直行"
|
||||
, "左转"
|
||||
, "左转或直行"
|
||||
, "右转"
|
||||
, "右转或这行"
|
||||
, "左掉头"
|
||||
, "左转或者右转"
|
||||
, " 左转或右转或直行"
|
||||
, "右转掉头"
|
||||
, "直行或左转掉头"
|
||||
, "直行或右转掉头"
|
||||
, "左转或左掉头"
|
||||
, "右转或右掉头"
|
||||
, "直行并且车道扩展"
|
||||
, "左转+左掉头+扩展"
|
||||
, "不可以选择"
|
||||
, "直行+左转+左掉头"
|
||||
, "右转+左掉头"
|
||||
, "左转+右转+左掉头"
|
||||
, "直行+右转+左掉头"
|
||||
, "左转+右掉头"
|
||||
, "公交车道"
|
||||
, "空车道"
|
||||
, "可变车道"
|
||||
};
|
||||
}
|
||||
|
||||
@@ -22,12 +22,13 @@ interface TaxiPassengerServiceApi {
|
||||
|
||||
/**
|
||||
* 查询全部服务中/待服务订单(没有的时候返回code 0,空列表)
|
||||
* @param sn
|
||||
* @param driverSn
|
||||
* @return
|
||||
*/
|
||||
@Headers( {"Content-type:application/json;charset=UTF-8"} )
|
||||
@GET("/autopilot-car-hailing/order/v2/driver/taxi/orderInService/query")
|
||||
Observable<TaxiPassengerOrdersInServiceQueryRespBean> queryOrdersInAndWaitService(@Header("appId") String appId, @Header("ticket") String ticket, @Query("sn") String sn);
|
||||
@GET("/autopilot-car-hailing/order/v2/driver/taxi/passenger/orderInService/query")
|
||||
|
||||
Observable<TaxiPassengerOrdersInServiceQueryRespBean> queryOrdersInAndWaitService(@Header("appId") String appId, @Header("ticket") String ticket, @Query("driverSn") String driverSn);
|
||||
|
||||
|
||||
/**
|
||||
@@ -37,7 +38,7 @@ interface TaxiPassengerServiceApi {
|
||||
* @deprecated v2.1_0930需求中暂不再使用此接口
|
||||
*/
|
||||
@Headers( {"Content-type:application/json;charset=UTF-8"} )
|
||||
@POST( "/autopilot-car-hailing/order/v2/driver/taxi/queryOrderById" )
|
||||
@POST( "/autopilot-car-hailing/order/v2/driver/taxi/passenger/queryOrderById" )
|
||||
Observable<TaxiPassengerOrderQueryRespBean> queryOrderById(@Header ("appId") String appId,@Header("ticket") String ticket,@Body TaxiPassengerOrderQueryReqBean data);
|
||||
|
||||
/**
|
||||
|
||||
@@ -48,7 +48,7 @@ public class TaxiPassengerServiceManager {
|
||||
*/
|
||||
private String getDriverAppSn(){
|
||||
// return CallerTelematicManager.INSTANCE.getServerToken();
|
||||
return "X2020211215MEGXQZJ";
|
||||
return "X2020211111NG0XNFK";
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -30,6 +30,8 @@ public class BaseTaxiPassengerPresenter extends Presenter<TaxiPassengerBaseFragm
|
||||
|
||||
private static final String TAG = BaseTaxiPassengerPresenter.class.getSimpleName();
|
||||
|
||||
private volatile TaxiPassengerOrderQueryRespBean.Result mCurrentPassengerOrder = null; //当前订单
|
||||
|
||||
public BaseTaxiPassengerPresenter(TaxiPassengerBaseFragment view) {
|
||||
super(view);
|
||||
TaxiPassengerModel.getInstance().init(AbsMogoApplication.getApp());
|
||||
@@ -52,14 +54,14 @@ public class BaseTaxiPassengerPresenter extends Presenter<TaxiPassengerBaseFragm
|
||||
|
||||
private void initListeners() {
|
||||
TaxiPassengerModel.getInstance().setADASStatusCallback(this);
|
||||
TaxiPassengerModel.getInstance().setOrderStatusCallback(this);
|
||||
TaxiPassengerModel.getInstance().setControllerStatusCallback(this);
|
||||
TaxiPassengerModel.getInstance().setOrderStatusCallback("BaseTaxiPassengerPresenter",this);
|
||||
TaxiPassengerModel.getInstance().setControllerStatusCallback("BaseTaxiPassengerPresenter",this);
|
||||
}
|
||||
|
||||
private void releaseListeners() {
|
||||
TaxiPassengerModel.getInstance().setADASStatusCallback(null);
|
||||
TaxiPassengerModel.getInstance().setOrderStatusCallback(null);
|
||||
TaxiPassengerModel.getInstance().setControllerStatusCallback(null);
|
||||
TaxiPassengerModel.getInstance().setOrderStatusCallback("BaseTaxiPassengerPresenter",null);
|
||||
TaxiPassengerModel.getInstance().setControllerStatusCallback("BaseTaxiPassengerPresenter",null);
|
||||
}
|
||||
|
||||
private void runOnUIThread( Runnable executor ) {
|
||||
@@ -109,26 +111,33 @@ public class BaseTaxiPassengerPresenter extends Presenter<TaxiPassengerBaseFragm
|
||||
|
||||
@Override
|
||||
public void onCarLocationChanged(Location location) {
|
||||
if (null != location){
|
||||
runOnUIThread(() -> mView.updateSpeedView(location.getSpeed()));
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCurrentOrderStatusChanged(TaxiPassengerOrderQueryRespBean.Result order) {
|
||||
Log.d(TAG,"order = "+order.toString());
|
||||
if (TaxiPassengerOrderStatusEnum.ArriveAtStartStation.getCode() == order.orderStatus){
|
||||
if (mCurrentPassengerOrder == null){
|
||||
mCurrentPassengerOrder = order; //当前无订单
|
||||
updateOrderView(mCurrentPassengerOrder);
|
||||
}else if (mCurrentPassengerOrder.orderStatus != order.orderStatus) {
|
||||
updateOrderView(order);
|
||||
}
|
||||
}
|
||||
|
||||
private void updateOrderView(TaxiPassengerOrderQueryRespBean.Result order) {
|
||||
if (TaxiPassengerOrderStatusEnum.ArriveAtStartStation.getCode() == order.orderStatus
|
||||
|| TaxiPassengerOrderStatusEnum.OnTheWayToEndStation.getCode() == order.orderStatus){
|
||||
mView.showOrHideServingOrderFragment(true);
|
||||
return;
|
||||
}
|
||||
if (TaxiPassengerOrderStatusEnum.OnTheWayToEndStation.getCode() == order.orderStatus){
|
||||
if (TaxiPassengerOrderStatusEnum.ArriveAtEndStation.getCode() == order.orderStatus){
|
||||
mView.showOrHideServingOrderFragment(false);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCurrentOrderDistToEndChanged(long meters, long timeInSecond) {
|
||||
public void onCurrentOrderDistToEndChanged(int meters, int timeInSecond) {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,109 @@
|
||||
package com.mogo.och.taxi.passenger.presenter;
|
||||
|
||||
import android.location.Location;
|
||||
import android.os.Build;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.RequiresApi;
|
||||
import androidx.lifecycle.LifecycleOwner;
|
||||
|
||||
import com.mogo.commons.mvp.Presenter;
|
||||
import com.mogo.eagle.core.data.autopilot.AutopilotRouteInfo;
|
||||
import com.mogo.eagle.core.data.map.MogoLatLng;
|
||||
import com.mogo.och.taxi.passenger.bean.TaxiPassengerOrderQueryRespBean;
|
||||
import com.mogo.och.taxi.passenger.callback.IOCHTaxiPassengerAutopilotPlanningCallback;
|
||||
import com.mogo.och.taxi.passenger.callback.IOCHTaxiPassengerControllerStatusCallback;
|
||||
import com.mogo.och.taxi.passenger.callback.IOCHTaxiPassengerOrderStatusCallback;
|
||||
import com.mogo.och.taxi.passenger.callback.ITaxiPassengerVeloctityCallback;
|
||||
import com.mogo.och.taxi.passenger.model.TaxiPassengerModel;
|
||||
import com.mogo.och.taxi.passenger.ui.TaxiPassengerServingOrderFragment;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author: wangmingjun
|
||||
* @date: 2022/3/14
|
||||
*/
|
||||
public class TaxiPassengerServingOrderPresenter extends Presenter<TaxiPassengerServingOrderFragment>
|
||||
implements IOCHTaxiPassengerAutopilotPlanningCallback, IOCHTaxiPassengerOrderStatusCallback
|
||||
, IOCHTaxiPassengerControllerStatusCallback, ITaxiPassengerVeloctityCallback {
|
||||
|
||||
private static final String TAG = TaxiPassengerServingOrderPresenter.class.getSimpleName();
|
||||
|
||||
private volatile TaxiPassengerOrderQueryRespBean.Result mCurrentPassengerOrder = null; //当前订单
|
||||
|
||||
public TaxiPassengerServingOrderPresenter(TaxiPassengerServingOrderFragment view) {
|
||||
super(view);
|
||||
initListener();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onResume(@NonNull LifecycleOwner owner) {
|
||||
super.onResume(owner);
|
||||
}
|
||||
|
||||
private void initListener() {
|
||||
TaxiPassengerModel.getInstance().setMoGoAutopilotPlanningListener(this);
|
||||
TaxiPassengerModel.getInstance().setOrderStatusCallback("TaxiPassengerServingOrderPresenter",this);
|
||||
TaxiPassengerModel.getInstance().setControllerStatusCallback("TaxiPassengerServingOrderPresenter",this);
|
||||
TaxiPassengerModel.getInstance().setVeloctityCallback(this);
|
||||
}
|
||||
|
||||
public void releaseListener(){
|
||||
TaxiPassengerModel.getInstance().setMoGoAutopilotPlanningListener(null);
|
||||
TaxiPassengerModel.getInstance().setOrderStatusCallback("TaxiPassengerServingOrderPresenter",null);
|
||||
TaxiPassengerModel.getInstance().setControllerStatusCallback("TaxiPassengerServingOrderPresenter",null);
|
||||
TaxiPassengerModel.getInstance().setVeloctityCallback(null);
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void routeResult(List<AutopilotRouteInfo.RouteModels> models) {
|
||||
if (models == null) return;
|
||||
List<MogoLatLng> latLngList = new ArrayList<>();
|
||||
for (AutopilotRouteInfo.RouteModels routeModel : models) {
|
||||
latLngList.add(new MogoLatLng(routeModel.getLat(), routeModel.getLon()));
|
||||
}
|
||||
mView.routeResult(latLngList);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCurrentOrderStatusChanged(TaxiPassengerOrderQueryRespBean.Result order) {
|
||||
if (mCurrentPassengerOrder == null){
|
||||
mCurrentPassengerOrder = order; //当前无订单
|
||||
mView.updateOrderStatusView(order);
|
||||
}else if (mCurrentPassengerOrder.orderStatus != order.orderStatus) {
|
||||
mView.updateOrderStatusView(order);
|
||||
}
|
||||
}
|
||||
|
||||
@RequiresApi(api = Build.VERSION_CODES.N)
|
||||
@Override
|
||||
public void onCurrentOrderDistToEndChanged(int meters, int timeInSecond) {
|
||||
mView.onCurrentOrderDistToEndChanged(meters,timeInSecond);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onVRModeChanged(boolean isVRMode) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCarLocationChanged(Location location) {
|
||||
if (location != null){
|
||||
mView.onCarLocationChanged(location);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onLimitingVelocityChange(int limitingVelocity) {
|
||||
mView.onLimitingVelocityChange(limitingVelocity);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDestroy(@NonNull LifecycleOwner owner) {
|
||||
super.onDestroy(owner);
|
||||
releaseListener();
|
||||
}
|
||||
}
|
||||
@@ -31,9 +31,10 @@ import com.mogo.och.taxi.passenger.presenter.BaseTaxiPassengerPresenter;
|
||||
*
|
||||
* @author tongchenfei
|
||||
*/
|
||||
public class TaxiPassengerBaseFragment extends MvpFragment<TaxiPassengerBaseFragment, BaseTaxiPassengerPresenter> implements IMogoMapListener, TaxiPassengerTaxiView {
|
||||
public class TaxiPassengerBaseFragment extends MvpFragment<TaxiPassengerBaseFragment, BaseTaxiPassengerPresenter>
|
||||
implements IMogoMapListener, TaxiPassengerTaxiView {
|
||||
|
||||
static final String TAG = "BaseOchFragment";
|
||||
static final String TAG = "TaxiPassengerBaseFragment";
|
||||
|
||||
private FrameLayout flNaviPanelContainer;
|
||||
private ImageView mAutopilotImage;
|
||||
@@ -41,7 +42,7 @@ public class TaxiPassengerBaseFragment extends MvpFragment<TaxiPassengerBaseFrag
|
||||
private TextView mLightCountdown;
|
||||
private ImageView mLightIcon;
|
||||
|
||||
protected ITaxiPassengerServingOrderFragment ochServingOrderFragment = null;
|
||||
protected TaxiPassengerServingOrderFragment ochServingOrderFragment = null;
|
||||
|
||||
private Handler mHandler = new Handler(Looper.getMainLooper());
|
||||
|
||||
@@ -102,10 +103,6 @@ public class TaxiPassengerBaseFragment extends MvpFragment<TaxiPassengerBaseFrag
|
||||
private void hideEagleConfig() {
|
||||
//隐藏小地图
|
||||
CallerSmpManager.hidePanel();
|
||||
//是否显示 限速UI
|
||||
HmiBuildConfig.INSTANCE.isShowLimitingVelocityView = false;
|
||||
//是否显示 红绿等
|
||||
HmiBuildConfig.INSTANCE.isShowTrafficLightView = false;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -192,15 +189,6 @@ public class TaxiPassengerBaseFragment extends MvpFragment<TaxiPassengerBaseFrag
|
||||
super.onDestroyView();
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新时速
|
||||
* @param newSpeed
|
||||
*/
|
||||
public void updateSpeedView(float newSpeed){
|
||||
int speed = (int) (Math.abs(newSpeed) * 3.6F); // 倒车时工控机反馈定位信息中speed为负值
|
||||
// mSpeedView.setText(String.valueOf(speed));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onMapVisualAngleChanged(VisualAngleMode visualAngleMode) {
|
||||
//todo ui 切换
|
||||
@@ -216,7 +204,7 @@ public class TaxiPassengerBaseFragment extends MvpFragment<TaxiPassengerBaseFrag
|
||||
|
||||
if (isShow){
|
||||
if(ochServingOrderFragment == null){
|
||||
ochServingOrderFragment = new ITaxiPassengerServingOrderFragment().newInstance();
|
||||
ochServingOrderFragment = new TaxiPassengerServingOrderFragment().newInstance();
|
||||
}
|
||||
if (ochServingOrderFragment.isAdded()){
|
||||
transaction.show(ochServingOrderFragment);
|
||||
|
||||
@@ -13,11 +13,14 @@ import android.widget.ImageView;
|
||||
import android.widget.SeekBar;
|
||||
import android.widget.TextView;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.RequiresApi;
|
||||
|
||||
import com.mogo.commons.mvp.BaseFragment;
|
||||
import com.mogo.commons.mvp.MvpFragment;
|
||||
import com.mogo.eagle.core.data.autopilot.AutopilotRouteInfo;
|
||||
import com.mogo.eagle.core.data.map.MogoLatLng;
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.Logger;
|
||||
import com.mogo.eagle.core.utilcode.util.UiThreadHandler;
|
||||
import com.mogo.och.taxi.passenger.R;
|
||||
import com.mogo.och.taxi.passenger.bean.TaxiPassengerOrderQueryRespBean;
|
||||
@@ -28,6 +31,8 @@ import com.mogo.och.taxi.passenger.callback.ITaxiPassengerMapViewCallback;
|
||||
import com.mogo.och.taxi.passenger.callback.ITaxiPassengerVeloctityCallback;
|
||||
import com.mogo.och.taxi.passenger.constant.TaxiPassengerOrderStatusEnum;
|
||||
import com.mogo.och.taxi.passenger.model.TaxiPassengerModel;
|
||||
import com.mogo.och.taxi.passenger.model.TaxiPassengerNaviToDestinationModel;
|
||||
import com.mogo.och.taxi.passenger.presenter.TaxiPassengerServingOrderPresenter;
|
||||
import com.mogo.och.taxi.passenger.utils.TaxiPassengerUtils;
|
||||
|
||||
import java.text.DecimalFormat;
|
||||
@@ -39,9 +44,11 @@ import java.util.List;
|
||||
* @author: wangmingjun
|
||||
* @date: 2022/3/8
|
||||
*/
|
||||
public class ITaxiPassengerServingOrderFragment extends BaseFragment implements IOCHTaxiPassengerAutopilotPlanningCallback, IOCHTaxiPassengerOrderStatusCallback, IOCHTaxiPassengerControllerStatusCallback, ITaxiPassengerMapViewCallback, ITaxiPassengerVeloctityCallback {
|
||||
public class TaxiPassengerServingOrderFragment extends
|
||||
MvpFragment<TaxiPassengerServingOrderFragment, TaxiPassengerServingOrderPresenter>
|
||||
implements TaxiPassengerTaxiView, ITaxiPassengerMapViewCallback {
|
||||
|
||||
private final String TAG = ITaxiPassengerServingOrderFragment.class.getSimpleName();
|
||||
private final String TAG = TaxiPassengerServingOrderFragment.class.getSimpleName();
|
||||
|
||||
private TextView mTPSpeedTv;
|
||||
|
||||
@@ -61,11 +68,11 @@ public class ITaxiPassengerServingOrderFragment extends BaseFragment implements
|
||||
|
||||
private int mLimitingVelocity;// 返回的道路限速值
|
||||
|
||||
public static ITaxiPassengerServingOrderFragment newInstance() {
|
||||
public static TaxiPassengerServingOrderFragment newInstance() {
|
||||
|
||||
Bundle args = new Bundle();
|
||||
|
||||
ITaxiPassengerServingOrderFragment fragment = new ITaxiPassengerServingOrderFragment();
|
||||
TaxiPassengerServingOrderFragment fragment = new TaxiPassengerServingOrderFragment();
|
||||
fragment.setArguments(args);
|
||||
return fragment;
|
||||
}
|
||||
@@ -111,7 +118,7 @@ public class ITaxiPassengerServingOrderFragment extends BaseFragment implements
|
||||
}
|
||||
list.add(routeModels);
|
||||
}
|
||||
routeResult(list);
|
||||
mPresenter.routeResult(list);
|
||||
return true;
|
||||
}
|
||||
});
|
||||
@@ -124,16 +131,21 @@ public class ITaxiPassengerServingOrderFragment extends BaseFragment implements
|
||||
mMapDirectionView = findViewById(R.id.taxi_p_order_map_view);
|
||||
mMapDirectionView.onCreateView(savedInstanceState);
|
||||
mMapDirectionView.setTaxiPassengerMapViewCallback(this);
|
||||
}
|
||||
|
||||
initListener();
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
protected TaxiPassengerServingOrderPresenter createPresenter() {
|
||||
return new TaxiPassengerServingOrderPresenter(this);
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置进度条最大值为 起点终点首次规划出的值
|
||||
* @param maxInt
|
||||
*/
|
||||
private void setSeekBarMax(int maxInt){
|
||||
private void setSeekBarMax(){
|
||||
//计算订单起点和终点距离
|
||||
int maxInt = TaxiPassengerModel.getInstance().calculateOrderDistanceSum();
|
||||
Logger.d(TAG,"maxInt = "+maxInt);
|
||||
mProgressSeekBar.setMax(maxInt);
|
||||
}
|
||||
|
||||
@@ -142,39 +154,11 @@ public class ITaxiPassengerServingOrderFragment extends BaseFragment implements
|
||||
*/
|
||||
@RequiresApi(api = Build.VERSION_CODES.N)
|
||||
private void updateDriveProcessLoading(int progressLoading){
|
||||
mProgressSeekBar.setProgress(progressLoading, true);
|
||||
// mProgressSeekBar.setMax(55);
|
||||
// mProgressSeekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
|
||||
// @Override
|
||||
// public void onProgressChanged(SeekBar bar, int i, boolean b) {
|
||||
//
|
||||
// }
|
||||
//
|
||||
// @Override
|
||||
// public void onStartTrackingTouch(SeekBar bar) {
|
||||
//
|
||||
// }
|
||||
//
|
||||
// @Override
|
||||
// public void onStopTrackingTouch(SeekBar bar) {
|
||||
//
|
||||
// }
|
||||
// });
|
||||
mProgressSeekBar.setProgress(
|
||||
TaxiPassengerModel.getInstance().calculateOrderDistanceSum() - progressLoading
|
||||
, true);
|
||||
}
|
||||
|
||||
private void initListener() {
|
||||
TaxiPassengerModel.getInstance().setMoGoAutopilotPlanningListener(this);
|
||||
TaxiPassengerModel.getInstance().setOrderStatusCallback(this);
|
||||
TaxiPassengerModel.getInstance().setControllerStatusCallback(this);
|
||||
TaxiPassengerModel.getInstance().setVeloctityCallback(this);
|
||||
}
|
||||
|
||||
public void releaseListener(){
|
||||
TaxiPassengerModel.getInstance().setMoGoAutopilotPlanningListener(null);
|
||||
TaxiPassengerModel.getInstance().setOrderStatusCallback(null);
|
||||
TaxiPassengerModel.getInstance().setControllerStatusCallback(null);
|
||||
TaxiPassengerModel.getInstance().setVeloctityCallback(null);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onResume() {
|
||||
@@ -182,6 +166,7 @@ public class ITaxiPassengerServingOrderFragment extends BaseFragment implements
|
||||
if (mMapDirectionView != null) {
|
||||
mMapDirectionView.onResume();
|
||||
}
|
||||
TaxiPassengerModel.getInstance().naviOrderStartToEnd();
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -199,17 +184,10 @@ public class ITaxiPassengerServingOrderFragment extends BaseFragment implements
|
||||
if (mMapDirectionView != null) {
|
||||
mMapDirectionView.onDestroy();
|
||||
}
|
||||
releaseListener();
|
||||
TaxiPassengerNaviToDestinationModel.getInstance(getContext()).destroyAmaNavi();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void routeResult(List<AutopilotRouteInfo.RouteModels> models) {
|
||||
if (models == null) return;
|
||||
|
||||
List<MogoLatLng> latLngList = new ArrayList<>();
|
||||
for (AutopilotRouteInfo.RouteModels routeModel : models) {
|
||||
latLngList.add(new MogoLatLng(routeModel.getLat(), routeModel.getLon()));
|
||||
}
|
||||
public void routeResult(List<MogoLatLng> latLngList) {
|
||||
Log.d(TAG, "routeResult:" + latLngList.size());
|
||||
if (latLngList.size() > 0) {
|
||||
drawablePolyline(latLngList);
|
||||
@@ -245,17 +223,13 @@ public class ITaxiPassengerServingOrderFragment extends BaseFragment implements
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCurrentOrderStatusChanged(TaxiPassengerOrderQueryRespBean.Result order) {
|
||||
updateOrderStatusView(order);
|
||||
}
|
||||
|
||||
private void updateOrderStatusView(TaxiPassengerOrderQueryRespBean.Result order) {
|
||||
public void updateOrderStatusView(TaxiPassengerOrderQueryRespBean.Result order) {
|
||||
mTPOrderStartStation.setText(order.startSiteAddr);
|
||||
mTPOrderEndStation.setText(order.endSiteAddr);
|
||||
|
||||
if (TaxiPassengerOrderStatusEnum.ArriveAtStartStation.getCode() == order.orderStatus){
|
||||
mTPOrderStatus.setText(getString(R.string.taxi_p_arrive_to_start));
|
||||
setSeekBarMax();
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -265,14 +239,15 @@ public class ITaxiPassengerServingOrderFragment extends BaseFragment implements
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCurrentOrderDistToEndChanged(long meters, long timeInSecond) {
|
||||
@RequiresApi(api = Build.VERSION_CODES.N)
|
||||
public void onCurrentOrderDistToEndChanged(int meters, int timeInSecond) {
|
||||
Calendar calendarArrive = TaxiPassengerUtils.formatLongToCalendar(System.currentTimeMillis() + timeInSecond);
|
||||
String arriveTime = TaxiPassengerUtils.formatCalendarToString(calendarArrive, TaxiPassengerUtils.TAXI_HH_mm);
|
||||
DecimalFormat fnum = new DecimalFormat("##0.00");
|
||||
String remainDis = fnum.format((float) meters / 1000);
|
||||
int remainTime = (int) timeInSecond / 60;
|
||||
updateOrderDisAndTimeView(remainDis,remainTime,arriveTime);
|
||||
updateDriveProcessLoading(meters);
|
||||
}
|
||||
|
||||
private void updateOrderDisAndTimeView(String remainDis, int remainTime, String arriveTime) {
|
||||
@@ -281,19 +256,10 @@ public class ITaxiPassengerServingOrderFragment extends BaseFragment implements
|
||||
mTPOrderRemainArriveTime.setText(arriveTime);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onVRModeChanged(boolean isVRMode) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCarLocationChanged(Location location) {
|
||||
if (null != location){
|
||||
runOnUIThread(() -> updateSpeedView(location.getSpeed()));
|
||||
}
|
||||
runOnUIThread(() -> updateSpeedView(location.getSpeed()));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onLimitingVelocityChange(int limitingVelocity) {
|
||||
mLimitingVelocity = limitingVelocity;
|
||||
}
|
||||
@@ -323,7 +289,7 @@ public class ITaxiPassengerServingOrderFragment extends BaseFragment implements
|
||||
, 0xFFCEEEFF ,0xFFA1DAFF);
|
||||
}else {//超速
|
||||
return TaxiPassengerUtils.getGradientFontSpan(content
|
||||
,0xFFCEEEFF ,0xFFA1DAFF);//todo 换成报警颜色
|
||||
,0xFFFE2505 ,0xFFFF6F62);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -350,7 +316,8 @@ public class ITaxiPassengerServingOrderFragment extends BaseFragment implements
|
||||
private void startIvCompass(float bearing) {
|
||||
bearing = 360 - bearing;
|
||||
Log.d(TAG, "startIvCompass: " + bearing);
|
||||
rotateAnimation = new RotateAnimation(lastBearing, bearing, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);
|
||||
rotateAnimation = new RotateAnimation(lastBearing, bearing, Animation.RELATIVE_TO_SELF
|
||||
, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);
|
||||
rotateAnimation.setFillAfter(true);
|
||||
|
||||
mMapArrowIcon.startAnimation(rotateAnimation);
|
||||
@@ -12,8 +12,8 @@ public class OrderRouteUpdateReqBean {
|
||||
public List<Result> points;
|
||||
|
||||
public static class Result {
|
||||
public Double lat;
|
||||
public Double lon;
|
||||
public Double latitude;
|
||||
public Double longitude;
|
||||
}
|
||||
|
||||
public OrderRouteUpdateReqBean(String orderNo, List<Result> points) {
|
||||
|
||||
@@ -1060,8 +1060,8 @@ public class MogoOCHTaxiModelNew {
|
||||
|
||||
for (int i =0; i < models.size(); i++){
|
||||
OrderRouteUpdateReqBean.Result point = new OrderRouteUpdateReqBean.Result();
|
||||
point.lat = models.get(i).getLat();
|
||||
point.lon = models.get(i).getLon();
|
||||
point.latitude = models.get(i).getLat();
|
||||
point.longitude = models.get(i).getLon();
|
||||
points.add(point);
|
||||
}
|
||||
|
||||
|
||||
@@ -107,6 +107,12 @@ public class MogoApplication extends MainMoGoApplication {
|
||||
HmiBuildConfig.isShowTurnLightView = false;
|
||||
}
|
||||
|
||||
if (DebugConfig.getProductFlavor().equals("fPadLenovoOchTaxiPassenger")){
|
||||
//是否显示 限速UI
|
||||
HmiBuildConfig.isShowLimitingVelocityView = false;
|
||||
//是否显示 红绿等
|
||||
HmiBuildConfig.isShowTrafficLightView = false;
|
||||
}
|
||||
//och模块
|
||||
MogoModulePaths.addModuleFunction(new MogoModule("/och/api", "IMoGoFunctionProvider"));
|
||||
|
||||
|
||||
Reference in New Issue
Block a user