From 129413db2abf5367e56cf60911c691d8fb1af922 Mon Sep 17 00:00:00 2001 From: wangmingjun Date: Tue, 12 Apr 2022 20:36:34 +0800 Subject: [PATCH] =?UTF-8?q?[driver=20passenger=20]=20bus=20=E4=B9=98?= =?UTF-8?q?=E5=AE=A2=E5=B1=8F=E5=89=A9=E4=BD=99=E9=87=8C=E7=A8=8B=E5=92=8C?= =?UTF-8?q?=E6=97=B6=E9=97=B4=E8=AE=A1=E7=AE=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...BusPassengerAutopilotPlanningCallback.java | 1 + .../IBusPassengerRouteLineInfoCallback.java | 2 +- .../passenger/constant/BusPassengerConst.kt | 3 + .../passenger/model/BusPassengerModel.java | 61 ++++++++-- .../network/BusPassengerModelLoopManager.java | 23 ++++ .../presenter/BaseBusPassengerPresenter.java | 9 +- .../ui/BusPassengerBaseFragment.java | 29 ++++- .../ui/BusPassengerRouteFragment.java | 4 +- .../utils/BPCoordinateCalculateRouteUtil.java | 40 +++++++ .../bus/passenger/utils/BPDateTimeUtil.java | 109 ++++++++++++++++++ .../drawable-sw320dp-xhdpi/bus_p_map_car.png | Bin 7725 -> 8826 bytes .../drawable-sw320dp-xhdpi/bus_p_mogo_nor.png | Bin 0 -> 3338 bytes .../main/res/drawable-xhdpi/bus_p_map_car.png | Bin 7725 -> 8826 bytes .../res/drawable-xhdpi/bus_p_mogo_nor.png | Bin 0 -> 3338 bytes .../main/res/layout/bus_p_base_fragment.xml | 8 ++ .../src/main/res/values/strings.xml | 1 + 16 files changed, 275 insertions(+), 15 deletions(-) create mode 100644 OCH/mogo-och-bus-passenger/src/main/java/com/mogo/och/bus/passenger/utils/BPDateTimeUtil.java create mode 100644 OCH/mogo-och-bus-passenger/src/main/res/drawable-sw320dp-xhdpi/bus_p_mogo_nor.png create mode 100644 OCH/mogo-och-bus-passenger/src/main/res/drawable-xhdpi/bus_p_mogo_nor.png diff --git a/OCH/mogo-och-bus-passenger/src/main/java/com/mogo/och/bus/passenger/callback/IBusPassengerAutopilotPlanningCallback.java b/OCH/mogo-och-bus-passenger/src/main/java/com/mogo/och/bus/passenger/callback/IBusPassengerAutopilotPlanningCallback.java index 4955315502..f00d09c33c 100644 --- a/OCH/mogo-och-bus-passenger/src/main/java/com/mogo/och/bus/passenger/callback/IBusPassengerAutopilotPlanningCallback.java +++ b/OCH/mogo-och-bus-passenger/src/main/java/com/mogo/och/bus/passenger/callback/IBusPassengerAutopilotPlanningCallback.java @@ -12,4 +12,5 @@ import mogo.telematics.pad.MessagePad; */ public interface IBusPassengerAutopilotPlanningCallback { void routeResult(List models); + void routePlanningToNextStationChanged(long meters, long timeInSecond); } diff --git a/OCH/mogo-och-bus-passenger/src/main/java/com/mogo/och/bus/passenger/callback/IBusPassengerRouteLineInfoCallback.java b/OCH/mogo-och-bus-passenger/src/main/java/com/mogo/och/bus/passenger/callback/IBusPassengerRouteLineInfoCallback.java index 9d3444e20b..c7df47ec9f 100644 --- a/OCH/mogo-och-bus-passenger/src/main/java/com/mogo/och/bus/passenger/callback/IBusPassengerRouteLineInfoCallback.java +++ b/OCH/mogo-och-bus-passenger/src/main/java/com/mogo/och/bus/passenger/callback/IBusPassengerRouteLineInfoCallback.java @@ -10,5 +10,5 @@ import java.util.List; */ public interface IBusPassengerRouteLineInfoCallback { void updateLineInfo(String lineName, String lineDurTime); - void updateStationsInfo(List stations,int currentStationIndex); + void updateStationsInfo(List stations,int currentStationIndex,boolean isArrived); } diff --git a/OCH/mogo-och-bus-passenger/src/main/java/com/mogo/och/bus/passenger/constant/BusPassengerConst.kt b/OCH/mogo-och-bus-passenger/src/main/java/com/mogo/och/bus/passenger/constant/BusPassengerConst.kt index c4d399e66e..d947f441b2 100644 --- a/OCH/mogo-och-bus-passenger/src/main/java/com/mogo/och/bus/passenger/constant/BusPassengerConst.kt +++ b/OCH/mogo-och-bus-passenger/src/main/java/com/mogo/och/bus/passenger/constant/BusPassengerConst.kt @@ -37,5 +37,8 @@ class BusPassengerConst { const val STATION_STATUS_STOPPED = 2 // 未到站(未到站) const val STATION_STATUS_ARRIVING = 3 + + //bus平均速度 + const val BUS_AVERAGE_SPEED = 25 } } \ No newline at end of file diff --git a/OCH/mogo-och-bus-passenger/src/main/java/com/mogo/och/bus/passenger/model/BusPassengerModel.java b/OCH/mogo-och-bus-passenger/src/main/java/com/mogo/och/bus/passenger/model/BusPassengerModel.java index 2f88ff6c91..28f5229a24 100644 --- a/OCH/mogo-och-bus-passenger/src/main/java/com/mogo/och/bus/passenger/model/BusPassengerModel.java +++ b/OCH/mogo-och-bus-passenger/src/main/java/com/mogo/och/bus/passenger/model/BusPassengerModel.java @@ -8,8 +8,10 @@ import android.net.ConnectivityManager; import androidx.annotation.NonNull; import androidx.annotation.Nullable; +import com.amap.api.maps.model.LatLng; import com.mogo.aicloud.services.socket.IMogoLifecycleListener; import com.mogo.aicloud.services.socket.MogoAiCloudSocketManager; +import com.mogo.cloud.commons.utils.CoordinateUtils; import com.mogo.commons.debug.DebugConfig; import com.mogo.eagle.core.data.autopilot.AutopilotStatusInfo; import com.mogo.eagle.core.data.config.FunctionBuildConfig; @@ -32,6 +34,7 @@ import com.mogo.och.bus.passenger.callback.IBusPassengerADASStatusCallback; import com.mogo.och.bus.passenger.callback.IBusPassengerAutopilotPlanningCallback; import com.mogo.och.bus.passenger.callback.IBusPassengerControllerStatusCallback; import com.mogo.och.bus.passenger.callback.IBusPassengerRouteLineInfoCallback; +import com.mogo.och.bus.passenger.constant.BusPassengerConst; import com.mogo.och.bus.passenger.network.BusPassengerModelLoopManager; import com.mogo.och.bus.passenger.network.BusPassengerServiceCallback; import com.mogo.och.bus.passenger.network.BusPassengerServiceManager; @@ -59,6 +62,8 @@ import static com.mogo.och.bus.passenger.constant.BusPassengerConst.STATION_STAT public class BusPassengerModel { private static final String TAG = BusPassengerModel.class.getSimpleName(); + private List mRoutePoints = new ArrayList<>(); + private static final class SingletonHolder { private static final BusPassengerModel INSTANCE = new BusPassengerModel(); } @@ -142,10 +147,11 @@ public class BusPassengerModel { for (int i = 0; i< stations.size(); i++){ BusPassengerStation station = stations.get(i); if (station.getDrivingStatus() == STATION_STATUS_STOPPED && station.isLeaving() && i+1 < stations.size()){ - mRouteLineInfoCallback.updateStationsInfo(stations,i+1); + startOrStopCalculateRouteInfo(false); + mRouteLineInfoCallback.updateStationsInfo(stations,i+1,false); return; }else if (station.getDrivingStatus() == STATION_STATUS_STOPPED && !station.isLeaving()){ - mRouteLineInfoCallback.updateStationsInfo(stations,i); + mRouteLineInfoCallback.updateStationsInfo(stations,i,true); return; } } @@ -230,7 +236,7 @@ public class BusPassengerModel { if ( ConnectivityManager.CONNECTIVITY_ACTION.equals( intentStr ) ) { if ( NetworkUtils.isConnected( mContext ) ) { if (AppIdentityModeUtils.isDriver(FunctionBuildConfig.appIdentityMode)) { - // TODO: 2022/3/31 + queryDriverOperationStatus(); } } } @@ -342,11 +348,52 @@ public class BusPassengerModel { } }; - public void updateRoutePoints(List routePoints) { - mAutopilotPlanningCallback.routeResult( - BPCoordinateCalculateRouteUtil.coordinateConverterWgsToGcjListCommon(mContext - , routePoints)); + public void dynamicCalculateRouteInfo() { + List lastPoints = BPCoordinateCalculateRouteUtil + .getRemainPointListByCompare(mRoutePoints,mLongitude,mLatitude); + float lastSumLength = 0; + if (lastPoints.size() == 1){ //只是最后一个点,计算当前位置和最后一个点的距离 + lastSumLength = CoordinateUtils.calculateLineDistance( + lastPoints.get(0).longitude, lastPoints.get(0).latitude, + mLongitude, mLatitude); + }else { + lastSumLength = BPCoordinateCalculateRouteUtil.calculateRouteSumLength(lastPoints); + } + double lastTime = lastSumLength / BusPassengerConst.BUS_AVERAGE_SPEED * 3.6 ; //秒 + + if (mAutopilotPlanningCallback != null){ + mAutopilotPlanningCallback.routePlanningToNextStationChanged((long)lastSumLength,(long) lastTime); + } + + } + + public void updateRoutePoints(List routePoints) { + if (mAutopilotPlanningCallback != null){ + mAutopilotPlanningCallback.routeResult( + BPCoordinateCalculateRouteUtil.coordinateConverterWgsToGcjListCommon(mContext + , routePoints)); + } + + //转换成高德坐标系 + mRoutePoints.clear(); + mRoutePoints.addAll(BPCoordinateCalculateRouteUtil.coordinateConverterWgsToGcjListCommon(mContext,routePoints)); + //开启实时计算剩余距离,剩余时间,预计时间 + startOrStopCalculateRouteInfo(true); + } + + /** + * 开始轮询计算剩余里程和时间 + * @param isStart + */ + public void startOrStopCalculateRouteInfo(boolean isStart) { + CallerLogger.INSTANCE.d(M_BUS_P + TAG, "startOrStopOrderLoop() " + isStart); + if (isStart) { + BusPassengerModelLoopManager.getInstance().startCalculateRouteInfoLoop(); + } else { + mRoutePoints.clear(); + BusPassengerModelLoopManager.getInstance().stopCalculateRouteInfLoop(); + } } private void startOrStopOrderLoop(boolean start) { diff --git a/OCH/mogo-och-bus-passenger/src/main/java/com/mogo/och/bus/passenger/network/BusPassengerModelLoopManager.java b/OCH/mogo-och-bus-passenger/src/main/java/com/mogo/och/bus/passenger/network/BusPassengerModelLoopManager.java index 1a68870d0e..200c25be0a 100644 --- a/OCH/mogo-och-bus-passenger/src/main/java/com/mogo/och/bus/passenger/network/BusPassengerModelLoopManager.java +++ b/OCH/mogo-och-bus-passenger/src/main/java/com/mogo/och/bus/passenger/network/BusPassengerModelLoopManager.java @@ -23,6 +23,8 @@ public class BusPassengerModelLoopManager { private static final String TAG = BusPassengerModelLoopManager.class.getSimpleName(); + private Disposable mCalculateRouteDisposable; //每隔2s计算一次剩余里程和时间 + private static final class SingletonHolder { private static final BusPassengerModelLoopManager INSTANCE = new BusPassengerModelLoopManager(); } @@ -53,4 +55,25 @@ public class BusPassengerModelLoopManager { mHeartbeatDisposable = null; } } + + public void startCalculateRouteInfoLoop() { + if (mCalculateRouteDisposable != null && !mCalculateRouteDisposable.isDisposed()) { + return; + } + CallerLogger.INSTANCE.i(M_BUS_P + TAG, "startCalculateRouteInfoLoop()"); + mCalculateRouteDisposable = Observable.interval(LOOP_DELAY, + LOOP_LINE_2S, TimeUnit.MILLISECONDS) + .map((aLong -> aLong + 1)) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(aLong -> BusPassengerModel.getInstance().dynamicCalculateRouteInfo()); + } + + public void stopCalculateRouteInfLoop() { + if (mCalculateRouteDisposable != null) { + CallerLogger.INSTANCE.i(M_BUS_P + TAG, "stopCalculateRouteInfLoop()"); + mCalculateRouteDisposable.dispose(); + mCalculateRouteDisposable = null; + } + } } diff --git a/OCH/mogo-och-bus-passenger/src/main/java/com/mogo/och/bus/passenger/presenter/BaseBusPassengerPresenter.java b/OCH/mogo-och-bus-passenger/src/main/java/com/mogo/och/bus/passenger/presenter/BaseBusPassengerPresenter.java index 69a68e377b..ca76a2a70c 100644 --- a/OCH/mogo-och-bus-passenger/src/main/java/com/mogo/och/bus/passenger/presenter/BaseBusPassengerPresenter.java +++ b/OCH/mogo-och-bus-passenger/src/main/java/com/mogo/och/bus/passenger/presenter/BaseBusPassengerPresenter.java @@ -126,12 +126,17 @@ public class BaseBusPassengerPresenter extends Presenter stations,int currentStationIndex) { - runOnUIThread(() -> mView.updateStationsInfo(stations,currentStationIndex)); + public void updateStationsInfo(List stations,int currentStationIndex,boolean isArrived) { + runOnUIThread(() -> mView.updateStationsInfo(stations,currentStationIndex, isArrived)); } @Override public void routeResult(List models) { runOnUIThread(() -> mView.routeResult(models)); } + + @Override + public void routePlanningToNextStationChanged(long meters, long timeInSecond) { + runOnUIThread(() -> mView.updateRoutePlanningToNextStation(meters, timeInSecond)); + } } diff --git a/OCH/mogo-och-bus-passenger/src/main/java/com/mogo/och/bus/passenger/ui/BusPassengerBaseFragment.java b/OCH/mogo-och-bus-passenger/src/main/java/com/mogo/och/bus/passenger/ui/BusPassengerBaseFragment.java index be8bdf559d..18ff81a400 100644 --- a/OCH/mogo-och-bus-passenger/src/main/java/com/mogo/och/bus/passenger/ui/BusPassengerBaseFragment.java +++ b/OCH/mogo-och-bus-passenger/src/main/java/com/mogo/och/bus/passenger/ui/BusPassengerBaseFragment.java @@ -13,6 +13,7 @@ import com.mogo.commons.mvp.Presenter; import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener; import com.mogo.eagle.core.function.call.map.CallerSmpManager; import com.mogo.och.bus.passenger.R; +import com.mogo.och.bus.passenger.utils.BPDateTimeUtil; /** * Created on 2022/3/31 @@ -28,6 +29,7 @@ public abstract class BusPassengerBaseFragment 0){ + if (meters / 1000 < 1){ + disUnit = "米"; + dis = String.valueOf(Math.round(meters)); + }else { + disUnit = "公里"; + dis = BPDateTimeUtil.formatLong((double)meters / 1000); + } + } + String strHtml2 = "距离 " + "" + dis + "" + " "+disUnit+"" + + ""+" "+"剩余 " + "" + (int)Math.ceil((double)timeInSecond/ 60f) + "" + " 分钟"; + mCurrentArriveTip.setText(strHtml2); + } + public void onAutopilotStatusChanged(int status) { getActivity().runOnUiThread(() -> { // 3. 其他过程直接更新 diff --git a/OCH/mogo-och-bus-passenger/src/main/java/com/mogo/och/bus/passenger/ui/BusPassengerRouteFragment.java b/OCH/mogo-och-bus-passenger/src/main/java/com/mogo/och/bus/passenger/ui/BusPassengerRouteFragment.java index 90903bfc53..01fcffb2b6 100644 --- a/OCH/mogo-och-bus-passenger/src/main/java/com/mogo/och/bus/passenger/ui/BusPassengerRouteFragment.java +++ b/OCH/mogo-och-bus-passenger/src/main/java/com/mogo/och/bus/passenger/ui/BusPassengerRouteFragment.java @@ -385,8 +385,8 @@ public class BusPassengerRouteFragment extends } } - public void updateStationsInfo(List stations, int currentStationIndex) { - updateArrivedStation(stations.get(currentStationIndex).getName(),currentStationIndex); + public void updateStationsInfo(List stations, int currentStationIndex,boolean isArrived) { + updateArrivedStation(stations.get(currentStationIndex).getName(),currentStationIndex,isArrived); mStationsList.clear(); mStationsList.addAll(stations); mAdapter.notifyDataSetChanged(); diff --git a/OCH/mogo-och-bus-passenger/src/main/java/com/mogo/och/bus/passenger/utils/BPCoordinateCalculateRouteUtil.java b/OCH/mogo-och-bus-passenger/src/main/java/com/mogo/och/bus/passenger/utils/BPCoordinateCalculateRouteUtil.java index 06cca86dc1..9ddb9522cf 100644 --- a/OCH/mogo-och-bus-passenger/src/main/java/com/mogo/och/bus/passenger/utils/BPCoordinateCalculateRouteUtil.java +++ b/OCH/mogo-och-bus-passenger/src/main/java/com/mogo/och/bus/passenger/utils/BPCoordinateCalculateRouteUtil.java @@ -5,12 +5,15 @@ import android.content.Context; import com.amap.api.maps.CoordinateConverter; import com.amap.api.maps.model.LatLng; import com.mogo.cloud.commons.utils.CoordinateUtils; +import com.mogo.eagle.core.utilcode.mogo.logger.Logger; import java.util.ArrayList; import java.util.List; import mogo.telematics.pad.MessagePad; +import static com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.M_BUS_P; + /** * @author: wangmingjun * @date: 2022/3/28 @@ -52,4 +55,41 @@ public class BPCoordinateCalculateRouteUtil { LatLng latLng = mCoordinateConverter.convert(); return latLng; } + + /** + * 简单粗暴 直接比较 todo 需要优化 + * @param mRoutePoints + * @param realLon + * @param realLat + * @return + */ + public static List getRemainPointListByCompare(List mRoutePoints,double realLon,double realLat) { + List latePoints = new ArrayList<>(); + int currentIndex = 0; //记录疑似点 + if (mRoutePoints.size() > 0){ + //基础点 + LatLng baseLatLng = mRoutePoints.get(0); + float baseDiffDis = CoordinateUtils.calculateLineDistance(realLon,realLat + ,baseLatLng.longitude,baseLatLng.latitude);// lon,lat, prelon, prelat + + for (int i= 1; i < mRoutePoints.size(); i++){ + LatLng latLng = mRoutePoints.get(i); + float diff = CoordinateUtils.calculateLineDistance(realLon,realLat + ,latLng.longitude,latLng.latitude); + if (baseDiffDis > diff){ +// Logger.d(M_TAXI + "calculateRouteSumLength", "点:"+i+"-------先记录点----- "); + baseDiffDis = diff; + currentIndex = i; + } + } + Logger.d(M_BUS_P + "calculateRouteSumLength", "点:"+currentIndex+"-------是最近的点------ "); + if (currentIndex == mRoutePoints.size()-1){ + latePoints.add(mRoutePoints.get(currentIndex)); + }else { + latePoints.addAll(mRoutePoints.subList(currentIndex,mRoutePoints.size()-1)); + } + return latePoints; + } + return latePoints; + } } diff --git a/OCH/mogo-och-bus-passenger/src/main/java/com/mogo/och/bus/passenger/utils/BPDateTimeUtil.java b/OCH/mogo-och-bus-passenger/src/main/java/com/mogo/och/bus/passenger/utils/BPDateTimeUtil.java new file mode 100644 index 0000000000..2dc37cd2ed --- /dev/null +++ b/OCH/mogo-och-bus-passenger/src/main/java/com/mogo/och/bus/passenger/utils/BPDateTimeUtil.java @@ -0,0 +1,109 @@ +package com.mogo.och.bus.passenger.utils; + +import com.mogo.eagle.core.utilcode.util.DateTimeUtils; + +import java.math.BigDecimal; +import java.math.RoundingMode; +import java.text.SimpleDateFormat; +import java.util.Calendar; + +/** + * @author: wangmingjun + * @date: 2021/8/20 + */ +public class BPDateTimeUtil { + + public static final String TAXI_HH_mm = "HH:mm"; + public static final String TAXI_MM_dd = "MM-dd"; + public static final String TAXI_MM_dd_HH_mm = "MM-dd HH:mm"; + public static final String TAXI_yyyy_MM_dd = "yyyy-MM-dd"; + public static final String TAXI_yyyy_MM_dd_HH_mm = "yyyy-MM-dd HH:mm"; + + public static String formatCalendarToString(Calendar calendar, String format){ + if (calendar == null) return ""; + try { + SimpleDateFormat dateFormat = new SimpleDateFormat(format); + return dateFormat.format(calendar.getTime()); + }catch (Exception e){ + e.printStackTrace(); + } + return ""; + } + + public static boolean compareDateIsCurrentDay(Calendar targetCalendar){ + Calendar currentCale = DateTimeUtils.getCurrentDateTime(); + String currentDay = formatCalendarToString(currentCale, TAXI_yyyy_MM_dd); + if (currentDay.equals(formatCalendarToString(targetCalendar, TAXI_yyyy_MM_dd))){ + return true; + }else { + return false; + } + } + + public static Calendar formatLongToCalendar(long time){ + Calendar calendar = null; + try { + calendar = Calendar.getInstance(); + calendar.setTimeInMillis(time); + }catch (Exception e){ + e.printStackTrace(); + } + return calendar; + } + public static String formatLongToString(long time, String format){ + try { + SimpleDateFormat dateFormat = new SimpleDateFormat(format); + return dateFormat.format(time); + }catch (Exception e){ + e.printStackTrace(); + } + return ""; + } + public static String getYMDTime(long time){//格式为 2021.8.21 + try { + Calendar calendar = Calendar.getInstance(); + calendar.setTimeInMillis(time); + int month = calendar.get(Calendar.MONTH) + 1; + return calendar.get(Calendar.YEAR)+"."+month+"."+ calendar.get(Calendar.DAY_OF_MONTH); + }catch (Exception e){ + e.printStackTrace(); + } + return ""; + } + + /** + * + * @param seconds 60 + * @return 1 时 + */ + public static String secondsToHourStr(long seconds){//秒数转成相应的 小时分钟数 + if (seconds >= 3600){ + int hours = (int)seconds/3600; + return String.valueOf(hours); + } + return ""; + } + /** + * + * @param seconds 60 + * @return 1 时 + */ + public static String secondsToMinuteStr(long seconds){//秒数转成相应的 小时分钟数 + int minute = (int)(seconds % 3600)/60; + return String.valueOf(minute); + } + + /** + * 有小数两位, 没有小数保留整数 + * @param d + * @return + */ + public static String formatLong(double d) { + BigDecimal bg = new BigDecimal(d).setScale(1, RoundingMode.HALF_UP); + double num = bg.doubleValue(); + if (Math.ceil(num) - num == 0) { + return String.valueOf((long) num); + } + return String.valueOf(num); + } +} diff --git a/OCH/mogo-och-bus-passenger/src/main/res/drawable-sw320dp-xhdpi/bus_p_map_car.png b/OCH/mogo-och-bus-passenger/src/main/res/drawable-sw320dp-xhdpi/bus_p_map_car.png index e0d3e2fce5761b9a5c2a32be74ad027596ae0dba..17beb894a6ec6684991480e774f614203b7a943a 100644 GIT binary patch literal 8826 zcmV-=B8APx#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91QJ@0=1ONa40RR91f&c&j07Y}FH2?r1)0&1y-gc#9k;v=?urB#@rg_gEc=5=3l?>T-yYwz`&b@u#z=iGUm`v<%Io%LROukTs=_xqj4 zJ=06G8@<`3KCR57(~52hKHWmM8oyP)mL;AM)mDMqs^8e6PPVvd{?qJZlS?>R|2n=+ zJ{cgU`A)Oj{97qvlFuZY7dXvln%(nEqtgnWW+(q7pHADP0?xFpD_@s>8fdk>tH_hp zPXeFiD{Ib%-rjU0=|P|Iz) z+Q((5F~)UH+iXz>&xrn6Gyd2VP}EUw<6T!%!rOFFU#4jMTyA{gVk7U4wJyqSyz5St zcFpVhNWFM;ZM^HCk&phhKH6%&Q}$wUi2O9!eJ9a2TbnM<<#u#FT;~P59_l)$u5&rk zF5Y9>Xw<Ib9!Zu8*|lYk4$4 zqY(?pn)XNci?rt3WOROz+4<<}`bgp1h8K>_!RX@M?lH{iJTY;gce~SQZ{;1tX!OEd z=W-j3I{1@0$RGV(jugIaI0%u}JaX63meX~_u&y@hK5jR;4McZ@;v9#|(3*Fh(|+-B zc^YLN_km|1$3bB}oQIyuG4we)_faa#~-~o z2hJ(Lz!O(fYz%D9*Fbj7M;!S&M^`6$LZ@vBu*IVdB-hoHIM?-l_RSYwbi*}^mt1n; z;Jm%(49-7mXMcCUmlo#-{rS1M(IWF~4%50Fo5S_B^>p;t? zKmTFz%-CC7U%&mxkt1JPTwI)6SXh{wpC8S=>(?*3;U(Aac=_JFbJy)!7+o_rmv-ZS zQllwnq?ZhHYs;&>|2=dhJ@DYZ;oWcjqeGwkulrVytgo*RHTTA@ojc#A+*fI_Bcb-b z0|ySgPci`32U*cUyAGMm*3hm_!~uZXhJ%UCd8mOo91a&X`}H2!>-Bc+-o1P9jA!gv z{EN3=`lhQdAN<5%u6J&;j?t!A9X-}g8rBZg7{P1wioS>@_ljR{PTu{+T{{NP+qHA> zyo)dB-TcxQpR@Y-lcSIQ&U@D0@i+f`;Hd*oJ$1FRyuiYT!;8t-aY*fxH$b7AI3kE; z<(>XMF%Hgm(I&~<+}z+LH=K9&U)*uQdv+}iUTAk!Bk%?^?ZDAm&ZY{rP1BL(g>-af zkdAHi(#B?Ahn}6elokfVv@owjba7#r=8cY$o)9_AE60+K1@Q|>_%2;^{>Bf#?H3kq zy7sEG-u$a?InW#V6Ow0R0Y1vJ(SS!yuEWQ$FV1c&VkQy9F+&J)pxlnkaJ^IOL@hQh zFfA=D4L95}ZYw2r`KAP56SJJU#8)>LB7D)iecChi(h1|;(m^d;y_4?_N zuMg4_hjyexn|sm?H{ELbqel*=qX+&oT`>4iT1byw`Yqowc>J-iHz1PEfpgGYw&|I! z9Qfu1z;z656bryiAR|&w=HNsb-3f;-9*cv);2I(E)N7M3=qiJ<*B@G1@ooGvERxMrET`??-E>!oKAYQGC zuBZE;zPfRKVP4?vNW0EDEA8B|GwnHdZ+hML|6scATfZ%(M}9JGtn5GViXUHo&Axs6 zj_%*TpOXe{84pg-$k6&=5gh3Af--IRw(Trm8?4#Z9pu6`#C_UmpY!8ff3%zZdH85Q zz2oh_pT6+G18H;Pn7VH@t*orrv8fK+9B%6VBd^Q0EpaaAwVXG_0d)E(~h_Zxi^!- zH=_&0#-T7wRu9+3g|I+mquQ>$G#ri&9bQY{`@&Ir_lK9$DwwM4IG1e*%#rR9`j3f*VhIlH8PD&A9!B^ z_7lcdK_swF>^h&crhP6JBc11N{pCl}AOH3<()ZjjN+12WKvQ9y1053ULPh(z&l6|B z!uimaP|lPxf-zBbJb>=n(N8b?cHKAf35cGs<>lp`)l~}LOWomRD%5a*c zDUVy}#5$=@&^EE_yc?l*8^YE1Z|_=8KY7c}^yhzfSZ8($%c*$GTQbXb9?N@`aP!Ky zIDQ_?Tf8g&*_X_v7hSiIZochNoqK&rwvByVWuh_gqRyxF;E9bk4Mb1uNul-di8`p( zEz6wFQ};b|EdAKc^XbMH4btD=qwPh6Ew8N6fh)H%fSGT1e98j6$2rYOln+HpKlrM> z>9Hp^(!YFaC986JjP-$g4uTu!v*!3Cer2J@m2lHQ9QQsxNn8v*aUmXKKDM1z9AG?k zFu(Nr#UJ03&f62$6T=HoO{cnF?c>wb(~r^{UvpOax6iGnp03o^)p>cgp0d`+*9qEW zbe-d5K_pSECMJ#xi@X5{h`J}X@avzml>XqCFH$DCdDnR+$IxYHtutKpFd_c2CzrKQ z?jiMRP)T@I{12Evso(xy5_@sY$$L(*-^*%VluT_`zl6TQ(M|*S=Y@X?{V$A zRQp`dwepI(7+*n$Yly>T^K;8x7EwrPL)2A7YetefAfd*r#S7v3Xma{wm&;G7(uT;9!|?T@^7TetaBb{S*UF#Db|#T8pe?D}jPhcHLi&2=+Ab2pZ)6urLIoUe zKk^i+V0-B-+T)5U(0OaJ=XzXlXKHLsjuI~$x9@f@UE+Dak*9_KHOAIun(+thJ|geB zPI{^!#)NUg$m3%&+ls<%JJT6@Sw>yfnQ*e}bCR4h8^nt-5Tqvrs{l2zLkAtJjyP%=TbnM%wDM;HM4vn^0KUk18`}xqJSkG8S@CiKG(Z{Yvl5FE zGF%8~JHDXNQ|oH*Qc)tsdE?ifJ9k$!KpjZ2}~RE!$UAgj|QJ|2pszqLLznpP*&4%t+Wp16oP;2 zaD&rUr>!by0b-n+J#5>`I?k# zrR%WEQ7$)fxGqEa$?TFZ1MA5IsvfCa$Faxoq6_c+`rHL#P%^5LsP>GElUZ$#jankSC{ zdw`kAm_3MEHaE!8`3*$~nc(WNZtFKli4yGb$=};~1UD zHZ_z~Q~>~x0L1{IbPW{TD;hv305Vg%aTnVY_!)5A)y+LVJshSRzkN}MzT~7)KF&6N z77yD1VoE>rn+NrV>@eN*9gFGBuiK%bIMV^9K;ke+^V!dUlbpY52Wa{HmR|+}0ibiK z0Wd*oH|g>>bUoi(y7S{}>BE1^`(Y`4@OSkN&kV=xK~!-Me`S~+KQK(szfyug%K)lw zz@&`~NVc3RwnI8yF!IZ|3^u?Sz{HpvV3sa!V(7|z5qt9KVS3=p`JMC}Fgp}y4YMg_%xn+Kawji7URgg#n#Wz?aQ0Hgu?6SnP@>7jn&TY#WI7 z1}TMlu>it=8cW9^J17{@@v^4)0=86!34Uy6&tq<~>%6G%ky%Xh#F1)-V_QJXZ$9LL z*~xNvl&4wZCvJZUF2~eIO8^nmu_lfuveYT$Q$87*Hza_;R zvId5_$^()x&$a{r4oz=c8!#j{;L?%4n9{M>4OH0-EbcqMhO?48RPlP*iRjv)K(bFWqdIqg_1mYih{`yqn8QM=mA+sga)uK6h8lY!+mDKva=@b2WqD7X`|39p^zn7Ug_rNK-qvDpEKO)`^NS%t~wlkWS=vG+&;# zix_UQe6an-T!T!WS@*ZQB~C0PkyN z0{l421xEr~dBP`t9(>w#TRJg=5Y}pFAm_?~&~8mi%W=D7c!kc(f1QzmEnjs|I9|CA z{7E5e?&^HQ{ms#d>a5&_`DU9U)gyM~ty{VcAa!6fECCQO>8!$My%Lbqz#~TgSx4s1 zG`-E4G0q?|>+D8;8fTYZnN=3ARse*pYJ=i6kR2?E0AS50&OA+k3kTh2+nEGKPi~~L zmF*?9G;?~l{F|c_bzLw3t*dgk0icy_7ZC}7BD-CkB{B?Tbo#GAS`6q)SK|cGI_O3} zM*?P^Q_mA8WJ{LAXYsf#=S17Qss%83jZ1+57Q2K_$}jy&cS)9;J>>07`2dzd1()Uv zQihUjIY5$GbN-Tp=vj?z*v{S+Ohuu`J0=U12B=i45hx!zH2}K4x%%SFlR^uY+)aFb zg7Vc_wi$QgHh`#7b?)Q#Cf{!4PRzjBUN0a>BY@D`VdOZlP1pLKHQ>udrMM|`?mnaB za~X7JH?{>td+l5bq$zB(m91x`mG8`1!*EqFrg0P+1+45~AsJM$1wdl#yqXyh%ojAf zn7NaMp7DomIVVyu=l5K&3bKNc;q#WwS5{D>U^$nLqq|I-!*Zt)Z{hgi&!K@5-u|Zx zVQ1ebvjx6JC~_Sb&4KsIL9Y^#v4-dHwq{KUVKGIGT14? z{mPTV-|~Ii)%rW=fil}XWr7)z*@GxJ9(kgtAIRvXb9M#*OM~zSl)M75TN!}SkwF!M z4>~F6N3P4fsIyxkw-r=PCmu@If8%gU`}M~JmJM)cI7%rqoI$BSeP1u#^mp<`X8Obxl zu`Qiw=fr|bK8LC3*d1P^ZAVpW$N(0V+k;W#%s1b{V9j<}(9?qYZ3uGb_Y?7xF3x2! zXZB&+K%@?9dyt@2N?~kOHmVKNXLD{djKxM+_8NaQmtx`jBIMVgGr23s+dS)L^|&qD z**cLf@rwum7I17Evb7x{+vd_DmxJ>m;DC=|&&@UQ*yF&V=&~i_&ucta8Fkc*#T4|urh!Sxb(8qfo1 z&PBf2jM;;z8tjuk3eq{T?9F_B6mrzfpvP=bw7|*lZez?~Q$tDdS_b`6P=}Q(n>N!8CZLFMz+RofFX;42T0<` zDHaNT_?y<|;f>kc?YPZqoXHCda50=Vylq!NvOTLxt!UgbZwT1eS%E^sOzCyYDlFZUm#^0s%09&`-YPZCGsTIs;k0fJ~EGhjLmVgdB=9 z8}VveKaU!(F3hi3n4>%^V#_F#xM;LZ=MIx>Q-6(wU|WG_>!A3>i5gkJjb8FR{mhhp zn&CN@@;d}F#e$o6BIrzjz-$m1*yb*!U&VU@*WM~qoV*3DuEhH02^0F01HJsBQM&PZ z*|;M(KALqERV|}N*EYKJQ$ehgO`Ei~+r)2pseTNjjPg}MbFw=uTAr7Hf!3siirzjBzazasN?&9cBUU*>IXMHBhPX{*f1Y-g{8-0=0p zQFgm1g{nF$oG3o%cD+yBthvl6 z`*;oLqs<()^3Vk$$(q?q@+f<5pV%jlvh(S^f469F%0Bzz&Gc&hRv5!Nj}`%Aun-7& zWV?YX6)y<^gV4@BP9ced_*P-jBY9AMYFku~}Qt zCYQB9+7W78Ek-_EI6yWP;ANA&Ex#m}FLx7h>&_ja@-ooCw;9xw&D*_58&48&$J z`3EfRV&rj=s(tgz&F1-U)>IbiGGgS5dF!MN#7WV%{1yjaL>sm3$bDjd1)**fa#k8G z11Q?oc_Gr5lO$K+{7EVo9X$c;=Mv`^o}5E^`DUot`gw^Kqlf1H^f*wyMlT}=xRhy| zZrmeCleRO7^4g9kM)nDye&FH!IF;mu*nObnA)UpEj%?bRY}t{1+0*KulLNrYX6Hk? zt0d2zDhRo)v2K+Cr0q6FI?k~MbOx1q!;sO|NJ0*m+bCh^eK_yb^+v~L8M9=;gPgjH z%h0yN7do`5;a97=S@qq_4Y^K+PpB9S0y}zhu zhR)|aT!ycyByHA>IqFKH)wQhi29oS@@Ws=8-vAEKg36Gl0CCa+dyS2fHxf zVp~~TQE&D4^v63R{Qw)-S{I7g>SDVbw2>y&~Fgw_rloH)}1mc(JuZe z0!xT533F7De4S;D#lzgj_^g?%KLNxTMVe;-`@t%;i0T9;Mkw>4&|$#QUz@DE%~2+`7r(EV5fc@&zEoD z)*sjL^Ur3}7G;~7U9b7v@7iZ>rfVz-Y%{4E#yxKs~oiMfvVhpS&t7R5Q=Nf(D8>{!< zeB;W?pL>~pBhftt&|BWSKfU{7kLzEmnA1N8GN-S64AT7kzyO(_pEnts>18uNe2mX@ ze!gGgk>}Fq|8FV%(i;!zpBu@`ebKe+>HNLJw6?MFU|A0EsxVK zEHT8BwM~MqUXaP}{P34QcFi-79nH83TLJjFFCI>Rc;_Q_j`L6Z@=GKMtVm>$OT*x`n<%*9! zbq7cmBZb|N1-k-uKiIt%;Lm+u`71a~{CpBaI-!Gw^8ugJ(Ekk$0Wb zQvuR|{jJ-tyZT4J?^(B=yJ!A|^Zow0f}1aSgc6G*yf_!)abntBl3t+^!tjUkW z0G`J>fY1n@$2-NJ;c-qKJmd&S1jzMH@r`kw%W2y@*jmRl5L<(!^n^aC1Lyt}UhA;A zKQw~pd;}4H2N2#z%mL3lP8}Gh4w}o6)_H2#=bK8~KqMK9cS;iYdbp3x|(_p_jftY!(3BGTPJn}O-hc9#Q+4xbB}bs+ojxjauz$%QV`$k(?= z`_|yq`NvKbE z-gVHe02cjYu6oW|cHfCtXPms4$dkKuSJ}yt9(FQ+B_MGnHGPG+rFxZ`UKwMYrYq`zObx?-KOyVbQXUj6-fe9$Q zjn-kcj|0|4>-a9&i=0HGE%M~-lB2C_?nduLG>X7PTjX)+l3jnQv@Lg7(irOipmhFJ zY0Odcwd`}Cx8cRQ9BFN06 zV$7)sUA|p z(yjP)`E==HJ;qO4>!mKz;@167kt`4)d{2g|5KynGylv$=>Px#07*qoM6N<$g3JK3O#lD@ literal 7725 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 JN(Hl^{{d$KE)@U( diff --git a/OCH/mogo-och-bus-passenger/src/main/res/drawable-sw320dp-xhdpi/bus_p_mogo_nor.png b/OCH/mogo-och-bus-passenger/src/main/res/drawable-sw320dp-xhdpi/bus_p_mogo_nor.png new file mode 100644 index 0000000000000000000000000000000000000000..3f938990f6b5e0c01372ae80c450bcec7e564d43 GIT binary patch literal 3338 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 literal 0 HcmV?d00001 diff --git a/OCH/mogo-och-bus-passenger/src/main/res/drawable-xhdpi/bus_p_map_car.png b/OCH/mogo-och-bus-passenger/src/main/res/drawable-xhdpi/bus_p_map_car.png index e0d3e2fce5761b9a5c2a32be74ad027596ae0dba..17beb894a6ec6684991480e774f614203b7a943a 100644 GIT binary patch literal 8826 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 literal 7725 zcmcgx-~Fxs)Zz|gdcoa4_DhM5)6h(o-_(~q&nW|&oD-?eB}er=TVa%S?ucAQpcsxL z{wzs7-T#MSH=D%6>kYSTVtl6B{g+tl{?TV~D#EZFJkwaEO2|B8tddL3Kk?GpfImoZ6ucws93syp89ufu_1*C?oE+gRiaAhTEL9L4%<%Si0@re8 z?=XN86~$)6j`T}6racm2c>1K^Ywdf*u8c@gQfEe{V|3y4*qj#Syp=Giz_wzhnezDE zSK@a&)5l00=~6*a*@?Af|9x$M3Aio0JL_3}BV7s%y0(li#Sse@!fz21mjpgr9-1X^wDz001NR{Zr16UraDlYi(2l>&7gQ@{n-! z(1%$=aa>$|l|Udw0TUq#**kcwq9Ty~gD%9AdcC((5*D0dA2Vg!$OdKA8_5OmMtFV)bk z8Z489i8}QdyBr275-#Q>CMK$lpyryKO>O-B7cW(qeXDsq+`7X%wln28Vtu+pSG>|b zi|-dwd59eHm1=1 zQ1uJx$pw)7;7J-rU#lhsq8nAgwK!=dz@)E=2`peArW_y&V#olQA8XrogIl-QEeDW_ zO)1&u>k+42@n;^sHN9O*yIyx@7QTHp=lKO&ZvNu!m-#b`JwaX}qgDpSdyK|Lt%p&j z_t(cNi@rPY4>Y)ktwQN2ocKV$F+4gl@_ zOE<|j#z%8NqvPxuOoWE)+4q*yB4;q45N|oD%nkaf6cHr#DU&K%gAG{!C7oNG)>4r{6>ZVqh~PV^~NXZpK%Ulj=4 zRv->QzL$r`gNa;r_{O9q;G`9twL*&AK-b7!^zxnjc%v}f6;4;}2@kE2u#JA~6$FHD zzq5a|>hrfj1Ji2rVkpq!!>bYbl0=WHNfPrJYjQe$8^8K4wb~~-Lo%;kL;Kzv85Y>m zbbJKdyg+TvPGJpgBf>>s#JG%0m#CxKC?{!nVAISFLc!|1w>_Qjy7^>I$G?ybr5q62V?&s` zky(L#8Ww~du958$qw92myn=q>dxBzNqJ4M-HkJ1U7xP(_SABOFpoxoo%}(*mj8m(b zvUPjq{iizStlWH;DPH;X41gn;U73Jsyflg2ZMM%0E9ugct&X@wKTXZ)*YaYe#muYO ziNL#gdBgoe4o3gtY4opO%97kU1b`$6`gOAF=kalz80p)K`V5W5Pg&C20})Qw_p!PY zES;OS*TbC!!r#yL7ZQtYnv2dRaAajNJD^A=OzWm`4$OD6*2CqTf5vMg;6jwZq*S>X zEblEZ;UgfT4IIfNeT-xhUl^>er$!XZW$N)-x4niO+)h%HF&k<)-<}*4W-Q%TcsvC2 z{RBktZ1CU_ntN@$D-s4Km{+aLc_O{=F1Ju5O7fCk z&oh{wSn2AY`{kv*<`XN9%D&C5!g*Mk6M1X0X#vJaRCNITF6*M~e4bYg3J+e-8WdFHu@`UR1jM$d}c!;^YrY-S~P{@ZkLAZPG_ z*i~R%-BH|W$|PCqr|;2oFO_7bCZCm+m0>1-=wOf+3n@-_L$VrUa5qlrzq9ZHM*XeZ z1US`?HAbv7Ab!6E)u`f`SqGz zQvSveW9ZJ7u31z>(Pjd?dWez6?^J&yUWYN#DgGnKfo5lxO&2{mk&tcQijfgT{8(E! z-I?BEGiXW~-0$z0?%YrV_%Ao++?IMHIKXnLu95Q~;_$s_SBAWE40cx&oO;Wb6?<9- zESOe&raa>2ocwDlG#ghn+S>Uw=M?TvapEK`sOuxwK%Trbp@nmymvQ>fl5JYWzHi6V z+68C3K41H4DfG%klU12zW0supZ*wOcJ|EQHUNP1>tsU~5dYY~FR6~S$;ovxcJV}-t|&U%#n zydg=`*9p*qU40^4Qc9m{z^nQq(}=Y#B?F5Mlv{kHk9*T45LENrs)m7~w7vbIf0(knYuICz)vs2nzug zgg*Pu=1C1_wL4;GL$JdO7aGdG+1SOY^O1_4$-(aF6L*a~D;+2o@Uf8g?(X9cOW4(; z*+ zQjPnZ@S`StmgI+hc!G@MH1jPioA+dKPvh!$A_nfB%Wd$uF=V#x8|CLVB9mqHZ@~*g zH6Icdo*(dfL}BI(^9rK_F@*HnVyIc{XTn0zYn$sovyRxIV=s14YWCOnxpmwWuR?SC zvKyk1yOjfglmTogltOk%f?I5eG~N0GDUC_j$EVo>CW?mLTJ&tt@Te)@6l}lGDyRy1 zfgunVz7Hu%s>GqIq2yWhV}p)kCtFD5YJc{x@2W#oZMeQzBr-unZhYOZAdlRRyY?UH z=;eDA?A|FbZ_vQP^dc9w;rEgk!A_GS3h0y-Q5zI*O zj9Pvc^R|ETy$y4Npz(TjavA^t!x<~2NT(_D(ZX?rG&s+50wK6%Ypu-1yXx!RaTXQv zPQo=O2eQC8o9EhkEN+woL$thRS3nz)K>f)Ns7rE^^;VV)`{8nlw@+sUegbd@*6DJW zjTSCxhOc|#GjOKjm?eWg!k7zXnEQ%rn^6q`k=o(jQ_P2o0{lNkin=*DPtSR(UYOxj zxze1|d^K9^XOMElrJ)n0_wB1?tX{IefCH zZIQv>1I1yoBOi+-9ya9a@ilbTZ{OH1vh7;ydUK_y+bP;3>RDc-Iy!v~+NT{T<6^z} zW5*F4`SqKx;(Rv6FS1ugPHZ13)j#a5iu`z`jEFN`)m5%7Z$3p+xYr$iCgiIOX=%Ol z++Cqy-pRGp2mU&f3c8uU??KOMQG|?QknVK;Q?H^^sH1<+Hck(W`LBFWWt^vPa z6%gNq_o(PNSiLaKxOiL_a7t!VM&W^f_b)}SxkU3))X>m6!bDuxN}u%|l2BtfXJV+W z34OdIT4|sH+cvGAxQXh>r4WY^{r4vhw)$I5_B#=hl9LW^@^wjofZ5gac)ybD4?@wV ztVG2H7HLE&U6I1UA`5u{Q=PDRJfNec?{PPwjGNJhM$cn~Qr}BQT&6!Q*yQ=+YA1Dz4p7mC z_|tkj%0#hc+TRFIdw&i;&X})=;=X@v5j5vtI3(RQxFg@~joMfv$9CZSA0dZs4esy?SsYN(k zH2e&ok`>T1(Imm|inI%VTe!@dN_KNEKV>mTC1a7Op%=COokvhit4!Q4ZEfI{Qx2`x zjdYMz-SsJwZ-db){7q>^)pLhC%{r++FgaCvF0D!?iY_QhaU`s2Rirus@YnLe7(r7& zp-7VaLbAPEsSA<6N65_37HAW=i6b1RChOs^!b@mIx-S$^~WO4bNElC zn>jA4^h3y3AE!sBCqW>H6)(CGze8Pkrk_=NBjxX}&t4^{zz6-ItzBh$?v;-?H(wFU zMKnuruOUzunQ8gSG#bGLl^xVw{NcUzCeP4i%P}@Zot&}bSRS4*(5(pOqs9w!7&Q?B`30xBb-(7c?PhH$#9SN$iRica8L@guhn(SbBU zl%bDaPs>zpsvciZ9g6PhfSTWX&}W%k>5tWg-p_PfRqA*Tyfx++c_+BQj)tD+m`(G; zc%%Wt+csa^?VPM7jeXgE{c$Xe4cMQ2APf}xto|tqhVII>5_jM5nB`{isNlF!=j{U~0_eL?2iwH}D;TjzC_mVu>po*jEFE%D3asus-{~@@i?NnI~ z6nbzFyJa>vaSrFYY-LsXEOF`NWH6 zYJmPKmCmOk{}ap&LC4$J;v(gw1{aSnfGoQCw{E|p4{9!CRk{&>c@^#dCEyBOrAa`V znW(FEp99TF+$(erXu449v%aDV_N|THq|O|4N&SJg+XVLfE1>=GZxS|S{cQ3*Rh#__ z7t9YS_EqV=+KmaVBB}#T2bf|GWUHi<(cw4nhUxiw!|D4wBl}M+DIG3)EdmR!HZ)8u4^g3?476&)oTe8G|gAZ+|KIn%5ZGJKJxv6H6uuefwc;J=LMP zT9aQ_8eHa6!C~4lZ|9a%IS;=vUf?l7sl*k>(l;BN?`B`J_#&&|d#Dz4)%9?|aB-qW zRy~9tfZa4je%$lY5=x{NJeTOIu-hE2KM z`d3us!OnWI_w-F{aofI$)`9;}p2uC?)Wq4?cvYrUK;ne?0=ox5-_%s%>bG-c=T5R= z>{3U4eeVUydQEobBajreJPV2>EREi^elFTNUI7QIjiV1!`)+FQX)*J5YJBYo|BWOw|I)Ay< z73HNA2It@tl7Q$m)oS}*`Za!GgsjBK(?^GMf!P)Z?5p%l9#_$aj8_8XzKw>E7hEbp7ylUf56@#)77B;G10r0 zxuZ2C@RH}I#u9lcThi?BN4iEMTe%{WKNj9LpUdSzT*r=zfNDvR(N>ut+pE{Qwh((9 zv2nR+(e&2)`%=(Vj_797hC@aICy4Tw!(uhBWno5Zb)+i3@$rb(usKF>fGuh&n3cym zWXpTpBKI(N91kMplB4hju_A<;+2hz47|Tj!ij4!w0lNpHn&;N)mtT@SpP|U7qB*n>XJ%_1kS5;}H=6eR>YBe(zb1$8%R&KJT*K~% zi<6cgan7El=jOD{Nl1&$J8?|HKBnd?imP(b{5j*O>OaC6Q|S#mGHRSNd-0BHAC&uM zwEKwAz5@*wJnmvp(Q#v-?u%}vP+7v53;tr?KNlUlk_#OY{vHd4b1%IVS1MOomtbD; za=lf_XkKLXH?@(9DEAB-=Vu^jC6$-h7d*a}Cukq|0$MhSqb)mOWOrwzJu(oBR_=GX zp$F!%SoCB8Nv5t5TiovO&~nk}&6;Kyx{X4tk2VVR)cqx7mQ4&s76g`bec2QR)pqjM zIV|D%5ItL5tQ`yATWx3;V7U`NI3l%-zcpeXa}C>y4kkPKTl>?FrlkS5igL76Pk$E1JUbs=!@fR98zooKojp+wag0aR_`iIzVHx3K=gj~AWU`*lds6uDfk9=^iJQjt<$t4EH6<;@ JN(Hl^{{d$KE)@U( diff --git a/OCH/mogo-och-bus-passenger/src/main/res/drawable-xhdpi/bus_p_mogo_nor.png b/OCH/mogo-och-bus-passenger/src/main/res/drawable-xhdpi/bus_p_mogo_nor.png new file mode 100644 index 0000000000000000000000000000000000000000..3f938990f6b5e0c01372ae80c450bcec7e564d43 GIT binary patch literal 3338 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 literal 0 HcmV?d00001 diff --git a/OCH/mogo-och-bus-passenger/src/main/res/layout/bus_p_base_fragment.xml b/OCH/mogo-och-bus-passenger/src/main/res/layout/bus_p_base_fragment.xml index e49813c0f0..f524e06002 100644 --- a/OCH/mogo-och-bus-passenger/src/main/res/layout/bus_p_base_fragment.xml +++ b/OCH/mogo-och-bus-passenger/src/main/res/layout/bus_p_base_fragment.xml @@ -82,5 +82,13 @@ android:layout_height="match_parent" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toTopOf="parent"/> + \ No newline at end of file diff --git a/OCH/mogo-och-bus-passenger/src/main/res/values/strings.xml b/OCH/mogo-och-bus-passenger/src/main/res/values/strings.xml index 34622a5bc2..d142ef29fc 100644 --- a/OCH/mogo-och-bus-passenger/src/main/res/values/strings.xml +++ b/OCH/mogo-och-bus-passenger/src/main/res/values/strings.xml @@ -5,6 +5,7 @@ 到达站: + 下一站: 始发站: 请携带好随身物品下车。 欢迎乘坐蘑菇车联无人驾驶车。