diff --git a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/callback/IOCHTaxiPassengerNaviChangedCallback.java b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/callback/IOCHTaxiPassengerNaviChangedCallback.java index 5a47cf6b19..fdd93e1015 100644 --- a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/callback/IOCHTaxiPassengerNaviChangedCallback.java +++ b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/callback/IOCHTaxiPassengerNaviChangedCallback.java @@ -5,7 +5,7 @@ package com.mogo.och.taxi.passenger.callback; * @date: 2021/12/3 */ public interface IOCHTaxiPassengerNaviChangedCallback { - // 当前位置距离上车点的距离(米)、预估时间(秒) - void onCurrentNaviDistAndTimeChanged(int meters, int timeInSecond); + // 当前位置距离上车点的距离(米)、预估时间(秒) 、当前路的名称 + void onCurrentNaviDistAndTimeChanged(int meters, int timeInSecond, String currentRoadName); void reInitNaviAmap(boolean isPlay,boolean isRestart); } diff --git a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/callback/IOCHTaxiPassengerOrderStatusCallback.java b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/callback/IOCHTaxiPassengerOrderStatusCallback.java index 49437c86de..be5cf3c550 100644 --- a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/callback/IOCHTaxiPassengerOrderStatusCallback.java +++ b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/callback/IOCHTaxiPassengerOrderStatusCallback.java @@ -17,6 +17,6 @@ public interface IOCHTaxiPassengerOrderStatusCallback { void onCurrentOrderStatusChanged(TaxiPassengerOrderQueryRespBean.Result order); // 当前位置距离上车点的距离(米)、预估时间(秒) - void onCurrentOrderDistToEndChanged(int meters, int timeInSecond); + void onCurrentOrderDistToEndChanged(int meters, int timeInSecond, String currentRoadName); } diff --git a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/constant/TaxiPassengerConst.kt b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/constant/TaxiPassengerConst.kt index c2b9f431a0..1b3594e480 100644 --- a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/constant/TaxiPassengerConst.kt +++ b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/constant/TaxiPassengerConst.kt @@ -37,5 +37,8 @@ class TaxiPassengerConst { // 订单信息 const val SP_KEY_OCH_TAXI_ORDER = "SP_KEY_OCH_TAXI_ORDER" + + // 订单总里程 + const val SP_KEY_ORDER_SUM_DIS = "SP_KEY_ORDER_SUM_DIS" } } \ No newline at end of file diff --git a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/model/TaxiPassengerModel.java b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/model/TaxiPassengerModel.java index 0b66e8f22c..d37f438fe5 100644 --- a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/model/TaxiPassengerModel.java +++ b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/model/TaxiPassengerModel.java @@ -4,7 +4,7 @@ import android.content.Context; import android.content.Intent; import android.location.Location; import android.net.ConnectivityManager; -import android.text.TextUtils; +import android.os.Looper; import androidx.annotation.Nullable; @@ -12,10 +12,8 @@ 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; +import com.mogo.commons.voice.AIAssist; import com.mogo.eagle.core.data.autopilot.ADASTrajectoryInfo; -import com.mogo.eagle.core.data.autopilot.AutopilotGuardianStatusInfo; -import com.mogo.eagle.core.data.autopilot.AutopilotRouteInfo; -import com.mogo.eagle.core.data.autopilot.AutopilotStationInfo; import com.mogo.eagle.core.data.autopilot.AutopilotStatusInfo; import com.mogo.eagle.core.data.config.FunctionBuildConfig; import com.mogo.eagle.core.data.map.MogoLocation; @@ -29,8 +27,10 @@ import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils; import com.mogo.eagle.core.utilcode.mogo.logger.Logger; import com.mogo.eagle.core.utilcode.mogo.storage.SharedPrefsMgr; import com.mogo.eagle.core.utilcode.util.NetworkUtils; +import com.mogo.eagle.core.utilcode.util.UiThreadHandler; import com.mogo.map.navi.IMogoCarLocationChangedListener2; import com.mogo.module.common.MogoApisHandler; +import com.mogo.och.taxi.passenger.R; import com.mogo.och.taxi.passenger.bean.TaxiPassengerOrderQueryRespBean; import com.mogo.och.taxi.passenger.bean.TaxiPassengerOrdersInServiceQueryRespBean; import com.mogo.och.taxi.passenger.callback.IOCHTaxiPassengerADASStatusCallback; @@ -43,6 +43,7 @@ import com.mogo.och.taxi.passenger.constant.TaxiPassengerConst; import com.mogo.och.taxi.passenger.constant.TaxiPassengerOrderStatusEnum; import com.mogo.och.taxi.passenger.network.TaxiPassengerServiceCallback; import com.mogo.och.taxi.passenger.network.TaxiPassengerServiceManager; +import com.mogo.och.taxi.passenger.utils.TaxiPassengerUtils; import com.mogo.service.IMogoServiceApis; import com.mogo.service.cloud.socket.IMogoLifecycleListener; import com.mogo.service.intent.IMogoIntentListener; @@ -51,7 +52,9 @@ import com.mogo.service.statusmanager.StatusDescriptor; import org.jetbrains.annotations.NotNull; +import java.text.DecimalFormat; import java.util.ArrayList; +import java.util.Calendar; import java.util.Collections; import java.util.List; import java.util.Map; @@ -83,6 +86,12 @@ public class TaxiPassengerModel implements IOCHTaxiPassengerNaviChangedCallback private volatile List mInServiceList = Collections.emptyList(); //进行中订单 private volatile List mWaitServiceList = Collections.emptyList(); //待服务订单 + public void setmTtsLessThan200Tip(int ttsLessThan200Tip) { + this.mTtsLessThan200Tip = ttsLessThan200Tip; + } + + private volatile int mTtsLessThan200Tip = 0;//离终点200米提示播报 + private IOCHTaxiPassengerADASStatusCallback mADASStatusCallback; //Model->Presenter:自动驾驶状态相关 private IOCHTaxiPassengerAutopilotPlanningCallback mAutopilotPlanningCallback; //Model->Presenter:自动驾驶线路规划 @@ -312,22 +321,6 @@ public class TaxiPassengerModel implements IOCHTaxiPassengerNaviChangedCallback }); } - // 车机端上传心跳数据(只在出车状态时上传) -// public void runCarHeartbeat() { -// TaxiPassengerServiceManager.getInstance().runCarHeartbeat(mContext, mLongitude, mLatitude, -// new TaxiPassengerServiceCallback() { -// @Override -// public void onSuccess(BaseData data) { -// -// } -// -// @Override -// public void onFail(int code, String msg) { -// -// } -// }); -// } - // 获取当前订单 public TaxiPassengerOrderQueryRespBean.Result getCurrentOCHOrder() { return mCurrentOCHOrder; @@ -580,25 +573,51 @@ public class TaxiPassengerModel implements IOCHTaxiPassengerNaviChangedCallback }; /** - * + * 导航订单起点到终点 获得剩余时间,里程,预计到达时间 */ 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); + TaxiPassengerNaviToDestinationModel.getInstance(mContext).destroyAmaNavi(); + if (mCurrentOCHOrder != null){ + NaviLatLng startNaviLatLng = new NaviLatLng(mLatitude,mLongitude); + NaviLatLng endNaviLatLng = new NaviLatLng(mCurrentOCHOrder.endSiteGcjPoint.get(1),mCurrentOCHOrder.endSiteGcjPoint.get(0)); + TaxiPassengerNaviToDestinationModel.getInstance(mContext).initAMapNavi(startNaviLatLng, endNaviLatLng); + TaxiPassengerNaviToDestinationModel.getInstance(mContext).setOCHTaciNaviChangedCallback(this); + } +// else { +// NaviLatLng startNaviLatLng = new NaviLatLng(40.200478,116.741377); +// NaviLatLng endNaviLatLng = new NaviLatLng(40.200863,116.732574); +// TaxiPassengerNaviToDestinationModel.getInstance(mContext).initAMapNavi(startNaviLatLng, endNaviLatLng); +// TaxiPassengerNaviToDestinationModel.getInstance(mContext).setOCHTaciNaviChangedCallback(this); +// } } @Override - public void onCurrentNaviDistAndTimeChanged(int meters, int timeInSecond) { + public void onCurrentNaviDistAndTimeChanged(int meters, int timeInSecond, String currentRoadName) { + if (mTtsLessThan200Tip == 0 && meters <= 200){ + mTtsLessThan200Tip = 1; + runOnUIThread(() -> { + AIAssist.getInstance(mContext).speakTTSVoice(mContext.getString(R.string.taxi_p_arrive_end_tts_200)); + }); + } for (IOCHTaxiPassengerOrderStatusCallback callback :mOrderStatusCallbackMap.values()){ - callback.onCurrentOrderDistToEndChanged(meters,timeInSecond); + callback.onCurrentOrderDistToEndChanged(meters,timeInSecond,currentRoadName); } } @Override public void reInitNaviAmap(boolean isPlay, boolean isRestart) { + naviOrderStartToEnd(); + } + private void runOnUIThread(Runnable executor) { + if (executor == null) { + return; + } + if (Looper.myLooper() != Looper.getMainLooper()) { + UiThreadHandler.post(executor); + } else { + executor.run(); + } } } diff --git a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/model/TaxiPassengerNaviToDestinationModel.java b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/model/TaxiPassengerNaviToDestinationModel.java index 9806e1b9ac..d48aef1510 100644 --- a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/model/TaxiPassengerNaviToDestinationModel.java +++ b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/model/TaxiPassengerNaviToDestinationModel.java @@ -2,7 +2,6 @@ package com.mogo.och.taxi.passenger.model; import android.Manifest; import android.content.Context; -import android.util.Log; import android.widget.Toast; import com.amap.api.navi.AMapNavi; @@ -23,9 +22,11 @@ import com.amap.api.navi.model.AimLessModeStat; import com.amap.api.navi.model.NaviInfo; import com.amap.api.navi.model.NaviLatLng; import com.autonavi.tbt.TrafficFacilityInfo; -import com.mogo.eagle.core.utilcode.mogo.toast.TipToast; +import com.mogo.eagle.core.utilcode.mogo.logger.Logger; +import com.mogo.eagle.core.utilcode.mogo.storage.SharedPrefsMgr; import com.mogo.eagle.core.utilcode.util.NetworkUtils; import com.mogo.och.taxi.passenger.callback.IOCHTaxiPassengerNaviChangedCallback; +import com.mogo.och.taxi.passenger.constant.TaxiPassengerConst; import com.mogo.och.taxi.passenger.utils.PermissionUtil; import java.util.ArrayList; @@ -37,6 +38,9 @@ import java.util.concurrent.atomic.AtomicInteger; * @date: 2021/12/6 */ public class TaxiPassengerNaviToDestinationModel implements AMapNaviListener { + + private final String TAG = TaxiPassengerNaviToDestinationModel.class.getSimpleName(); + private static Context mContext; private AMapNavi mAMapNavi = null; protected final List sList = new ArrayList(); @@ -45,6 +49,13 @@ public class TaxiPassengerNaviToDestinationModel implements AMapNaviListener { private IOCHTaxiPassengerNaviChangedCallback mNaviChangedCallback; private AtomicInteger errorCount = new AtomicInteger(0); private boolean isPlay; + + private volatile int mFirstcalculateDriveRoute = 0; + public void setFirstcalculateDriveRoute(int firstcalculateDriveRoute) { + this.mFirstcalculateDriveRoute = firstcalculateDriveRoute; + } + + public static TaxiPassengerNaviToDestinationModel getInstance(Context context) { mContext = context; return SingletonHolder.INSTANCE; @@ -63,6 +74,14 @@ public class TaxiPassengerNaviToDestinationModel implements AMapNaviListener { mAMapNavi.stopSpeak(); sList.add(startLatLng); eList.add(endLatLng); + int strategy = 0; + try { + //再次强调,最后一个参数为true时代表多路径,否则代表单路径 + strategy = mAMapNavi.strategyConvert(true, false, false, false, false); + } catch (Exception e) { + e.printStackTrace(); + } + mAMapNavi.calculateDriveRoute(sList, eList, mWayPointList, strategy); }catch (Exception e) { e.printStackTrace(); } @@ -84,6 +103,8 @@ public class TaxiPassengerNaviToDestinationModel implements AMapNaviListener { mAMapNavi.destroy(); mAMapNavi = null; mNaviChangedCallback = null; + sList.clear(); + eList.clear(); } } @@ -98,38 +119,27 @@ public class TaxiPassengerNaviToDestinationModel implements AMapNaviListener { @Override public void onInitNaviSuccess() { //初始化成功 - /** - * 方法: int strategy=mAMapNavi.strategyConvert(congestion, avoidhightspeed, cost, hightspeed, multipleroute); 参数: - * - * @congestion 躲避拥堵 - * @avoidhightspeed 不走高速 - * @cost 避免收费 - * @hightspeed 高速优先 - * @multipleroute 多路径 - * - * 说明: 以上参数都是boolean类型,其中multipleroute参数表示是否多条路线,如果为true则此策略会算出多条路线。 - * 注意: 不走高速与高速优先不能同时为true 高速优先与避免收费不能同时为true - */ - int strategy = 0; - try { - //再次强调,最后一个参数为true时代表多路径,否则代表单路径 - strategy = mAMapNavi.strategyConvert(true, false, false, false, false); - } catch (Exception e) { - e.printStackTrace(); - } - mAMapNavi.calculateDriveRoute(sList, eList, mWayPointList, strategy); } @Override public void onCalculateRouteSuccess(int[] ints) { //多路径算路成功回调 + Logger.d(TAG,"onCalculateRouteSuccess"); mAMapNavi.startNavi(NaviType.GPS); } @Override public void onNaviInfoUpdate(NaviInfo naviinfo) { //导航过程中的信息更新,请看NaviInfo的具体说明 + Logger.d(TAG,"naviinfo = "+naviinfo.getPathRetainDistance()+" ,"+naviinfo.getPathRetainTime() + +" ,"+naviinfo.getCurrentRoadName()); + + if (mFirstcalculateDriveRoute == 0 && SharedPrefsMgr.getInstance(mContext).getInt(TaxiPassengerConst.SP_KEY_ORDER_SUM_DIS,0) == 0){ + mFirstcalculateDriveRoute = 1; + SharedPrefsMgr.getInstance(mContext).putInt(TaxiPassengerConst.SP_KEY_ORDER_SUM_DIS,naviinfo.getPathRetainDistance()); + } if (null != mNaviChangedCallback){ - mNaviChangedCallback.onCurrentNaviDistAndTimeChanged(naviinfo.getPathRetainDistance(),naviinfo.getPathRetainTime());// 米、秒 + mNaviChangedCallback.onCurrentNaviDistAndTimeChanged(naviinfo.getPathRetainDistance() + ,naviinfo.getPathRetainTime(),naviinfo.getCurrentRoadName());// 米、秒 } } @@ -149,14 +159,12 @@ public class TaxiPassengerNaviToDestinationModel implements AMapNaviListener { } } if (!NetworkUtils.isConnected(mContext) || result.getErrorCode() == 2){ - TipToast.longTip("网络异常,请重试"); if (mNaviChangedCallback != null){ mNaviChangedCallback.reInitNaviAmap(isPlay,false); } return; } if (!PermissionUtil.isLocServiceEnable(mContext) || !PermissionUtil.checkPermission(mContext,new String[]{Manifest.permission.ACCESS_FINE_LOCATION})){ - TipToast.longTip("请开启车机定位后重试"); if (mNaviChangedCallback != null){ mNaviChangedCallback.reInitNaviAmap(isPlay,false); } @@ -167,8 +175,8 @@ public class TaxiPassengerNaviToDestinationModel implements AMapNaviListener { // }else if (result.getErrorCode() == 6){ // TipToast.longTip("终点坐标错误"); // } - Log.i("dm", "路线计算失败:错误码=" + result.getErrorCode() + ",Error Message= " + result.getErrorDetail()); - Log.i("dm", "错误码详细链接见:http://lbs.amap.com/api/android-navi-sdk/guide/tools/errorcode/"); + Logger.i(TAG, "路线计算失败:错误码=" + result.getErrorCode() + ",Error Message= " + result.getErrorDetail()); + Logger.i(TAG, "错误码详细链接见:http://lbs.amap.com/api/android-navi-sdk/guide/tools/errorcode/"); } @Override public void onStartNavi(int type) { diff --git a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/presenter/BaseTaxiPassengerPresenter.java b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/presenter/BaseTaxiPassengerPresenter.java index 64a6827865..bc4f790b38 100644 --- a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/presenter/BaseTaxiPassengerPresenter.java +++ b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/presenter/BaseTaxiPassengerPresenter.java @@ -9,15 +9,20 @@ import androidx.lifecycle.LifecycleOwner; import com.mogo.commons.AbsMogoApplication; import com.mogo.commons.mvp.Presenter; +import com.mogo.commons.voice.AIAssist; import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener; import com.mogo.eagle.core.utilcode.mogo.logger.Logger; +import com.mogo.eagle.core.utilcode.mogo.storage.SharedPrefsMgr; import com.mogo.eagle.core.utilcode.util.UiThreadHandler; +import com.mogo.och.taxi.passenger.R; import com.mogo.och.taxi.passenger.bean.TaxiPassengerOrderQueryRespBean; import com.mogo.och.taxi.passenger.callback.IOCHTaxiPassengerADASStatusCallback; import com.mogo.och.taxi.passenger.callback.IOCHTaxiPassengerControllerStatusCallback; import com.mogo.och.taxi.passenger.callback.IOCHTaxiPassengerOrderStatusCallback; +import com.mogo.och.taxi.passenger.constant.TaxiPassengerConst; 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.ui.TaxiPassengerBaseFragment; /** @@ -118,26 +123,49 @@ public class BaseTaxiPassengerPresenter extends Presenter list = new ArrayList<>(); - for (int i = 0; i < 200; i++) { - MessagePad.Location.Builder builder = MessagePad.Location.newBuilder(); - AutopilotRouteInfo.RouteModels routeModels = new AutopilotRouteInfo.RouteModels(); - if (i <= 100) { - builder.setLatitude(40.199248903658166); - builder.setLongitude(116.73435586102245 + i * 0.0001); - } else { - builder.setLatitude(40.199248903658166 + i * 0.0001); - builder.setLongitude(116.73435586102245 + 100 * 0.0001); + try { + JSONObject jsonObject = new JSONObject(listStr); + JSONArray jsonElements = jsonObject.getJSONArray("models"); + for (int i = 0; i < jsonElements.length(); i++){ + JSONObject s = jsonElements.getJSONObject(i); + MessagePad.Location.Builder routeModels = MessagePad.Location.newBuilder(); + routeModels.setLatitude(s.getDouble("lat")); + routeModels.setLongitude(s.getDouble("lon")); + list.add(routeModels.build()); } - list.add(builder.build()); + } catch (JSONException e) { + e.printStackTrace(); } + mPresenter.routeResult(list); return true; } @@ -142,7 +330,7 @@ public class TaxiPassengerServingOrderFragment extends */ private void setSeekBarMax() { //计算订单起点和终点距离 - int maxInt = TaxiPassengerModel.getInstance().calculateOrderDistanceSum(); + int maxInt = SharedPrefsMgr.getInstance(getContext()).getInt(TaxiPassengerConst.SP_KEY_ORDER_SUM_DIS,0); Logger.d(TAG, "maxInt = " + maxInt); mProgressSeekBar.setMax(maxInt); } @@ -151,9 +339,10 @@ public class TaxiPassengerServingOrderFragment extends * 行驶进度值更新 */ @RequiresApi(api = Build.VERSION_CODES.N) - private void updateDriveProcessLoading(int progressLoading) { + private void updateDriveProcessLoading(int progressLoading,String currentRoadName) { + mProgessDes.setText(currentRoadName); mProgressSeekBar.setProgress( - TaxiPassengerModel.getInstance().calculateOrderDistanceSum() - progressLoading + SharedPrefsMgr.getInstance(getContext()).getInt(TaxiPassengerConst.SP_KEY_ORDER_SUM_DIS,0) - progressLoading , true); } @@ -234,24 +423,32 @@ public class TaxiPassengerServingOrderFragment extends if (TaxiPassengerOrderStatusEnum.OnTheWayToEndStation.getCode() == order.orderStatus) { mTPOrderStatus.setText(R.string.taxi_p_start_to_end); + setSeekBarMax(); return; } } + /** + * 剩余里程,剩余时间,当前定位点所在道路 + * @param meters + * @param timeInSecond + * @param currentRoadName + */ @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); + public void onCurrentOrderDistToEndChanged(int meters, int timeInSecond, String currentRoadName) { DecimalFormat fnum = new DecimalFormat("##0.00"); String remainDis = fnum.format((float) meters / 1000); int remainTime = (int) timeInSecond / 60; + Calendar beforeTime = Calendar.getInstance(); + beforeTime.add(Calendar.MINUTE,remainTime); + String arriveTime = TaxiPassengerUtils.formatCalendarToString(beforeTime,TaxiPassengerUtils.TAXI_HH_mm); updateOrderDisAndTimeView(remainDis, remainTime, arriveTime); - updateDriveProcessLoading(meters); + updateDriveProcessLoading(meters,currentRoadName); } private void updateOrderDisAndTimeView(String remainDis, int remainTime, String arriveTime) { mTPOrderRemainDis.setText(remainDis); - mTPOrderRemainTime.setText(remainTime); + mTPOrderRemainTime.setText(String.valueOf(remainTime)); mTPOrderRemainArriveTime.setText(arriveTime); } @@ -270,10 +467,13 @@ public class TaxiPassengerServingOrderFragment extends */ private void updateSpeedView(float newSpeed) { int speed = (int) (Math.abs(newSpeed) * 3.6F); // 倒车时工控机反馈定位信息中speed为负值 + Logger.d(TAG,"mLimitingVelocity = "+mLimitingVelocity); if (speed < mLimitingVelocity) { mTPSpeedTv.setText(getSpeedTextStyle(String.valueOf(speed), true)); + mSpeedLayoutBg.setBackgroundResource(R.drawable.taxi_p_speed_light_green_bg); } else { mTPSpeedTv.setText(getSpeedTextStyle(String.valueOf(speed), false)); + mSpeedLayoutBg.setBackgroundResource(R.drawable.taxi_p_speed_light_red_bg); } } @@ -288,6 +488,7 @@ public class TaxiPassengerServingOrderFragment extends if (isNormal) { return TaxiPassengerUtils.getGradientFontSpan(content , 0xFFCEEEFF, 0xFFA1DAFF); + } else {//超速 return TaxiPassengerUtils.getGradientFontSpan(content , 0xFFFE2505, 0xFFFF6F62); diff --git a/OCH/mogo-och-taxi-passenger/src/main/res/drawable-xhdpi-2560x1440/taxi_p_arrive_end_panel_bg.png b/OCH/mogo-och-taxi-passenger/src/main/res/drawable-xhdpi-2560x1440/taxi_p_arrive_end_panel_bg.png new file mode 100644 index 0000000000..8c7c04a122 Binary files /dev/null and b/OCH/mogo-och-taxi-passenger/src/main/res/drawable-xhdpi-2560x1440/taxi_p_arrive_end_panel_bg.png differ diff --git a/OCH/mogo-och-taxi-passenger/src/main/res/drawable-xhdpi-2560x1440/taxi_p_arrow_nor.png b/OCH/mogo-och-taxi-passenger/src/main/res/drawable-xhdpi-2560x1440/taxi_p_arrow_nor.png index b7e671cd13..b9d70e5fbb 100644 Binary files a/OCH/mogo-och-taxi-passenger/src/main/res/drawable-xhdpi-2560x1440/taxi_p_arrow_nor.png and b/OCH/mogo-och-taxi-passenger/src/main/res/drawable-xhdpi-2560x1440/taxi_p_arrow_nor.png differ diff --git a/OCH/mogo-och-taxi-passenger/src/main/res/drawable-xhdpi-2560x1440/taxi_p_seekbar_point_icon.png b/OCH/mogo-och-taxi-passenger/src/main/res/drawable-xhdpi-2560x1440/taxi_p_seekbar_point_icon.png new file mode 100644 index 0000000000..ab00b6fde3 Binary files /dev/null and b/OCH/mogo-och-taxi-passenger/src/main/res/drawable-xhdpi-2560x1440/taxi_p_seekbar_point_icon.png differ diff --git a/OCH/mogo-och-taxi-passenger/src/main/res/drawable-xhdpi-2560x1440/taxi_p_speed_light_green_bg.png b/OCH/mogo-och-taxi-passenger/src/main/res/drawable-xhdpi-2560x1440/taxi_p_speed_light_green_bg.png new file mode 100644 index 0000000000..d6116cae01 Binary files /dev/null and b/OCH/mogo-och-taxi-passenger/src/main/res/drawable-xhdpi-2560x1440/taxi_p_speed_light_green_bg.png differ diff --git a/OCH/mogo-och-taxi-passenger/src/main/res/drawable-xhdpi-2560x1440/taxi_p_speed_light_red_bg.png b/OCH/mogo-och-taxi-passenger/src/main/res/drawable-xhdpi-2560x1440/taxi_p_speed_light_red_bg.png new file mode 100644 index 0000000000..4fa0e570fa Binary files /dev/null and b/OCH/mogo-och-taxi-passenger/src/main/res/drawable-xhdpi-2560x1440/taxi_p_speed_light_red_bg.png differ diff --git a/OCH/mogo-och-taxi-passenger/src/main/res/drawable-xhdpi/taxi_p_arrive_end_panel_bg.png b/OCH/mogo-och-taxi-passenger/src/main/res/drawable-xhdpi/taxi_p_arrive_end_panel_bg.png new file mode 100644 index 0000000000..8c7c04a122 Binary files /dev/null and b/OCH/mogo-och-taxi-passenger/src/main/res/drawable-xhdpi/taxi_p_arrive_end_panel_bg.png differ diff --git a/OCH/mogo-och-taxi-passenger/src/main/res/drawable-xhdpi/taxi_p_arrow_nor.png b/OCH/mogo-och-taxi-passenger/src/main/res/drawable-xhdpi/taxi_p_arrow_nor.png index b7e671cd13..b9d70e5fbb 100644 Binary files a/OCH/mogo-och-taxi-passenger/src/main/res/drawable-xhdpi/taxi_p_arrow_nor.png and b/OCH/mogo-och-taxi-passenger/src/main/res/drawable-xhdpi/taxi_p_arrow_nor.png differ diff --git a/OCH/mogo-och-taxi-passenger/src/main/res/drawable-xhdpi/taxi_p_seekbar_point_icon.png b/OCH/mogo-och-taxi-passenger/src/main/res/drawable-xhdpi/taxi_p_seekbar_point_icon.png new file mode 100644 index 0000000000..ab00b6fde3 Binary files /dev/null and b/OCH/mogo-och-taxi-passenger/src/main/res/drawable-xhdpi/taxi_p_seekbar_point_icon.png differ diff --git a/OCH/mogo-och-taxi-passenger/src/main/res/drawable-xhdpi/taxi_p_speed_light_green_bg.png b/OCH/mogo-och-taxi-passenger/src/main/res/drawable-xhdpi/taxi_p_speed_light_green_bg.png new file mode 100644 index 0000000000..d6116cae01 Binary files /dev/null and b/OCH/mogo-och-taxi-passenger/src/main/res/drawable-xhdpi/taxi_p_speed_light_green_bg.png differ diff --git a/OCH/mogo-och-taxi-passenger/src/main/res/drawable-xhdpi/taxi_p_speed_light_red_bg.png b/OCH/mogo-och-taxi-passenger/src/main/res/drawable-xhdpi/taxi_p_speed_light_red_bg.png new file mode 100644 index 0000000000..4fa0e570fa Binary files /dev/null and b/OCH/mogo-och-taxi-passenger/src/main/res/drawable-xhdpi/taxi_p_speed_light_red_bg.png differ diff --git a/OCH/mogo-och-taxi-passenger/src/main/res/drawable/taxi_p_map_bottom_shape.xml b/OCH/mogo-och-taxi-passenger/src/main/res/drawable/taxi_p_map_bottom_shape.xml new file mode 100644 index 0000000000..9fb453ea1b --- /dev/null +++ b/OCH/mogo-och-taxi-passenger/src/main/res/drawable/taxi_p_map_bottom_shape.xml @@ -0,0 +1,8 @@ + + + + + \ No newline at end of file diff --git a/OCH/mogo-och-taxi-passenger/src/main/res/drawable/taxi_p_seekbar_calculator_layer.xml b/OCH/mogo-och-taxi-passenger/src/main/res/drawable/taxi_p_seekbar_calculator_layer.xml index 67c9174e63..efc0d4f4df 100644 --- a/OCH/mogo-och-taxi-passenger/src/main/res/drawable/taxi_p_seekbar_calculator_layer.xml +++ b/OCH/mogo-och-taxi-passenger/src/main/res/drawable/taxi_p_seekbar_calculator_layer.xml @@ -1,28 +1,17 @@ - - + - - - - - + diff --git a/OCH/mogo-och-taxi-passenger/src/main/res/layout/taxi_p_activity_serving_order_view.xml b/OCH/mogo-och-taxi-passenger/src/main/res/layout/taxi_p_activity_serving_order_view.xml index 55300eafb6..ba7d3ebfb0 100644 --- a/OCH/mogo-och-taxi-passenger/src/main/res/layout/taxi_p_activity_serving_order_view.xml +++ b/OCH/mogo-och-taxi-passenger/src/main/res/layout/taxi_p_activity_serving_order_view.xml @@ -8,11 +8,22 @@ + + @@ -128,6 +140,7 @@ android:layout_toRightOf="@+id/taxi_p_order_remain_distance" android:text="KM" android:textColor="#FFFFFF" + android:includeFontPadding="false" android:textSize="20px" /> @@ -139,6 +152,7 @@ android:layout_centerHorizontal="true" android:layout_marginTop="@dimen/dp_10" android:text="距离" + android:includeFontPadding="false" android:textColor="#8FB3EF" android:textSize="20px" /> @@ -165,6 +179,7 @@ android:layout_height="wrap_content" android:text="0" android:textColor="#84D4FF" + android:includeFontPadding="false" android:textSize="42px" android:textStyle="bold" /> @@ -177,6 +192,7 @@ android:layout_toRightOf="@+id/taxi_p_order_remain_time" android:text="分钟" android:textColor="#FFFFFF" + android:includeFontPadding="false" android:textSize="20px" /> @@ -188,6 +204,7 @@ android:layout_centerHorizontal="true" android:layout_marginTop="@dimen/dp_10" android:text="剩余" + android:includeFontPadding="false" android:textColor="#8FB3EF" android:textSize="20px" /> @@ -207,6 +224,7 @@ android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:text="0" + android:includeFontPadding="false" android:textColor="#84D4FF" android:textSize="42px" android:textStyle="bold" /> @@ -219,6 +237,7 @@ android:layout_centerHorizontal="true" android:layout_marginTop="@dimen/dp_10" android:text="到达" + android:includeFontPadding="false" android:textColor="#8FB3EF" android:textSize="20px" /> @@ -235,25 +254,43 @@ + app:layout_constraintBottom_toBottomOf="parent"/> + + + + diff --git a/OCH/mogo-och-taxi-passenger/src/main/res/layout/taxi_p_base_fragment.xml b/OCH/mogo-och-taxi-passenger/src/main/res/layout/taxi_p_base_fragment.xml index f013f01624..a751710d99 100644 --- a/OCH/mogo-och-taxi-passenger/src/main/res/layout/taxi_p_base_fragment.xml +++ b/OCH/mogo-och-taxi-passenger/src/main/res/layout/taxi_p_base_fragment.xml @@ -113,4 +113,55 @@ android:layout_marginRight="@dimen/taxi_p_traffic_light_layout_margin_right" android:layout_marginTop="@dimen/taxi_p_traffic_light_layout_margin_top" android:visibility="gone"/> + + + + + + + + + \ No newline at end of file diff --git a/OCH/mogo-och-taxi-passenger/src/main/res/layout/taxi_p_map_view.xml b/OCH/mogo-och-taxi-passenger/src/main/res/layout/taxi_p_map_view.xml index a01aa831cd..dfd776809b 100644 --- a/OCH/mogo-och-taxi-passenger/src/main/res/layout/taxi_p_map_view.xml +++ b/OCH/mogo-och-taxi-passenger/src/main/res/layout/taxi_p_map_view.xml @@ -3,8 +3,8 @@ xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent" - app:taxi_right_bottom_radius="40px" - app:taxi_left_bottom_radius="40px"> + app:taxi_right_bottom_radius="@dimen/dp_40" + app:taxi_left_bottom_radius="@dimen/dp_40"> 120px 39px 20px + + 82px + 42px + + 120px + 28px \ No newline at end of file diff --git a/OCH/mogo-och-taxi-passenger/src/main/res/values-xhdpi-2560x1440/dimens.xml b/OCH/mogo-och-taxi-passenger/src/main/res/values-xhdpi-2560x1440/dimens.xml index 84694a1e19..0305e67e98 100644 --- a/OCH/mogo-och-taxi-passenger/src/main/res/values-xhdpi-2560x1440/dimens.xml +++ b/OCH/mogo-och-taxi-passenger/src/main/res/values-xhdpi-2560x1440/dimens.xml @@ -24,6 +24,12 @@ 120px 120px + 82px + 42px + + 120px + 28px + 83px 40px diff --git a/OCH/mogo-och-taxi-passenger/src/main/res/values/colors.xml b/OCH/mogo-och-taxi-passenger/src/main/res/values/colors.xml index 351f21c4f7..46ba8a611c 100644 --- a/OCH/mogo-och-taxi-passenger/src/main/res/values/colors.xml +++ b/OCH/mogo-och-taxi-passenger/src/main/res/values/colors.xml @@ -25,4 +25,9 @@ #FF9B00 #80000000 + + #F8B70A + #C6D9FA + + #D1193D66 \ No newline at end of file diff --git a/OCH/mogo-och-taxi-passenger/src/main/res/values/dimens.xml b/OCH/mogo-och-taxi-passenger/src/main/res/values/dimens.xml index 957abe6b50..88098feac9 100644 --- a/OCH/mogo-och-taxi-passenger/src/main/res/values/dimens.xml +++ b/OCH/mogo-och-taxi-passenger/src/main/res/values/dimens.xml @@ -108,4 +108,10 @@ 120px 39px 20px + + 82px + 42px + + 120px + 28px \ No newline at end of file diff --git a/OCH/mogo-och-taxi-passenger/src/main/res/values/strings.xml b/OCH/mogo-och-taxi-passenger/src/main/res/values/strings.xml index 25755a228e..98094604c0 100644 --- a/OCH/mogo-och-taxi-passenger/src/main/res/values/strings.xml +++ b/OCH/mogo-och-taxi-passenger/src/main/res/values/strings.xml @@ -20,4 +20,8 @@ 服务完成 准备出发 正在前往目的地 + 即将到达目的地,请您收好好随声物品,准备下车 + 已达到目的地,请从右侧下车,感谢乘坐蘑菇车联无人驾驶车 + 已到达 + 感谢您使用蘑菇车联自动驾驶出行服务,期待下次与您相遇 \ No newline at end of file diff --git a/OCH/mogo-och-taxi-passenger/src/main/res/values/styles.xml b/OCH/mogo-och-taxi-passenger/src/main/res/values/styles.xml index d6aa45e6b8..aa3f10f3cf 100644 --- a/OCH/mogo-och-taxi-passenger/src/main/res/values/styles.xml +++ b/OCH/mogo-och-taxi-passenger/src/main/res/values/styles.xml @@ -10,4 +10,13 @@ + + + \ No newline at end of file diff --git a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/model/MogoOCHTaxiModelNew.java b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/model/MogoOCHTaxiModelNew.java index c0f8dfc642..15f1857d92 100644 --- a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/model/MogoOCHTaxiModelNew.java +++ b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/model/MogoOCHTaxiModelNew.java @@ -8,6 +8,8 @@ import android.util.Log; import androidx.annotation.Nullable; +import com.amap.api.maps.CoordinateConverter; +import com.amap.api.maps.model.LatLng; import com.elegant.network.utils.GsonUtil; import com.mogo.cloud.commons.utils.CoordinateUtils; import com.mogo.commons.debug.DebugConfig; @@ -1047,7 +1049,6 @@ public class MogoOCHTaxiModelNew { @Override public void onAutopilotRotting(MessagePad.GlobalPathResp routeList) { if (null != routeList && routeList.getWayPointsList().size() > 0){ -// mAutopilotPlanningCallback.routeResult(routeList.getModels()); updateOrderRoute(routeList.getWayPointsList()); } } @@ -1065,14 +1066,7 @@ public class MogoOCHTaxiModelNew { */ public void updateOrderRoute(List models) { - List points = new ArrayList<>(); - - for (int i =0; i < models.size(); i++){ - OrderRouteUpdateReqBean.Result point = new OrderRouteUpdateReqBean.Result(); - point.latitude = models.get(i).getLatitude(); - point.longitude = models.get(i).getLongitude(); - points.add(point); - } + List points = CoordinateConverterFrom84ForList(mContext,models); OCHTaxiServiceManagerNew.getInstance().updateOrderRoute(mContext, mCurrentOCHOrder.orderNo , points, new OCHTaxiServiceCallback() { @@ -1088,5 +1082,25 @@ public class MogoOCHTaxiModelNew { }); } + private List CoordinateConverterFrom84ForList(Context mContext, List mogoLatLngList) { + List points = new ArrayList<>(); + for (MessagePad.Location m : mogoLatLngList) { + LatLng mogoLatLng = CoordinateConverterFrom84(mContext, m); + OrderRouteUpdateReqBean.Result result = new OrderRouteUpdateReqBean.Result(); + result.latitude = mogoLatLng.latitude; + result.longitude = mogoLatLng.longitude; + points.add(result); + } + return points; + } + + private LatLng CoordinateConverterFrom84(Context mContext, MessagePad.Location mogoLatLng) { + CoordinateConverter mCoordinateConverter = new CoordinateConverter(mContext); + mCoordinateConverter.from(CoordinateConverter.CoordType.GPS); + mCoordinateConverter.coord(new LatLng(mogoLatLng.getLatitude(), mogoLatLng.getLongitude())); + LatLng latLng = mCoordinateConverter.convert(); + return latLng; + } + } 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 ae27507194..aede461144 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 @@ -1,5 +1,6 @@ package com.mogo.och.taxi.ui; +import android.content.Context; import android.os.Build; import android.os.Bundle; import android.view.View; @@ -10,8 +11,11 @@ import androidx.annotation.Nullable; import androidx.annotation.RequiresApi; import androidx.fragment.app.FragmentTransaction; +import com.amap.api.maps.CoordinateConverter; +import com.amap.api.maps.model.LatLng; import com.mogo.commons.debug.DebugConfig; 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.module.common.MogoApisHandler; import com.mogo.och.taxi.R; @@ -22,6 +26,10 @@ import com.mogo.och.taxi.model.MogoOCHTaxiModelNew; import com.mogo.och.taxi.presenter.OCHTaxiPresenter; import com.mogo.och.taxi.utils.PinYinUtil; +import org.json.JSONArray; +import org.json.JSONException; +import org.json.JSONObject; + import java.lang.ref.WeakReference; import java.util.ArrayList; import java.util.List; @@ -317,21 +325,224 @@ public class OCHTaxiFragment extends BaseOchTaxiTabFragment { + + String listStr = "{\"models\":[{\n" + + "\t\t\"lat\": 40.19927810144466,\n" + + "\t\t\"lon\": 116.73527259387767\n" + + "\t}, {\n" + + "\t\t\"lat\": 40.19927836356079,\n" + + "\t\t\"lon\": 116.73513114732762\n" + + "\t}, {\n" + + "\t\t\"lat\": 40.19927759500293,\n" + + "\t\t\"lon\": 116.73497660879111\n" + + "\t}, {\n" + + "\t\t\"lat\": 40.199264819842284,\n" + + "\t\t\"lon\": 116.73480063747202\n" + + "\t}, {\n" + + "\t\t\"lat\": 40.1992510141554,\n" + + "\t\t\"lon\": 116.73463922037767\n" + + "\t}, {\n" + + "\t\t\"lat\": 40.199245872804,\n" + + "\t\t\"lon\": 116.73445960685193\n" + + "\t}, {\n" + + "\t\t\"lat\": 40.19924673374912,\n" + + "\t\t\"lon\": 116.73427704009703\n" + + "\t}, {\n" + + "\t\t\"lat\": 40.19924747108264,\n" + + "\t\t\"lon\": 116.7340707102972\n" + + "\t}, {\n" + + "\t\t\"lat\": 40.19924828745573,\n" + + "\t\t\"lon\": 116.73385916927226\n" + + "\t}, {\n" + + "\t\t\"lat\": 40.19924941093133,\n" + + "\t\t\"lon\": 116.73364048294795\n" + + "\t}, {\n" + + "\t\t\"lat\": 40.19924939253381,\n" + + "\t\t\"lon\": 116.73340837408566\n" + + "\t}, {\n" + + "\t\t\"lat\": 40.19924949105934,\n" + + "\t\t\"lon\": 116.73317368725336\n" + + "\t}, {\n" + + "\t\t\"lat\": 40.19925040039033,\n" + + "\t\t\"lon\": 116.73296532811216\n" + + "\t}, {\n" + + "\t\t\"lat\": 40.1992515355653,\n" + + "\t\t\"lon\": 116.73277787366743\n" + + "\t}, {\n" + + "\t\t\"lat\": 40.1992512720328,\n" + + "\t\t\"lon\": 116.73263377253741\n" + + "\t}, {\n" + + "\t\t\"lat\": 40.199205174954606,\n" + + "\t\t\"lon\": 116.73249773114644\n" + + "\t}, {\n" + + "\t\t\"lat\": 40.1991015743076,\n" + + "\t\t\"lon\": 116.7324219601283\n" + + "\t}, {\n" + + "\t\t\"lat\": 40.198971862686285,\n" + + "\t\t\"lon\": 116.73239393296355\n" + + "\t}, {\n" + + "\t\t\"lat\": 40.19883883071582,\n" + + "\t\t\"lon\": 116.73237676435652\n" + + "\t}, {\n" + + "\t\t\"lat\": 40.19870171355796,\n" + + "\t\t\"lon\": 116.73236052150362\n" + + "\t}, {\n" + + "\t\t\"lat\": 40.1985491853193,\n" + + "\t\t\"lon\": 116.73234157857011\n" + + "\t}, {\n" + + "\t\t\"lat\": 40.1983890047355,\n" + + "\t\t\"lon\": 116.73232167996464\n" + + "\t}, {\n" + + "\t\t\"lat\": 40.1982209877466,\n" + + "\t\t\"lon\": 116.73230101645792\n" + + "\t}, {\n" + + "\t\t\"lat\": 40.198037574138326,\n" + + "\t\t\"lon\": 116.73227735486083\n" + + "\t}, {\n" + + "\t\t\"lat\": 40.19787327856243,\n" + + "\t\t\"lon\": 116.73225676816314\n" + + "\t}, {\n" + + "\t\t\"lat\": 40.19771917207499,\n" + + "\t\t\"lon\": 116.73223814728027\n" + + "\t}, {\n" + + "\t\t\"lat\": 40.197548305175935,\n" + + "\t\t\"lon\": 116.73221624705808\n" + + "\t}, {\n" + + "\t\t\"lat\": 40.19739568979691,\n" + + "\t\t\"lon\": 116.73219618210774\n" + + "\t}, {\n" + + "\t\t\"lat\": 40.19724703821575,\n" + + "\t\t\"lon\": 116.73217598293311\n" + + "\t}, {\n" + + "\t\t\"lat\": 40.1970956560885,\n" + + "\t\t\"lon\": 116.73215773721505\n" + + "\t}, {\n" + + "\t\t\"lat\": 40.19697703483188,\n" + + "\t\t\"lon\": 116.73214337172284\n" + + "\t}, {\n" + + "\t\t\"lat\": 40.19687000725696,\n" + + "\t\t\"lon\": 116.73210037067965\n" + + "\t}, {\n" + + "\t\t\"lat\": 40.196833449601726,\n" + + "\t\t\"lon\": 116.73196646708011\n" + + "\t}, {\n" + + "\t\t\"lat\": 40.19685833847804,\n" + + "\t\t\"lon\": 116.73181315361103\n" + + "\t}, {\n" + + "\t\t\"lat\": 40.196889170203264,\n" + + "\t\t\"lon\": 116.73164355747393\n" + + "\t}, {\n" + + "\t\t\"lat\": 40.19692242860347,\n" + + "\t\t\"lon\": 116.7314555399657\n" + + "\t}, {\n" + + "\t\t\"lat\": 40.19696431701069,\n" + + "\t\t\"lon\": 116.7312261834129\n" + + "\t}, {\n" + + "\t\t\"lat\": 40.19700025925464,\n" + + "\t\t\"lon\": 116.73102774016093\n" + + "\t}, {\n" + + "\t\t\"lat\": 40.19703414798773,\n" + + "\t\t\"lon\": 116.73084270562073\n" + + "\t}, {\n" + + "\t\t\"lat\": 40.19707287604138,\n" + + "\t\t\"lon\": 116.73062835248406\n" + + "\t}, {\n" + + "\t\t\"lat\": 40.19710951629977,\n" + + "\t\t\"lon\": 116.73041744082339\n" + + "\t}, {\n" + + "\t\t\"lat\": 40.19714593807105,\n" + + "\t\t\"lon\": 116.73021414314803\n" + + "\t}, {\n" + + "\t\t\"lat\": 40.197183297026285,\n" + + "\t\t\"lon\": 116.7300057066447\n" + + "\t}, {\n" + + "\t\t\"lat\": 40.1972247359487,\n" + + "\t\t\"lon\": 116.7297751515664\n" + + "\t}, {\n" + + "\t\t\"lat\": 40.19726518822745,\n" + + "\t\t\"lon\": 116.72954958923812\n" + + "\t}, {\n" + + "\t\t\"lat\": 40.19730538240706,\n" + + "\t\t\"lon\": 116.72932440756041\n" + + "\t}, {\n" + + "\t\t\"lat\": 40.19734272112662,\n" + + "\t\t\"lon\": 116.72911631453036\n" + + "\t}, {\n" + + "\t\t\"lat\": 40.197379191549075,\n" + + "\t\t\"lon\": 116.72890982812105\n" + + "\t}, {\n" + + "\t\t\"lat\": 40.197417565369314,\n" + + "\t\t\"lon\": 116.72869447869044\n" + + "\t}, {\n" + + "\t\t\"lat\": 40.19746052080799,\n" + + "\t\t\"lon\": 116.72845641541247\n" + + "\t}, {\n" + + "\t\t\"lat\": 40.19750040582118,\n" + + "\t\t\"lon\": 116.72823569991117\n" + + "\t}, {\n" + + "\t\t\"lat\": 40.19753999704064,\n" + + "\t\t\"lon\": 116.72801998373052\n" + + "\t}, {\n" + + "\t\t\"lat\": 40.19757796882569,\n" + + "\t\t\"lon\": 116.72781280504363\n" + + "\t}, {\n" + + "\t\t\"lat\": 40.197617062364586,\n" + + "\t\t\"lon\": 116.72759949431683\n" + + "\t}, {\n" + + "\t\t\"lat\": 40.19765391602761,\n" + + "\t\t\"lon\": 116.72739776789756\n" + + "\t}, {\n" + + "\t\t\"lat\": 40.19768973009218,\n" + + "\t\t\"lon\": 116.72719980764646\n" + + "\t}, {\n" + + "\t\t\"lat\": 40.197726191028785,\n" + + "\t\t\"lon\": 116.72699719861669\n" + + "\t}, {\n" + + "\t\t\"lat\": 40.19776233489642,\n" + + "\t\t\"lon\": 116.72679516155276\n" + + "\t}]}\n"; + + List list = new ArrayList<>(); - for (int i = 0; i < 200 ; i++){ - MessagePad.Location.Builder builder = MessagePad.Location.newBuilder(); - if (i <= 100){ - builder.setLatitude(40.199248903658166); - builder.setLongitude(116.73435586102245 + i * 0.0001); - }else { - builder.setLatitude(40.199248903658166 + i * 0.0001); - builder.setLongitude(116.73435586102245 + 100 * 0.0001); + + try { + JSONObject jsonObject = new JSONObject(listStr); + JSONArray jsonElements = jsonObject.getJSONArray("models"); + for (int i = 0; i < jsonElements.length(); i++){ + JSONObject s = jsonElements.getJSONObject(i); + MessagePad.Location.Builder builder = MessagePad.Location.newBuilder(); + builder.setLatitude(s.getDouble("lat")); + builder.setLongitude(s.getDouble("lon")); + list.add(builder.build()); } - list.add(builder.build()); + List list1 = CoordinateConverterFrom84ForList(getContext(),list); + MogoOCHTaxiModelNew.getInstance().updateOrderRoute(list1); + } catch (JSONException e) { + e.printStackTrace(); } - MogoOCHTaxiModelNew.getInstance().updateOrderRoute(list); }); } + + public List CoordinateConverterFrom84ForList(Context mContext, List mogoLatLngList) { + List list = new ArrayList<>(); + for (MessagePad.Location m : mogoLatLngList) { + LatLng mogoLatLng = CoordinateConverterFrom84(mContext, m); + MessagePad.Location.Builder builder = MessagePad.Location.newBuilder(); + builder.setLatitude(mogoLatLng.latitude); + builder.setLongitude(mogoLatLng.longitude); + list.add(builder.build()); + } + return list; + } + + public LatLng CoordinateConverterFrom84(Context mContext, MessagePad.Location mogoLatLng) { + CoordinateConverter mCoordinateConverter = new CoordinateConverter(mContext); + mCoordinateConverter.from(CoordinateConverter.CoordType.GPS); + mCoordinateConverter.coord(new LatLng(mogoLatLng.getLatitude(), mogoLatLng.getLongitude())); + LatLng latLng = mCoordinateConverter.convert(); + return latLng; + } + public void clickTestBar(){ View testBar = findViewById(R.id.module_och_taxi_order_status_change_test_bar); if (testBar.getVisibility() == View.VISIBLE) {