[Taxi Passenger v1.1.0] taxi-p 代码调整

This commit is contained in:
wangmingjun
2022-03-14 21:18:03 +08:00
parent 747d5388f9
commit 733b7ad481
13 changed files with 279 additions and 238 deletions

View File

@@ -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;
}
}

View File

@@ -17,6 +17,6 @@ public interface IOCHTaxiPassengerOrderStatusCallback {
void onCurrentOrderStatusChanged(TaxiPassengerOrderQueryRespBean.Result order);
// 当前位置距离上车点的距离(米)、预估时间(秒)
void onCurrentOrderDistToEndChanged(long meters, long timeInSecond);
void onCurrentOrderDistToEndChanged(int meters, int timeInSecond);
}

View File

@@ -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->PresenterVR 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
*/

View File

@@ -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 = {
"直行"
, "左转"
, "左转或直行"
, "右转"
, "右转或这行"
, "左掉头"
, "左转或者右转"
, " 左转或右转或直行"
, "右转掉头"
, "直行或左转掉头"
, "直行或右转掉头"
, "左转或左掉头"
, "右转或右掉头"
, "直行并且车道扩展"
, "左转+左掉头+扩展"
, "不可以选择"
, "直行+左转+左掉头"
, "右转+左掉头"
, "左转+右转+左掉头"
, "直行+右转+左掉头"
, "左转+右掉头"
, "公交车道"
, "空车道"
, "可变车道"
};
}

View File

@@ -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);
/**

View File

@@ -48,7 +48,7 @@ public class TaxiPassengerServiceManager {
*/
private String getDriverAppSn(){
// return CallerTelematicManager.INSTANCE.getServerToken();
return "X2020211215MEGXQZJ";
return "X2020211111NG0XNFK";
}
/**

View File

@@ -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) {
}
}

View File

@@ -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();
}
}

View File

@@ -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);

View File

@@ -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);

View File

@@ -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) {

View File

@@ -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);
}

View File

@@ -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"));