Merge branch 'feature/feature_show_dispatch' into feature/feature_mogo_obu

# Conflicts:
#	.idea/gradle.xml
#	.idea/misc.xml
#	OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/presenter/OchBusPresenter.java
#	OCH/mogo-och-taxi/src/main/res/values/strings.xml
#	app/src/main/java/com/mogo/launcher/MogoApplication.java
#	config.gradle
#	foudations/httpdns-mogo/src/main/java/com/mogo/httpdns/mogo/MogoHttpDns.java
#	foudations/mogo-aicloud-services-apk/src/main/java/com/mogo/aicloud/services/socket/MogoAiCloudSocketManager.java
#	foudations/mogo-aicloud-services-sdk/src/main/java/com/mogo/aicloud/services/socket/MogoAiCloudSocketManager.java
#	foudations/mogo-commons/src/main/java/com/mogo/commons/constants/SharedPrefsConstants.java
#	gradle.properties
#	libraries/map-custom/build.gradle
#	libraries/map-custom/src/main/java/com/mogo/map/impl/custom/AMapViewWrapper.java
#	libraries/map-custom/src/main/java/com/mogo/map/impl/custom/uicontroller/AMapUIController.java
#	modules/mogo-module-common/src/main/java/com/mogo/module/common/datacenter/SnapshotLocationDataCenter.java
#	modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/AdasRecognizedResultDrawer.java
#	modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/BaseDrawer.java
#	modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/entrance/EntranceFragment.java
#	modules/mogo-module-service/src/main/java/com/mogo/module/service/intent/MockIntentHandler.java
#	modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerManager.java
#	modules/mogo-module-service/src/main/java/com/mogo/module/service/spi/SPIRealTimeUpload.java
#	modules/mogo-module-service/src/main/java/com/mogo/module/service/status/EnvStatusManager.java
#	modules/mogo-module-smp/src/main/java/com/mogo/module/small/map/SmallMapDirectionView.java
#	modules/mogo-module-smp/src/main/java/com/mogo/module/small/map/SmallMapProvider.java
#	modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/warning/V2XWarningMarker.java
#	services/mogo-service-api/src/main/java/com/mogo/service/adas/IMogoADASController.java
#	services/mogo-service-api/src/main/java/com/mogo/service/connection/IMogoSocketManager.java
#	services/mogo-service/src/main/java/com/mogo/service/impl/adas/MogoADASController.java
#	services/mogo-service/src/main/java/com/mogo/service/impl/connection/MogoSocketManager.java
This commit is contained in:
董宏宇
2021-08-30 11:59:44 +08:00
77 changed files with 2068 additions and 151534 deletions

8
.idea/gradle.xml generated
View File

@@ -4,11 +4,10 @@
<component name="GradleSettings">
<option name="linkedExternalProjectsSettings">
<GradleProjectSettings>
<option name="delegatedBuild" value="true" />
<option name="testRunner" value="GRADLE" />
<option name="distributionType" value="DEFAULT_WRAPPED" />
<option name="externalProjectPath" value="$PROJECT_DIR$" />
<option name="gradleJvm" value="1.8" />
<option name="gradleJvm" value="11" />
<option name="modules">
<set>
<option value="$PROJECT_DIR$" />
@@ -22,8 +21,10 @@
<option value="$PROJECT_DIR$/foudations/httpdns-base" />
<option value="$PROJECT_DIR$/foudations/httpdns-mogo" />
<option value="$PROJECT_DIR$/foudations/httpdns-noop" />
<option value="$PROJECT_DIR$/foudations/httpdns-tencent" />
<option value="$PROJECT_DIR$/foudations/mogo-aicloud-services-apk" />
<option value="$PROJECT_DIR$/foudations/mogo-aicloud-services-sdk" />
<option value="$PROJECT_DIR$/foudations/mogo-base-websocket-sdk" />
<option value="$PROJECT_DIR$/foudations/mogo-commons" />
<option value="$PROJECT_DIR$/foudations/mogo-utils" />
<option value="$PROJECT_DIR$/libraries" />
@@ -37,14 +38,12 @@
<option value="$PROJECT_DIR$/main-extensions/mogo-module-main-independent" />
<option value="$PROJECT_DIR$/main-extensions/mogo-module-main-launcher" />
<option value="$PROJECT_DIR$/modules" />
<option value="$PROJECT_DIR$/modules/mogo-module-adas" />
<option value="$PROJECT_DIR$/modules/mogo-module-apps" />
<option value="$PROJECT_DIR$/modules/mogo-module-authorize" />
<option value="$PROJECT_DIR$/modules/mogo-module-back" />
<option value="$PROJECT_DIR$/modules/mogo-module-common" />
<option value="$PROJECT_DIR$/modules/mogo-module-extensions" />
<option value="$PROJECT_DIR$/modules/mogo-module-guide" />
<option value="$PROJECT_DIR$/modules/mogo-module-hmi" />
<option value="$PROJECT_DIR$/modules/mogo-module-left-panel" />
<option value="$PROJECT_DIR$/modules/mogo-module-left-panel-noop" />
<option value="$PROJECT_DIR$/modules/mogo-module-main" />
@@ -52,7 +51,6 @@
<option value="$PROJECT_DIR$/modules/mogo-module-media" />
<option value="$PROJECT_DIR$/modules/mogo-module-monitor" />
<option value="$PROJECT_DIR$/modules/mogo-module-obu" />
<option value="$PROJECT_DIR$/modules/mogo-module-obu-mogo" />
<option value="$PROJECT_DIR$/modules/mogo-module-push" />
<option value="$PROJECT_DIR$/modules/mogo-module-push-base" />
<option value="$PROJECT_DIR$/modules/mogo-module-push-noop" />

31
.idea/misc.xml generated
View File

@@ -11,32 +11,7 @@
<component name="DesignSurface">
<option name="filePathToZoomLevelMap">
<map>
<entry key="../../../../../../layout/custom_preview.xml" value="0.390625" />
<entry key="../../../../../layout/custom_preview.xml" value="0.19947916666666668" />
<entry key="modules/mogo-module-authorize/src/main/res/layout/module_authorize_fragment.xml" value="0.273046875" />
<entry key="modules/mogo-module-extensions/src/main/res/layout/camera_item_v2x_live_video.xml" value="0.28854166666666664" />
<entry key="modules/mogo-module-extensions/src/main/res/layout/camera_push_live_video.xml" value="0.27447916666666666" />
<entry key="modules/mogo-module-extensions/src/main/res/layout/camera_view_video_layout_normal.xml" value="0.27447916666666666" />
<entry key="modules/mogo-module-extensions/src/main/res/layout/include_debug_panel.xml" value="0.28854166666666664" />
<entry key="modules/mogo-module-extensions/src/main/res/layout/merge_vertical_traffic_light_in_vr.xml" value="0.27447916666666666" />
<entry key="modules/mogo-module-extensions/src/main/res/layout/module_ext_include_seeking_help_notice.xml" value="0.28854166666666664" />
<entry key="modules/mogo-module-extensions/src/main/res/layout/module_ext_layout_entrance.xml" value="0.2953125" />
<entry key="modules/mogo-module-extensions/src/main/res/layout/module_ext_layout_entrance_no_map.xml" value="0.28854166666666664" />
<entry key="modules/mogo-module-extensions/src/main/res/layout/module_ext_layout_extensions.xml" value="0.28854166666666664" />
<entry key="modules/mogo-module-extensions/src/main/res/layout/module_map_layout_navi_info_panel.xml" value="0.28854166666666664" />
<entry key="modules/mogo-module-guide/src/main/res/layout/module_guide_fragment.xml" value="0.28854166666666664" />
<entry key="modules/mogo-module-guide/src/main/res/layout/module_guide_item_stage_five.xml" value="0.28854166666666664" />
<entry key="modules/mogo-module-hmi/src/main/res/layout/fragment_warning.xml" value="1.0" />
<entry key="modules/mogo-module-hmi/src/main/res/layout/notification_v2x_msg_vr.xml" value="0.3453125" />
<entry key="modules/mogo-module-hmi/src/main/res/layout/view_traffic_light_vr.xml" value="1.25" />
<entry key="modules/mogo-module-left-panel/src/main/res/layout/module_left_panel_simple_speed.xml" value="0.28854166666666664" />
<entry key="modules/mogo-module-main/src/main/res/drawable-xhdpi/module_main_warning_bkg_bottom.xml" value="0.359375" />
<entry key="modules/mogo-module-main/src/main/res/drawable-xhdpi/module_main_warning_bkg_left.xml" value="0.359375" />
<entry key="modules/mogo-module-main/src/main/res/drawable-xhdpi/module_main_warning_bkg_right.xml" value="0.359375" />
<entry key="modules/mogo-module-main/src/main/res/drawable-xhdpi/module_main_warning_bkg_top.xml" value="0.33" />
<entry key="modules/mogo-module-main/src/main/res/layout/module_main_activity_main.xml" value="0.3125" />
<entry key="modules/mogo-module-main/src/main/res/layout/module_main_activity_main_no_map.xml" value="0.33645833333333336" />
<entry key="modules/mogo-module-search/src/main/res/layout/fragment_navi_setting.xml" value="0.315625" />
<entry key="modules/mogo-module-service/src/main/res/drawable/bg_adas_dispatch.xml" value="0.184" />
<entry key="modules/mogo-module-service/src/main/res/drawable/bg_adas_dispatch_affirm.xml" value="0.19166666666666668" />
<entry key="modules/mogo-module-service/src/main/res/drawable/bg_map_marker_blue_info.xml" value="0.184" />
@@ -44,14 +19,14 @@
<entry key="modules/mogo-module-service/src/main/res/drawable/module_service_dispatch_cars_bg.xml" value="0.218" />
<entry key="modules/mogo-module-service/src/main/res/drawable/module_service_dispatch_cars_cancel_bg.xml" value="0.218" />
<entry key="modules/mogo-module-service/src/main/res/drawable/module_service_dispatch_timer_bg.xml" value="0.218" />
<entry key="modules/mogo-module-service/src/main/res/layout/module_dialog_adas_dispatch_cars.xml" value="0.5546876453218006" />
<entry key="modules/mogo-module-service/src/main/res/layout/module_dialog_adas_dispatch_airport.xml" value="0.31746031746031744" />
<entry key="modules/mogo-module-service/src/main/res/layout/module_dialog_adas_dispatch_cars.xml" value="0.596429428757663" />
<entry key="modules/mogo-module-service/src/main/res/layout/module_dialog_adas_dispatch_remind.xml" value="0.35734252929687504" />
<entry key="modules/mogo-module-service/src/main/res/layout/module_services_fragment_online_car_panel.xml" value="0.28919677734374993" />
<entry key="modules/mogo-module-widgets/src/main/res/layout/module_widgets_app_entrance.xml" value="0.2838541666666667" />
</map>
</option>
</component>
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" default="true" project-jdk-name="1.8" project-jdk-type="JavaSDK">
<component name="ProjectRootManager" version="2" languageLevel="JDK_11" project-jdk-name="11" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/build/classes" />
</component>
</project>

View File

@@ -8,10 +8,14 @@ package com.mogo.och.bus.bean;
public class OchBusResetRequest {
private String sn;
private int siteId;
double lat;
double lon;
public OchBusResetRequest(String sn, int siteId) {
public OchBusResetRequest(String sn, int siteId, double lat, double lon) {
this.sn = sn;
this.siteId = siteId;
this.lat = lat;
this.lon = lon;
}
public String getSn() {
@@ -22,6 +26,22 @@ public class OchBusResetRequest {
this.sn = sn;
}
public double getLat() {
return lat;
}
public void setLat(double lat) {
this.lat = lat;
}
public double getLon() {
return lon;
}
public void setLon(double lon) {
this.lon = lon;
}
public int getSiteId() {
return siteId;
}

View File

@@ -222,6 +222,9 @@ public class OchBusFragment extends BaseOchFragment< OchBusFragment, OchBusPrese
public void changeOperationStatus( boolean launch ) {
isOperationStatus = launch;
if ( launch ) {
// 出车的时候重制站点状态
mPresenter.debugResetStationStatus();
tvOperationStatus.setText( "收车" );
// showSlidePanle("滑动出发");
showPanel();

View File

@@ -36,6 +36,7 @@ import com.mogo.service.adas.entity.AdasOCHData;
import com.mogo.utils.logger.Logger;
import com.mogo.utils.network.RequestOptions;
import com.mogo.utils.network.utils.GsonUtil;
import com.mogo.utils.storage.SharedPrefsMgr;
import java.util.ArrayList;
import java.util.List;
@@ -247,40 +248,46 @@ public class OchBusPresenter extends Presenter< OchBusFragment > implements IMog
*/
public void debugResetStationStatus() {
Logger.d( TAG, "测试、重置站点状态");
double lat = 40.1974932972;
double lon = 116.7354579447;
OchBusResetRequest request = new OchBusResetRequest( MoGoAiCloudClientConfig.getInstance().getSn(), 1 );
RequestBody requestBody = RequestBody.create( MediaType.get( "application/json;charset=UTF-8" ), GsonUtil.jsonFromObject( request ) );
mService.debugResetStationStatus( requestBody )
.subscribeOn( Schedulers.io() ).observeOn( AndroidSchedulers.mainThread() )
.subscribe( new SubscribeImpl< OchBusRoutesResponse >( RequestOptions.create( getContext() ) ) {
// ADAS 经纬度,需要启动工控机
lat = MogoApisHandler.getInstance().getApis().getAdasControllerApi().getLastLat();
lon = MogoApisHandler.getInstance().getApis().getAdasControllerApi().getLastLon();
OchBusResetRequest request = new OchBusResetRequest(Utils.getSn(), 1, lat, lon);
RequestBody requestBody = RequestBody.create(MediaType.get("application/json;charset=UTF-8"), GsonUtil.jsonFromObject(request));
mService.debugResetStationStatus(requestBody)
.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread())
.subscribe(new SubscribeImpl<OchBusRoutesResponse>(RequestOptions.create(getContext())) {
@Override
public void onSuccess( OchBusRoutesResponse o ) {
super.onSuccess( o );
Logger.d( TAG, "获取到小巴路线数据: " + o );
public void onSuccess(OchBusRoutesResponse o) {
super.onSuccess(o);
Logger.d(TAG, "获取到小巴路线数据: " + o);
isGoingToNextStation = false;
if ( o.getResult() == null || o.getResult().getSite() == null || o.getResult().getSite().isEmpty() ) {
if (o.getResult() == null || o.getResult().getSite() == null || o.getResult().getSite().isEmpty()) {
return;
}
renderBusStationsStatus( o.getResult().getSite() );
renderBusStationsStatus(o.getResult().getSite());
}
@Override
public void onError( Throwable e ) {
super.onError( e );
Logger.e( TAG, e, "获取小巴路线图失败" );
public void onError(Throwable e) {
super.onError(e);
Logger.e(TAG, e, "获取小巴路线图失败");
// 重复请求小巴路线,直至成功
queryBusStationDelay();
}
@Override
public void onError( String message, int code ) {
super.onError( message, code );
Logger.e( TAG, "获取小巴路线失败 code: " + code + " msg: " + message );
public void onError(String message, int code) {
super.onError(message, code);
Logger.e(TAG, "获取小巴路线失败 code: " + code + " msg: " + message);
// 重复请求小巴路线,直至成功
queryBusStationDelay();
}
} );
});
}
/**
@@ -320,8 +327,8 @@ public class OchBusPresenter extends Presenter< OchBusFragment > implements IMog
return;
}
isGoingToNextStation = true;
AIAssist.getInstance( getContext() ).speakTTSVoice( "欢迎乘坐蘑菇智行无人驾驶小巴车,请您坐好,注意乘车安全,行程即将开始" );
RequestBody request = RequestBody.create( MediaType.get( "application/json" ), GsonUtil.jsonFromObject( new OchBusLeaveStationRequest( MoGoAiCloudClientConfig.getInstance().getSn(), stationList.get( currentStationIndex ).getSiteId() ) ) );
AIAssist.getInstance( getContext() ).speakTTSVoice( "欢迎乘坐蘑菇车联‘无人驾驶小巴车,请您坐好,注意乘车安全,行程即将开始" );
RequestBody request = RequestBody.create( MediaType.get( "application/json" ), GsonUtil.jsonFromObject( new OchBusLeaveStationRequest( Utils.getSn(), stationList.get( currentStationIndex ).getSiteId() ) ) );
mService.leaveStation( request ).subscribeOn( Schedulers.io() )
.observeOn( AndroidSchedulers.mainThread() )
.subscribe( new SubscribeImpl< OchBusRoutesResponse >( RequestOptions.create( getContext() ) ) {
@@ -445,17 +452,24 @@ public class OchBusPresenter extends Presenter< OchBusFragment > implements IMog
if ( awayPassengersResponse == null || awayPassengersResponse.result == null || awayPassengersResponse.result.info == null || awayPassengersResponse.result.info.isEmpty() ) {
//
} else {
builder.append( ",请尾号为" );
builder.append( ",请尾号为 " );
for ( QueryLeaveAwayPassengersResponse.LeaveAwayPassenger leaveAwayPassenger : awayPassengersResponse.result.info ) {
if ( leaveAwayPassenger == null ) {
continue;
}
String tailNum = leaveAwayPassenger.userPhone.substring( leaveAwayPassenger.userPhone.length() - 4 );
builder.append( tailNum ).append( "," );
String tailNum = null;
try {
tailNum = leaveAwayPassenger.userPhone.substring(leaveAwayPassenger.userPhone.length() - 4);
} catch (Exception e) {
e.printStackTrace();
tailNum = leaveAwayPassenger.userPhone;
}
builder.append( tailNum ).append( "" );
}
builder.append( "的乘客下车" );
}
builder.append( ",带好随身物品,下车请注意安全" );
builder.append(",带好随身物品,下车请注意安全");
Logger.d(TAG, "TTS:" + builder.toString());
AIAssist.getInstance( getContext() ).speakTTSVoice( builder.toString() );
}
@@ -471,8 +485,8 @@ public class OchBusPresenter extends Presenter< OchBusFragment > implements IMog
}
Logger.d( TAG, "单程结束====" );
MogoApisHandler.getInstance().getApis().getAdasControllerApi().cancelAutopilot();
AIAssist.getInstance( getContext() ).speakTTSVoice( "感谢您体验蘑菇出行无人驾驶小巴车,请您携带好随身物品,我们下次再见" );
RequestBody request = RequestBody.create( MediaType.get( "application/json" ), GsonUtil.jsonFromObject( new OchBusLeaveStationRequest( MoGoAiCloudClientConfig.getInstance().getSn(), stationList.get( currentStationIndex ).getSiteId() ) ) );
AIAssist.getInstance( getContext() ).speakTTSVoice( "感谢您体验蘑菇车联‘无人驾驶小巴车,请您携带好随身物品,我们下次再见" );
RequestBody request = RequestBody.create( MediaType.get( "application/json" ), GsonUtil.jsonFromObject( new OchBusLeaveStationRequest( Utils.getSn(), stationList.get( currentStationIndex ).getSiteId() ) ) );
mService.leaveStation( request ).subscribeOn( Schedulers.io() )
.observeOn( AndroidSchedulers.mainThread() )
.subscribe( new SubscribeImpl< OchBusRoutesResponse >( RequestOptions.create( getContext() ) ) {
@@ -625,8 +639,15 @@ public class OchBusPresenter extends Presenter< OchBusFragment > implements IMog
return;
}
try {
String tailNum = order.getUserPhone().substring( order.getUserPhone().length() - 4 );
AIAssist.getInstance( getContext() ).speakTTSVoice( "接到新订单,尾号" + tailNum + "上车站点为" + order.getStartStation() );
String tailNum = null;
try {
tailNum = order.getUserPhone().substring( order.getUserPhone().length() - 4 );
} catch (Exception e) {
e.printStackTrace();
tailNum = order.getUserPhone();
}
Logger.d(TAG, "TTS:" + tailNum);
AIAssist.getInstance( getContext() ).speakTTSVoice( "接到新订单,尾号 " + tailNum + " 上车站点为 " + order.getStartStation() );
} catch ( Exception e ) {
e.printStackTrace();
}

View File

@@ -5,7 +5,7 @@
<string name="module_och_taxi_order_status_ph_text">已到达上车站点,等待乘客上车</string>
<string name="module_och_taxi_order_distance_anchor_text">预计里程</string>
<string name="module_och_taxi_order_distance_text_ph">3.2 km</string>
<string name="module_och_taxi_order_complete">请携带好随身物品,注意侧后\n方来车感谢体验蘑菇智行自\n动驾驶车</string>
<string name="module_och_taxi_order_complete">请携带好随身物品,注意侧后\n方来车感谢体验蘑菇车联‘自\n动驾驶车</string>
<string name="module_och_taxi_order_complete_1">即将到达目的地,请您携带好随身物品,安全下车。</string>
<string name="module_och_taxi_on_the_way_2_end_station">去往下车地点</string>
<string name="module_och_taxi_waiting">已到达,等待乘客上车</string>

View File

@@ -214,7 +214,11 @@ public abstract class BaseOchFragment<V extends IView, P extends Presenter<V>> e
public void showAutopilotBiz() {
getActivity().runOnUiThread(() -> {
ctvAutopilotStatus.setVisibility(View.VISIBLE);
slidePanelView.setVisibility(View.VISIBLE);
if (isOperationStatus) {
slidePanelView.setVisibility(View.VISIBLE);
} else {
slidePanelView.setVisibility(View.GONE);
}
});
}

View File

@@ -55,6 +55,7 @@ android {
zipAlignEnabled false
shrinkResources false
signingConfig signingConfigs.release
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
manifestPlaceholders = [
MAP_SDK_VERSION: properties.getProperty("MAP_SDK_VERSION")

View File

@@ -1,3 +1,3 @@
<resources>
<string name="app_shell_name">蘑菇知途</string>
<string name="app_shell_name">蘑菇车联</string>
</resources>

View File

@@ -1,3 +1,3 @@
<resources>
<string name="app_shell_name">蘑菇出行</string>
<string name="app_shell_name">蘑菇车联</string>
</resources>

View File

@@ -252,6 +252,7 @@ ext {
mogoaicloudtanlu : "com.mogo.cloud:tanlu:${MOGO_TANLU_VERSION}",
mogoaicloudtrafficlive : "com.mogo.cloud:trafficlive:${MOGO_TRAFFICLIVE_VERSION}",
mogoaicloudlocation : "com.mogo.cloud:location:${MOGO_LOCATION_VERSION}",
]
}

View File

@@ -1,13 +1,11 @@
package com.mogo.commons.constants;
/**
* @author xiaoyuzhou
* @date 2021/6/24 5:09 下午
* <p>
* 本地存储使用的常量
* @author liujing
* @description 描述
* @since: 6/29/21
*/
public class SharedPrefsConstants {
// 当前城市编码
public static final String LOCATION_CITY_CODE = "location_city_code";
// 当前城市经纬度

View File

@@ -50,6 +50,26 @@ public class AppUtils {
}
}
private static final String MOGO_MAP_SDK_VERSION = "MAP_SDK_VERSION";
public static String getCustomMapSDKVersion(Context context){
return getApplicationMetaValue(context,MOGO_MAP_SDK_VERSION);
}
private static String getApplicationMetaValue(Context context,String metaName){
try {
ApplicationInfo applicationInfo = context.getPackageManager().getApplicationInfo(context.getPackageName(),PackageManager.GET_META_DATA);
Bundle bundle = applicationInfo.metaData;
if (bundle != null){
return bundle.getString(metaName);
}
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
}
return "";
}
public static String getApplicationLabel( Context context, String pkgName ) {
try {
PackageManager pm = context.getPackageManager();

View File

@@ -158,22 +158,21 @@ LOGLIB_VERSION = 1.0.4
######## MogoAiCloudSDK Version
# 网络请求
MOGO_NETWORK_VERSION=1.1.32
MOGO_NETWORK_VERSION=1.1.34
# 鉴权
MOGO_PASSPORT_VERSION=1.1.32
MOGO_PASSPORT_VERSION=1.1.34
# 常链接
MOGO_SOCKET_VERSION=1.1.32
MOGO_SOCKET_VERSION=1.1.34
# 数据采集
MOGO_REALTIME_VERSION=1.1.32
MOGO_REALTIME_VERSION=1.1.34
# 探路,道路事件发布,获取
MOGO_TANLU_VERSION=1.1.32
MOGO_TANLU_VERSION=1.1.34
# 直播推流
MOGO_LIVE_VERSION=1.1.32
MOGO_LIVE_VERSION=1.1.34
# 直播拉流
MOGO_TRAFFICLIVE_VERSION=1.1.32
MOGO_TRAFFICLIVE_VERSION=1.1.34
# 定位服务
MOGO_LOCATION_VERSION=1.1.32
MOGO_LOCATION_VERSION=1.1.34
######## Foundation MogoAiCloud Module
# mogoAiCloud apk services
@@ -188,4 +187,4 @@ MAP_SDK_VERSION=1.0.1-vr-1.0.6
applicationId=com.mogo.launcer
applicationName=IntelligentPilot
versionCode=80007
versionName=8.0.10
versionName=8.0.11

View File

@@ -548,6 +548,7 @@ public class AMapNaviViewWrapper implements IMogoMapView,
if ( visible && NaviClient.getInstance( getContext() ).isNaviing() ) {
return;
}
if ( checkAMapView() ) {
MyLocationStyle style = getMyLocationStyle();
if ( style == null ) {
@@ -556,6 +557,7 @@ public class AMapNaviViewWrapper implements IMogoMapView,
style.showMyLocation( visible );
if ( mCurrentUIMode == EnumMapUI.CarUp_2D
|| mCurrentUIMode == EnumMapUI.CarUp_3D ) {
style.myLocationType( MyLocationStyle.LOCATION_TYPE_LOCATION_ROTATE_NO_CENTER );
} else {
style.myLocationType( MyLocationStyle.LOCATION_TYPE_FOLLOW );

View File

@@ -311,9 +311,9 @@ public class AMapUIController implements IMogoMapUIController {
}
@Override
public void setAdasRecognizedResult(int drawlevel) {
public void setAdasRecognizedResult(int drawLevel) {
if ( mClient != null ) {
mClient.setAdasRecognizedResult(drawlevel);
mClient.setAdasRecognizedResult(drawLevel);
}
}

View File

@@ -67,8 +67,6 @@ dependencies {
implementation project(':foudations:mogo-commons')
}
implementation rootProject.ext.dependencies.mogocustommap
// implementation 'com.zhidaoauto.machine:map:1.0.0-vr-8.5.47'
// implementation 'com.zhidaoauto.machine:map:1.0.0-vr-test-3.4'
}
apply from: new File(rootProject.rootDir, "gradle/upload.gradle").toString()

View File

@@ -115,7 +115,6 @@ public class AMapViewWrapper implements IMogoMapView,
public AMapViewWrapper(MapAutoView mMapView) {
startTime = System.currentTimeMillis();
Logger.i(TAG, "autoop--AMapViewWrapper: init");
// Logger.i("lianglihui", "autoop--AMapViewWrapper: init");
this.mMapView = mMapView;
if (DebugConfig.isDebug()) {
GpsTester.getInstance().init(mMapView);
@@ -774,13 +773,15 @@ public class AMapViewWrapper implements IMogoMapView,
sysLocation.setBearing(location.getHeading());
sysLocation.setSpeed(location.getSpeed());
// 暂存本地提供给下一次的Http-DNS使用防止首次请求位置获取不到
SharedPrefsMgr.getInstance(mMapView.getContext())
.putString(SharedPrefsConstants.LOCATION_CITY_CODE, location.getCityCode());
SharedPrefsMgr.getInstance(mMapView.getContext())
.putString(SharedPrefsConstants.LOCATION_LATITUDE, String.valueOf(location.getLat()));
SharedPrefsMgr.getInstance(mMapView.getContext())
.putString(SharedPrefsConstants.LOCATION_LONGITUDE, String.valueOf(location.getLon()));
// 将有效经纬度暂存本地提供给下一次的Http-DNS使用防止首次请求位置获取不到
if (location.getLat() > 0) {
SharedPrefsMgr.getInstance(mMapView.getContext())
.putString(SharedPrefsConstants.LOCATION_CITY_CODE, location.getCityCode());
SharedPrefsMgr.getInstance(mMapView.getContext())
.putString(SharedPrefsConstants.LOCATION_LATITUDE, String.valueOf(location.getLat()));
SharedPrefsMgr.getInstance(mMapView.getContext())
.putString(SharedPrefsConstants.LOCATION_LONGITUDE, String.valueOf(location.getLon()));
}
NaviClient.getInstance(getContext()).syncCarLocation(sysLocation);
@@ -810,20 +811,28 @@ public class AMapViewWrapper implements IMogoMapView,
} catch (Exception e) {
}
} else {
// 通过不同的方向类型来改变车模目前暂定三种模型drawlevel 1 绿,2 黄,3 红,绿色的时候需要把相应的切换为默认模型
// Logger.d("liyz", " mDrawlevel = " + mDrawlevel);
// if (mDrawlevel == 1 && isShowWarn) {
// mSelfMarker.marker3DIcon(R.raw.car);
// isShowWarn = false;
// } else if (mDrawlevel == 2) { //不处理
//
// } else if (mDrawlevel == 3 && !isShowWarn) {
// //继续判断相应的方位,目前是只有 前方 TODO
// mSelfMarker.marker3DIcon(R.raw.qfpz);
// isShowWarn = true;
// }
// 通过不同的方向类型来改变车模目前暂定三种模型drawlevel 1 绿,2 黄,3 红,绿色的时候需要把相应的切换为默认模型
// Logger.d("liyz", " mDrawlevel = " + mDrawlevel);
// if (mDrawlevel == 1 && isShowWarn) {
// mSelfMarker.marker3DIcon(R.raw.car);
// isShowWarn = false;
// } else if (mDrawlevel == 2) { //不处理
//
// } else if (mDrawlevel == 3 && !isShowWarn) {
// //继续判断相应的方位,目前是只有 前方 TODO
// mSelfMarker.marker3DIcon(R.raw.qfpz);
// isShowWarn = true;
// }
//
// UiThreadHandler.postDelayed(() -> {
// if (!isShowWarn) {
// mSelfMarker.marker3DIcon(R.raw.qfpz);
// isShowWarn = true;
// }
// }, 6_000L);
}
showSelfSpeed(location.getSpeed());
//showSelfSpeed(location.getSpeed());
}
private int mDrawlevel;
@@ -893,6 +902,8 @@ public class AMapViewWrapper implements IMogoMapView,
@Override
public void onMapLoaded() {
Logger.i(TAG, "autoop--onMapLoaded: ");
// TODO 这里只有小巴车才会替换自车模型
//MapAutoApi.INSTANCE.getMyLocationStyle().myLocationIcon(R.raw.selfbus, true); //修改自车模型,未来需区分车的类型
mMapView.getMapAutoViewHelper().setRenderFrequency(true, 50);
MogoMapListenerHandler.getInstance().onMapLoaded();
mMapLoaded = true;

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -5,7 +5,7 @@
<string name="module_guide_item_next_step">下一步</string>
<string name="module_guide_finish">结束</string>
<string name="module_guide_voice_page_one">欢迎使用蘑菇出行,您下次可以直接对我说,打开蘑菇出行来直接进入应用,点击左下方按钮进行摄像头设置</string>
<string name="module_guide_voice_page_one">欢迎使用蘑菇车联‘,您下次可以直接对我说,打开蘑菇车联‘来直接进入应用,点击左下方按钮进行摄像头设置</string>
<string name="module_guide_voice_page_two">左边是道路事件的播报,点击右边地图上的事件标示可以查看事件详情,或者直接唤醒小智说,中关村附近堵不堵,来查询目的地周围路况</string>
<string name="module_guide_voice_page_three">这里是道路信息显示,点击后可查看事件详情</string>
<string name="module_guide_voice_page_four">这里是事件汇总,您可以查看您参与的事件和您的分享记录</string>

View File

@@ -14,5 +14,13 @@
<action android:name="com.nwd.action.ACTION_MCU_STATE_CHANGE"/>
</intent-filter>
</receiver>
<receiver android:name=".dispatch.DispatchTestPanelBroadCastReceiver">
<intent-filter>
<action android:name="com.dispatch.test_panel_control" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</receiver>
</application>
</manifest>

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -16,6 +16,7 @@ import com.mogo.map.location.IMogoLocationListener;
import com.mogo.map.marker.IMogoMarkerClickListener;
import com.mogo.map.navi.IMogoNaviListener;
import com.mogo.module.common.utils.CarSeries;
import com.mogo.module.service.dispatch.DispatchAutoPilotManager;
import com.mogo.module.service.location.MogoRTKLocation;
import com.mogo.service.module.IMogoModuleLifecycle;
import com.mogo.service.module.IMogoModuleProvider;
@@ -104,6 +105,7 @@ public class MogoServiceProvider implements IMogoModuleProvider {
// MogoRTKLocation.getInstance().init(); //todo RTK LOCATION Close
MogoServices.getInstance().preInit( context );
MogoServices.getInstance().init( AbsMogoApplication.getApp() );
DispatchAutoPilotManager.getInstance().initSocket(context);
UiThreadHandler.postDelayed( () -> {
}, 5_000L );
}

View File

@@ -0,0 +1,78 @@
package com.mogo.module.service.dispatch;
import android.content.Context;
import android.text.TextUtils;
import android.widget.Button;
import android.widget.TextView;
import androidx.annotation.NonNull;
import com.mogo.module.service.R;
import com.mogo.module.service.dispatch.bean.DispatchAdasAutoPilotLocReceiverBean;
import com.mogo.utils.logger.Logger;
public class DispatchAirportDialog extends DispatchBaseDialog {
private static final String TAG = "DispatchAirportDialog";
private IDispatchRemindClickListener mListener;
private final TextView tvStartLoc;
private final TextView tvEndLoc;
private final TextView tvTaskTime;
private final TextView tvFlightInfo;
private final TextView tvTaskContent;
public DispatchAirportDialog(@NonNull Context context) {
super(context);
setContentView(R.layout.module_dialog_adas_dispatch_airport);
setCanceledOnTouchOutside(false);
tvStartLoc = findViewById(R.id.module_services_dispatch_dialog_start_content);
tvEndLoc = findViewById(R.id.module_services_dispatch_dialog_end_content);
tvTaskTime = findViewById(R.id.module_services_dispatch_dialog_task_time);
tvFlightInfo = findViewById(R.id.module_services_dispatch_dialog_flight_time);
tvTaskContent = findViewById(R.id.module_services_dispatch_dialog_task_content);
Button btnAffirm = (Button) findViewById(R.id.module_services_dispatch_dialog_confirm);
btnAffirm.setOnClickListener(v -> {
if (mListener != null) {
mListener.affirm();
dismissDialog();
}
});
}
@Override
public void showDialog(DispatchAdasAutoPilotLocReceiverBean dispatchContent) {
show();
if (!TextUtils.isEmpty(dispatchContent.getStartLocAddress())) {
tvStartLoc.setText(dispatchContent.getStartLocAddress());
}
if (!TextUtils.isEmpty(dispatchContent.getEndLocAddress())) {
tvEndLoc.setText(dispatchContent.getEndLocAddress());
}
if (!TextUtils.isEmpty(dispatchContent.getTaskTime())) {
tvTaskTime.setText(dispatchContent.getTaskTime());
}
if (!TextUtils.isEmpty(dispatchContent.getFlightInfo())) {
tvFlightInfo.setText(dispatchContent.getFlightInfo());
}
if (!TextUtils.isEmpty(dispatchContent.getTaskInfo())) {
tvTaskContent.setText(dispatchContent.getTaskInfo());
}
}
private void dismissDialog() {
dismiss();
}
@Override
public void addIDispatchRemindListener(IDispatchRemindClickListener listener) {
if (listener == null) {
Logger.d(TAG, "addIDispatchRemindListener listener is null");
return;
}
this.mListener = listener;
}
}

View File

@@ -0,0 +1,228 @@
package com.mogo.module.service.dispatch;
import static com.mogo.module.service.dispatch.model.DispatchServiceModel.DISPATCH_RESULT_AFFIRM;
import static com.mogo.module.service.dispatch.model.DispatchServiceModel.DISPATCH_RESULT_MANUAL_CANCEL;
import static com.mogo.module.service.dispatch.model.DispatchServiceModel.DISPATCH_RESULT_TIMER_CANCEL;
import android.content.Context;
import android.location.Location;
import android.os.Handler;
import android.os.Message;
import com.mogo.map.MogoLatLng;
import com.mogo.map.location.MogoLocation;
import com.mogo.map.navi.IMogoCarLocationChangedListener2;
import com.mogo.module.common.MogoApisHandler;
import com.mogo.module.service.dispatch.bean.DispatchAdasAutoPilotLocReceiverBean;
import com.mogo.module.service.dispatch.model.DispatchServiceModel;
import com.mogo.module.service.dispatch.model.IDispatch;
import com.mogo.service.adas.IMogoAdasOCHCallback;
import com.mogo.service.adas.RemoteControlAutoPilotParameters;
import com.mogo.service.adas.entity.AdasOCHData;
import com.mogo.service.connection.IMogoOnMessageListener;
import com.mogo.utils.logger.Logger;
//负责监听自动驾驶状态并进行状态上报,自动驾驶路线上报,接收调度指令展示指令弹窗
public class DispatchAutoPilotManager implements IMogoOnMessageListener<DispatchAdasAutoPilotLocReceiverBean>
, IDispatchRemindClickListener
, IMogoCarLocationChangedListener2, IMogoAdasOCHCallback {
private static final String TAG = "DispatchAutoPilotManager";
private static volatile DispatchAutoPilotManager instance;
private static final byte[] obj = new byte[0];
private Context mContext;
private static final int MSG_SOCKET_TYPE = 501000;
private static final int MSG_TYPE_SHOW_DIALOG = 0;
private static final int MSG_TYPE_UPLOAD_AUTOPILOT_STATUS = 1;
private DispatchDialogManager dispatchDialogManager;
private MogoLocation mogoLocation;
private DispatchAdasAutoPilotLocReceiverBean receiverBean;
private int autoPilotStatus = 0;
private String reason = null;
private DispatchAutoPilotManager() {
}
public static DispatchAutoPilotManager getInstance() {
if (instance == null) {
synchronized (obj) {
if (instance == null) {
instance = new DispatchAutoPilotManager();
}
}
}
return instance;
}
private final Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
if (msg.what == MSG_TYPE_SHOW_DIALOG) {
if (dispatchDialogManager.isShowing()) {
Logger.d(TAG, "此时已经有调度,又收到调度信息");
return;
}
DispatchAdasAutoPilotLocReceiverBean msgData = (DispatchAdasAutoPilotLocReceiverBean) msg.obj;
dispatchDialogManager.showDialog(msgData);
} else if (msg.what == MSG_TYPE_UPLOAD_AUTOPILOT_STATUS) {
DispatchServiceModel.getInstance().uploadAutopilotStatus(autoPilotStatus, reason);
handler.sendEmptyMessageDelayed(MSG_TYPE_UPLOAD_AUTOPILOT_STATUS, 1000L);
}
}
};
public void initSocket(Context context) {
mContext = context;
MogoApisHandler.getInstance().getApis()
.getSocketManagerApi(context).registerOnMessageListener(MSG_SOCKET_TYPE, this);
MogoApisHandler.getInstance().getApis().getRegisterCenterApi()
.registerCarLocationChangedListener(TAG, this);
MogoApisHandler.getInstance().getApis().getAdasControllerApi()
.addAdasOCHCallback(this);
dispatchDialogManager = DispatchDialogManager.getInstance(context);
dispatchDialogManager.addIDispatchRemindListener(this);
handler.sendEmptyMessageDelayed(MSG_TYPE_UPLOAD_AUTOPILOT_STATUS, 1000L);
}
@Override
public Class<DispatchAdasAutoPilotLocReceiverBean> target() {
return DispatchAdasAutoPilotLocReceiverBean.class;
}
@Override
public void onMsgReceived(DispatchAdasAutoPilotLocReceiverBean adasAutoPilotLocReceiverBean) {
if (adasAutoPilotLocReceiverBean != null
&& adasAutoPilotLocReceiverBean.getStartLat() != 0.0
&& adasAutoPilotLocReceiverBean.getStartLon() != 0.0) {
this.receiverBean = adasAutoPilotLocReceiverBean;
Message message = new Message();
message.what = MSG_TYPE_SHOW_DIALOG;
message.obj = adasAutoPilotLocReceiverBean;
handler.sendMessage(message);
}
}
@Override
public void affirm() {
dispatchDialogManager.releaseDialog();
DispatchServiceModel.getInstance().dispatchResultUpload(DISPATCH_RESULT_AFFIRM, new IDispatch() {
@Override
public void onSuccess() {
RemoteControlAutoPilotParameters currentAutopilot = new RemoteControlAutoPilotParameters();
currentAutopilot.isSpeakVoice = false;
currentAutopilot.startLatLon = new RemoteControlAutoPilotParameters.AutoPilotLonLat(receiverBean.getStartLat(), receiverBean.getStartLon());
currentAutopilot.endLatLon = new RemoteControlAutoPilotParameters.AutoPilotLonLat(receiverBean.getEndLat(), receiverBean.getEndLon());
currentAutopilot.vehicleType = 10;
Logger.d(TAG, "开启自动驾驶====" + currentAutopilot);
MogoApisHandler.getInstance().getApis().getAdasControllerApi().aiCloudToAdasData(currentAutopilot);
}
@Override
public void onError(String msg) {
}
});
}
@Override
public void cancel(boolean manualTrigger) {
dispatchDialogManager.releaseDialog();
DispatchServiceModel.getInstance().dispatchResultUpload(manualTrigger ? DISPATCH_RESULT_MANUAL_CANCEL
: DISPATCH_RESULT_TIMER_CANCEL, new IDispatch() {
@Override
public void onSuccess() {
}
@Override
public void onError(String msg) {
}
});
}
@Override
public void onCarLocationChanged2(Location location) {
//坐标转换
MogoLocation loc = new MogoLocation();
loc.setTime(loc.getTime());
loc.setAccuracy(location.getAccuracy());
loc.setSpeed(location.getSpeed());
loc.setLongitude(location.getLongitude());
loc.setLatitude(location.getLatitude());
loc.setAltitude(location.getAltitude());
loc.setBearing(location.getBearing());
loc.setProvider(location.getProvider());
mogoLocation = loc;
}
@Override
public void onCarLocationChanged(MogoLatLng mogoLatLng) {
}
public void testAutopilotStatus() {
autoPilotStatus = 2;
}
public void testEZhouStart() {
Logger.d(TAG, "test to trigger mock testEZhouStart");
DispatchAdasAutoPilotLocReceiverBean adasAutoPilotLocReceiverBean = new DispatchAdasAutoPilotLocReceiverBean(
DispatchAdasAutoPilotLocReceiverBean.DISPATCH_SOURCE_EZHOU, DispatchAdasAutoPilotLocReceiverBean.DISPATCH_TYPE_START, "1",
26.825571122, 112.5762410415, "起点---5号跑道",
26.825571122, 112.5762410415, "终点---鄂州机场",
"5分钟", "AR453航班", "你车需执行编号ca1098次航班的引导任务从A区A1到B区B1", System.currentTimeMillis());
this.receiverBean = adasAutoPilotLocReceiverBean;
DispatchDialogManager.getInstance(mContext).showDialog(adasAutoPilotLocReceiverBean);
}
public void testEZhouStop() {
Logger.d(TAG, "test to trigger mock testEZhouStop");
DispatchAdasAutoPilotLocReceiverBean adasAutoPilotLocReceiverBean = new DispatchAdasAutoPilotLocReceiverBean(
DispatchAdasAutoPilotLocReceiverBean.DISPATCH_SOURCE_EZHOU, DispatchAdasAutoPilotLocReceiverBean.DISPATCH_TYPE_STOP, "1",
0.0, 0.0, "",
0.0, 0.0, "",
"", "", "", System.currentTimeMillis());
this.receiverBean = adasAutoPilotLocReceiverBean;
DispatchDialogManager.getInstance(mContext).showDialog(adasAutoPilotLocReceiverBean);
}
public void testHengYangStart() {
Logger.d(TAG, "test to trigger mock testHengYangStart");
DispatchAdasAutoPilotLocReceiverBean adasAutoPilotLocReceiverBean = new DispatchAdasAutoPilotLocReceiverBean(
DispatchAdasAutoPilotLocReceiverBean.DISPATCH_SOURCE_HENGYANG, DispatchAdasAutoPilotLocReceiverBean.DISPATCH_TYPE_START, "2",
26.825571122, 112.5762410415, "衡阳科学城",
26.825571122, 112.5762410415, "衡阳首钢集团",
"", "", "", System.currentTimeMillis());
this.receiverBean = adasAutoPilotLocReceiverBean;
DispatchDialogManager.getInstance(mContext).showDialog(adasAutoPilotLocReceiverBean);
}
public void testDispatchResultUpload() {
DispatchServiceModel.getInstance().dispatchResultUpload(DISPATCH_RESULT_AFFIRM, new IDispatch() {
@Override
public void onSuccess() {
}
@Override
public void onError(String msg) {
}
});
}
@Override
public void onArriveAt(AdasOCHData data) {
}
@Override
public void onStateChanged(int state, String reason) {
autoPilotStatus = state;
this.reason = reason;
}
}

View File

@@ -0,0 +1,20 @@
package com.mogo.module.service.dispatch;
import android.content.Context;
import androidx.annotation.NonNull;
import com.mogo.module.common.dialog.BaseFloatDialog;
import com.mogo.module.service.dispatch.bean.DispatchAdasAutoPilotLocReceiverBean;
public abstract class DispatchBaseDialog extends BaseFloatDialog {
public DispatchBaseDialog(@NonNull Context context) {
super(context);
}
public abstract void addIDispatchRemindListener(IDispatchRemindClickListener listener);
public abstract void showDialog(DispatchAdasAutoPilotLocReceiverBean dispatchContent);
}

View File

@@ -0,0 +1,97 @@
package com.mogo.module.service.dispatch;
import android.content.Context;
import android.os.Handler;
import android.os.Message;
import android.text.TextUtils;
import android.widget.Button;
import android.widget.TextView;
import androidx.annotation.NonNull;
import com.mogo.module.service.R;
import com.mogo.module.service.dispatch.bean.DispatchAdasAutoPilotLocReceiverBean;
import com.mogo.utils.logger.Logger;
public class DispatchCarsDialog extends DispatchBaseDialog{
private static final String TAG = "DispatchCarsDialog";
private static final int MSG_TYPE_TIMER = 0;
private static int TIMER = 10;
private IDispatchRemindClickListener mListener;
private final TextView tvTimer;
private final TextView tvLoc;
private final Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
if (msg.what == MSG_TYPE_TIMER) {
if (TIMER > 0) {
TIMER--;
Logger.d(TAG,"timer : " + TIMER);
tvTimer.setText(String.valueOf(TIMER));
handler.sendEmptyMessageDelayed(MSG_TYPE_TIMER,1000L);
} else {
hideDialog();
}
}
}
};
public DispatchCarsDialog(@NonNull Context context) {
super(context);
setContentView(R.layout.module_dialog_adas_dispatch_cars);
setCanceledOnTouchOutside(false);
tvTimer = findViewById(R.id.module_adas_dispatch_remind_timer);
tvLoc = findViewById(R.id.module_adas_dispatch_remind_loc);
Button btnAffirm = (Button) findViewById(R.id.module_adas_dispatch_remind_affirm);
Button btnCancel = (Button) findViewById(R.id.module_adas_dispatch_remind_cancel);
tvTimer.setText(String.valueOf(TIMER));
btnAffirm.setOnClickListener(v -> {
if (mListener != null) {
mListener.affirm();
dismissDialog();
}
});
btnCancel.setOnClickListener(v -> {
if (mListener != null) {
mListener.cancel(true);
dismissDialog();
}
});
}
private void hideDialog() {
if (mListener != null) {
mListener.cancel(false);
}
dismissDialog();
}
private void dismissDialog(){
handler.removeMessages(MSG_TYPE_TIMER);
TIMER = 10;
dismiss();
}
@Override
public void addIDispatchRemindListener(IDispatchRemindClickListener listener) {
if (listener == null) {
Logger.d(TAG, "addIDispatchRemindListener listener is null");
return;
}
this.mListener = listener;
}
@Override
public void showDialog(DispatchAdasAutoPilotLocReceiverBean dispatchContent) {
if(TextUtils.isEmpty(dispatchContent.getEndLocAddress())){
return;
}
show();
handler.sendEmptyMessage(MSG_TYPE_TIMER);
tvLoc.setText(dispatchContent.getEndLocAddress());
}
}

View File

@@ -0,0 +1,109 @@
package com.mogo.module.service.dispatch;
import static com.mogo.module.service.dispatch.bean.DispatchAdasAutoPilotLocReceiverBean.DISPATCH_SOURCE_EZHOU;
import static com.mogo.module.service.dispatch.bean.DispatchAdasAutoPilotLocReceiverBean.DISPATCH_SOURCE_HENGYANG;
import static com.mogo.module.service.dispatch.bean.DispatchAdasAutoPilotLocReceiverBean.DISPATCH_TYPE_START;
import static com.mogo.module.service.dispatch.bean.DispatchAdasAutoPilotLocReceiverBean.DISPATCH_TYPE_STOP;
import android.content.Context;
import com.mogo.commons.voice.AIAssist;
import com.mogo.module.service.dispatch.bean.DispatchAdasAutoPilotLocReceiverBean;
import com.mogo.utils.logger.Logger;
public class DispatchDialogManager {
private static final String TAG = "DispatchDialogManager";
private static volatile DispatchDialogManager manager;
private static final byte[] obj = new byte[0];
private Context mContext;
private IDispatchRemindClickListener mListener;
private DispatchBaseDialog dialog;
private DispatchDialogManager(Context context) {
mContext = context;
}
public static DispatchDialogManager getInstance(Context context) {
if (manager == null) {
synchronized (obj) {
if (manager == null) {
manager = new DispatchDialogManager(context);
}
}
}
return manager;
}
public void addIDispatchRemindListener(IDispatchRemindClickListener listener) {
if (listener == null) {
Logger.d(TAG, "addIDispatchRemindListener listener is null");
return;
}
this.mListener = listener;
}
public boolean isShowing() {
return dialog != null && dialog.isShowing();
}
public void showDialog(DispatchAdasAutoPilotLocReceiverBean msgData) {
if (msgData == null) {
return;
}
switch (msgData.getSource()) {
case DISPATCH_SOURCE_HENGYANG:
dispatchHengYang(msgData);
break;
case DISPATCH_SOURCE_EZHOU:
dispatchEZhou(msgData);
break;
}
}
private void dispatchHengYang(DispatchAdasAutoPilotLocReceiverBean msgData) {
if (msgData.getType() == DISPATCH_TYPE_START) { //衡阳只有开始调度
if (dialog != null && dialog.isShowing()) { //避免下发两次
return;
}
if (dialog == null) {
dialog = new DispatchCarsDialog(mContext);
}
dialog.addIDispatchRemindListener(mListener);
dialog.showDialog(msgData);
}
}
private void dispatchEZhou(DispatchAdasAutoPilotLocReceiverBean msgData) {
switch (msgData.getType()) {
case DISPATCH_TYPE_START:
if (dialog != null && dialog.isShowing()) { //避免下发两次
return;
}
if (dialog == null) {
dialog = new DispatchAirportDialog(mContext);
}
dialog.addIDispatchRemindListener(mListener);
dialog.showDialog(msgData);
break;
case DISPATCH_TYPE_STOP:
//语音播报
voice();
break;
}
}
private void voice() {
AIAssist.getInstance(mContext).speakTTSVoice("请立即停车!请立即停车!");
}
public void releaseDialog() {
if (dialog != null) {
if (dialog.isShowing()) {
dialog.dismiss();
}
dialog = null;
}
}
}

View File

@@ -0,0 +1,50 @@
package com.mogo.module.service.dispatch;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import com.mogo.utils.logger.Logger;
public class DispatchTestPanelBroadCastReceiver extends BroadcastReceiver {
private static final String TAG = "DispatchTestPanelBroadCastReceiver";
/**
* Adas测试控制面板广播Action
*/
public static final String BROADCAST_TEST_PANEL_CONTROL_TYPE_EXTRA_KEY = "sceneType";
@Override
public void onReceive(Context context, Intent intent) {
try {
int sceneType = intent.getIntExtra(BROADCAST_TEST_PANEL_CONTROL_TYPE_EXTRA_KEY, 0);
Logger.d(TAG, "textPanelOpenType:" + sceneType);
// 分发场景
dispatchSceneTest(sceneType);
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 分发处理场景
*
* @param sceneType 场景类型
*/
private void dispatchSceneTest(int sceneType) {
Logger.d(TAG, "sceneType=" + sceneType);
if (sceneType == 0) {
DispatchAutoPilotManager.getInstance().testEZhouStart();
} else if (sceneType == 1) {
DispatchAutoPilotManager.getInstance().testEZhouStop();
} else if (sceneType == 2) {
DispatchAutoPilotManager.getInstance().testHengYangStart();
} else if (sceneType == 3) { //验证自动驾驶调度上报接口
DispatchAutoPilotManager.getInstance().testDispatchResultUpload();
} else if (sceneType == 4) { //更改自动驾驶状态上报
DispatchAutoPilotManager.getInstance().testAutopilotStatus();
}
}
}

View File

@@ -0,0 +1,8 @@
package com.mogo.module.service.dispatch;
public interface IDispatchRemindClickListener {
void affirm();
void cancel(boolean manualTrigger);
}

View File

@@ -0,0 +1,41 @@
package com.mogo.module.service.dispatch.bean;
/**
* Created by XuYong on 2021/5/28 16:12
*/
public class AutonomousDriveStatusBean {
private String sn;
private int status;
private float vehicleSpeed;
public AutonomousDriveStatusBean(String sn, int status, float vehicleSpeed) {
this.sn = sn;
this.status = status;
this.vehicleSpeed = vehicleSpeed;
}
public String getSn() {
return sn;
}
public void setSn(String sn) {
this.sn = sn;
}
public int getStatus() {
return status;
}
public void setStatus(int status) {
this.status = status;
}
public float getVehicleSpeed() {
return vehicleSpeed;
}
public void setVehicleSpeed(float vehicleSpeed) {
this.vehicleSpeed = vehicleSpeed;
}
}

View File

@@ -0,0 +1,75 @@
package com.mogo.module.service.dispatch.bean;
import com.google.gson.annotations.SerializedName;
import java.util.List;
/**
* @author song kenan
* @des
* @date 2021/6/21
*/
public class AutopilotRoute {
@SerializedName("action")
private String action;
@SerializedName("models")
private List<RouteModels> models;
public static class RouteModels {
@SerializedName("lat")
private Double lat;
@SerializedName("lon")
private Double lon;
public Double getLat() {
return lat;
}
public void setLat(Double lat) {
this.lat = lat;
}
public Double getLon() {
return lon;
}
public void setLon(Double lon) {
this.lon = lon;
}
@Override
public String toString() {
return "RouteModels{" +
"lat=" + lat +
", lon=" + lon +
'}';
}
}
public String getAction() {
return action;
}
public void setAction(String action) {
this.action = action;
}
public List<RouteModels> getModels() {
return models;
}
public void setModels(List<RouteModels> models) {
this.models = models;
}
@Override
public String toString() {
return "AutopilotRoute{" +
"action='" + action + '\'' +
", models=" + models +
'}';
}
}

View File

@@ -0,0 +1,108 @@
package com.mogo.module.service.dispatch.bean;
import java.io.Serializable;
/**
* @author nie yunlong
* @des
* @date 2020/7/14
*/
public class AutopilotStatus implements Serializable {
/**
* action : autopilotstate
* values : {"state":0,"reason":""}
*/
private String action;
private ValuesBean values;
public String getAction() {
return action;
}
public void setAction(String action) {
this.action = action;
}
public ValuesBean getValues() {
return values;
}
public void setValues(ValuesBean values) {
this.values = values;
}
public static class ValuesBean {
/**
* 0是不可用 1是ready 2是自动驾驶start
*
* @return
*/
private int state;
/**
* 车速 m/s
*/
private float speed;
/**
* 不可用原因
*/
private String reason;
/**
* 摄像头状态 1代表开启0代表关闭
*/
private int camera;
/**
* 雷达状态 1代表开启0代表关闭
*/
private int radar;
/**
* RTK状态 1代表开启0代表关闭
*/
private int rtk;
/**
* 自动驾驶状态 0非自动驾驶1自动驾驶
*/
private int pilotmode;
public int getState() {
return state;
}
public void setState(int state) {
this.state = state;
}
public String getReason() {
return reason;
}
public void setReason(String reason) {
this.reason = reason;
}
public float getSpeed() {
return speed;
}
public void setSpeed(float speed) {
this.speed = speed;
}
public int getCamera() {
return camera;
}
public int getRadar() {
return radar;
}
public int getRtk() {
return rtk;
}
public int getPilotmode() {
return pilotmode;
}
}
}

View File

@@ -0,0 +1,165 @@
package com.mogo.module.service.dispatch.bean;
public class DispatchAdasAutoPilotLocReceiverBean {
public static final int DISPATCH_SOURCE_HENGYANG = 1;
public static final int DISPATCH_SOURCE_EZHOU = 2;
public static final int DISPATCH_TYPE_START = 1;
public static final int DISPATCH_TYPE_STOP = 2;
private int source; // 1衡阳 2鄂州
private int type; // 1启动 2停止
private String poiId;
private double startLat;
private double startLon;
private String startLocAddress;
private double endLat;
private double endLon;
private String endLocAddress;
private String taskTime;
private String flightInfo;
private String taskInfo;
private long systemTime;
public DispatchAdasAutoPilotLocReceiverBean(int source, int type, String poiId, double startLat, double startLon, String startLocAddress, double endLat, double endLon, String endLocAddress, String taskTime, String flightInfo, String taskInfo, long systemTime) {
this.source = source;
this.type = type;
this.poiId = poiId;
this.startLat = startLat;
this.startLon = startLon;
this.startLocAddress = startLocAddress;
this.endLat = endLat;
this.endLon = endLon;
this.endLocAddress = endLocAddress;
this.taskTime = taskTime;
this.flightInfo = flightInfo;
this.taskInfo = taskInfo;
this.systemTime = systemTime;
}
public int getSource() {
return source;
}
public void setSource(int source) {
this.source = source;
}
public int getType() {
return type;
}
public void setType(int type) {
this.type = type;
}
public String getPoiId() {
return poiId;
}
public void setPoiId(String poiId) {
this.poiId = poiId;
}
public double getStartLat() {
return startLat;
}
public void setStartLat(double startLat) {
this.startLat = startLat;
}
public double getStartLon() {
return startLon;
}
public void setStartLon(double startLon) {
this.startLon = startLon;
}
public String getStartLocAddress() {
return startLocAddress;
}
public void setStartLocAddress(String startLocAddress) {
this.startLocAddress = startLocAddress;
}
public double getEndLat() {
return endLat;
}
public void setEndLat(double endLat) {
this.endLat = endLat;
}
public double getEndLon() {
return endLon;
}
public void setEndLon(double endLon) {
this.endLon = endLon;
}
public String getEndLocAddress() {
return endLocAddress;
}
public void setEndLocAddress(String endLocAddress) {
this.endLocAddress = endLocAddress;
}
public String getTaskTime() {
return taskTime;
}
public void setTaskTime(String taskTime) {
this.taskTime = taskTime;
}
public String getFlightInfo() {
return flightInfo;
}
public void setFlightInfo(String flightInfo) {
this.flightInfo = flightInfo;
}
public String getTaskInfo() {
return taskInfo;
}
public void setTaskInfo(String taskInfo) {
this.taskInfo = taskInfo;
}
public long getSystemTime() {
return systemTime;
}
public void setSystemTime(long systemTime) {
this.systemTime = systemTime;
}
@Override
public String toString() {
return "DispatchAdasAutoPilotLocReceiverBean{" +
"source=" + source +
", type=" + type +
", poiId='" + poiId + '\'' +
", startLat=" + startLat +
", startLon=" + startLon +
", startLocAddress='" + startLocAddress + '\'' +
", endLat=" + endLat +
", endLon=" + endLon +
", endLocAddress='" + endLocAddress + '\'' +
", taskTime='" + taskTime + '\'' +
", flightInfo='" + flightInfo + '\'' +
", taskInfo='" + taskInfo + '\'' +
", systemTime=" + systemTime +
'}';
}
}

View File

@@ -0,0 +1,38 @@
package com.mogo.module.service.dispatch.bean;
import com.mogo.module.service.dispatch.model.DispatchResult;
public class DispatchData {
private String action;
private DispatchResult result;
public DispatchData(String action, DispatchResult result) {
this.action = action;
this.result = result;
}
public String getAction() {
return action;
}
public void setAction(String action) {
this.action = action;
}
public DispatchResult getResult() {
return result;
}
public void setResult(DispatchResult result) {
this.result = result;
}
@Override
public String toString() {
return "DispatchData{" +
"action='" + action + '\'' +
", result=" + result +
'}';
}
}

View File

@@ -0,0 +1,36 @@
package com.mogo.module.service.dispatch.bean;
public class EndLatLon {
private double lat;
private double lon;
public EndLatLon(double lat, double lon) {
this.lat = lat;
this.lon = lon;
}
public double getLat() {
return lat;
}
public void setLat(double lat) {
this.lat = lat;
}
public double getLon() {
return lon;
}
public void setLon(double lon) {
this.lon = lon;
}
@Override
public String toString() {
return "EndLatLon{" +
"lat=" + lat +
", lon=" + lon +
'}';
}
}

View File

@@ -0,0 +1,36 @@
package com.mogo.module.service.dispatch.bean;
public class ReportDispatchResult {
private String sn;
private int dispatchResult;
public ReportDispatchResult(String sn, int dispatchResult) {
this.sn = sn;
this.dispatchResult = dispatchResult;
}
public String getSn() {
return sn;
}
public void setSn(String sn) {
this.sn = sn;
}
public int getDispatchResult() {
return dispatchResult;
}
public void setDispatchResult(int dispatchResult) {
this.dispatchResult = dispatchResult;
}
@Override
public String toString() {
return "ReportDispatchResult{" +
"sn='" + sn + '\'' +
", dispatchResult=" + dispatchResult +
'}';
}
}

View File

@@ -0,0 +1,40 @@
package com.mogo.module.service.dispatch.bean;
/**
* Created by XuYong on 2021/5/31 16:24
*/
public class ReportSiteBean {
private String sn;
private double lon;
private double lat;
public ReportSiteBean(String sn, double lon, double lat) {
this.sn = sn;
this.lon = lon;
this.lat = lat;
}
public String getSn() {
return sn;
}
public void setSn(String sn) {
this.sn = sn;
}
public double getLon() {
return lon;
}
public void setLon(double lon) {
this.lon = lon;
}
public double getLat() {
return lat;
}
public void setLat(double lat) {
this.lat = lat;
}
}

View File

@@ -0,0 +1,36 @@
package com.mogo.module.service.dispatch.bean;
/**
* 上报自动驾驶规划的路径
*/
public class ReportedRoute {
private String sn;
private AutopilotStatus.ValuesBean bean;
private String siteList;
public ReportedRoute(String sn, AutopilotStatus.ValuesBean bean) {
this.sn = sn;
this.bean = bean;
}
public ReportedRoute(String sn, String siteList) {
this.sn = sn;
this.siteList = siteList;
}
public String getSiteList() {
return siteList;
}
public String getState() {
return "{\"sn\":\"" + sn + "\",\"state\":" + bean.getState() + ",\"speed\":" + bean.getSpeed() + ",\"reason\":\"" + bean.getReason() + "\",\"camera\":" + bean.getCamera() + ",\"radar\":" + bean.getRadar() + ",\"rtk\":" + bean.getRtk() + "}";
}
public String getRoute() {
return "{\"sn\":\"" + sn + "\",\"siteList\":" + siteList + "}";
}
}

View File

@@ -0,0 +1,36 @@
package com.mogo.module.service.dispatch.bean;
public class StartLatLon {
private double lat;
private double lon;
public StartLatLon(double lat, double lon) {
this.lat = lat;
this.lon = lon;
}
public double getLat() {
return lat;
}
public void setLat(double lat) {
this.lat = lat;
}
public double getLon() {
return lon;
}
public void setLon(double lon) {
this.lon = lon;
}
@Override
public String toString() {
return "StartLatLon{" +
"lat=" + lat +
", lon=" + lon +
'}';
}
}

View File

@@ -0,0 +1,39 @@
package com.mogo.module.service.dispatch.model;
import com.mogo.module.service.dispatch.bean.EndLatLon;
import com.mogo.module.service.dispatch.bean.StartLatLon;
public class DispatchResult {
private StartLatLon startLatLon;
private EndLatLon endLatLon;
public DispatchResult(StartLatLon startLatLon, EndLatLon endLatLon) {
this.startLatLon = startLatLon;
this.endLatLon = endLatLon;
}
public StartLatLon getStartLatLon() {
return startLatLon;
}
public void setStartLatLon(StartLatLon startLatLon) {
this.startLatLon = startLatLon;
}
public EndLatLon getEndLatLon() {
return endLatLon;
}
public void setEndLatLon(EndLatLon endLatLon) {
this.endLatLon = endLatLon;
}
@Override
public String toString() {
return "DispatchResult{" +
"startLatLon=" + startLatLon +
", endLatLon=" + endLatLon +
'}';
}
}

View File

@@ -0,0 +1,161 @@
package com.mogo.module.service.dispatch.model;
import static com.mogo.commons.context.ContextHolderUtil.getContext;
import static com.mogo.module.common.constants.HostConst.DATA_SERVICE_HOST;
import com.mogo.cloud.passport.MoGoAiCloudClientConfig;
import com.mogo.commons.data.BaseData;
import com.mogo.commons.network.SubscribeImpl;
import com.mogo.module.common.MogoApisHandler;
import com.mogo.module.service.dispatch.bean.AutopilotRoute;
import com.mogo.module.service.dispatch.bean.AutopilotStatus;
import com.mogo.module.service.dispatch.bean.ReportDispatchResult;
import com.mogo.module.service.dispatch.bean.ReportedRoute;
import com.mogo.utils.logger.Logger;
import com.mogo.utils.network.RequestOptions;
import com.mogo.utils.network.utils.GsonUtil;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.schedulers.Schedulers;
public class DispatchServiceModel {
private static final String TAG = "DispatchServiceModel";
private static volatile DispatchServiceModel instance;
private static final byte[] obj = new byte[0];
public static final int DISPATCH_RESULT_AFFIRM = 0;
public static final int DISPATCH_RESULT_MANUAL_CANCEL = 1;
public static final int DISPATCH_RESULT_TIMER_CANCEL = 2;
private final IDispatchAdasApiService mAdasApiService;
private DispatchServiceModel() {
this.mAdasApiService = MogoApisHandler.getInstance().getApis().getNetworkApi().create(IDispatchAdasApiService.class, DATA_SERVICE_HOST);
}
public static DispatchServiceModel getInstance() {
if (instance == null) {
synchronized (obj) {
if (instance == null) {
instance = new DispatchServiceModel();
}
}
}
return instance;
}
/**
* 上报自动驾驶状态
*/
public void uploadAutopilotStatus(int state, String reason) {
AutopilotStatus autopilotStatus = new AutopilotStatus();
autopilotStatus.setAction("autopilotstate");
AutopilotStatus.ValuesBean valuesBean = new AutopilotStatus.ValuesBean();
valuesBean.setState(state);
valuesBean.setReason(reason);
autopilotStatus.setValues(valuesBean);
String sn = MoGoAiCloudClientConfig.getInstance().getSn();
ReportedRoute reportedRoute = new ReportedRoute(sn, autopilotStatus.getValues());
Map<String, Object> map = new HashMap<>();
map.put("sn", sn);
map.put("data", GsonUtil.jsonFromObject(reportedRoute));
mAdasApiService.uploadAutopilotState(map)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new SubscribeImpl<BaseData>(RequestOptions.create(getContext())) {
@Override
public void onNext(BaseData o) {
super.onNext(o);
Logger.d(TAG, "uploadAutopilotStatus success");
}
@Override
public void onError(Throwable e) {
super.onError(e);
Logger.d(TAG, "uploadAutopilotStatus error : " + e.getMessage());
}
@Override
public void onSuccess(BaseData o) {
super.onSuccess(o);
}
});
}
/**
* 上报自动驾驶路线
*
* @param list 路线集合
*/
public void uploadAutopilotRoute(List<AutopilotRoute.RouteModels> list) {
String sn = MoGoAiCloudClientConfig.getInstance().getSn();
ReportedRoute reportedRoute = new ReportedRoute(sn, GsonUtil.jsonFromObject(list));
Map<String, Object> map = new HashMap<>();
map.put("sn", sn);
map.put("data", GsonUtil.jsonFromObject(reportedRoute));
mAdasApiService.uploadAutopilotRoute(map)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new SubscribeImpl<BaseData>(RequestOptions.create(getContext())) {
@Override
public void onNext(BaseData o) {
super.onNext(o);
Logger.d(TAG, "uploadAutopilotRoute success");
}
@Override
public void onError(Throwable e) {
super.onError(e);
Logger.d(TAG, "uploadAutopilotRoute error : " + e.getMessage());
}
@Override
public void onSuccess(BaseData o) {
super.onSuccess(o);
}
});
}
/**
* 上报调度处理结果
*
* @param dispatchResultType int
*/
public void dispatchResultUpload(int dispatchResultType, IDispatch dispatch) {
String sn = MoGoAiCloudClientConfig.getInstance().getSn();
ReportDispatchResult reportDispatchResult = new ReportDispatchResult(sn, dispatchResultType);
Map<String, Object> map = new HashMap<>();
map.put("sn", sn);
map.put("data", GsonUtil.jsonFromObject(reportDispatchResult));
mAdasApiService.uploadDispatchResult(map)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new SubscribeImpl<BaseData>(RequestOptions.create(getContext())) {
@Override
public void onNext(BaseData o) {
super.onNext(o);
Logger.d(TAG, "dispatchResultUpload success");
dispatch.onSuccess();
}
@Override
public void onError(Throwable e) {
super.onError(e);
Logger.d(TAG, "dispatchResultUpload error : " + e.getMessage());
dispatch.onError(e.getMessage());
}
@Override
public void onSuccess(BaseData o) {
super.onSuccess(o);
}
});
}
}

View File

@@ -0,0 +1,8 @@
package com.mogo.module.service.dispatch.model;
public interface IDispatch {
void onSuccess();
void onError(String msg);
}

View File

@@ -0,0 +1,43 @@
package com.mogo.module.service.dispatch.model;
import com.mogo.commons.data.BaseData;
import java.util.Map;
import io.reactivex.Observable;
import retrofit2.http.FieldMap;
import retrofit2.http.FormUrlEncoded;
import retrofit2.http.POST;
public interface IDispatchAdasApiService {
/**
* 上报自动驾驶路径 服务于业务调度
*
* @param parameters map
* @return {@link BaseData}
*/
@FormUrlEncoded
@POST("/dataService/autoDriver/receiveCarPreSetPath")
Observable<BaseData> uploadAutopilotRoute(@FieldMap Map<String, Object> parameters);
/**
* 上报自动驾驶调度处理结果 服务于业务调度
*
* @param parameters map
* @return {@link BaseData}
*/
@FormUrlEncoded
@POST("/dataService/autoDriver/receiverDestSiteResult")
Observable<BaseData> uploadDispatchResult(@FieldMap Map<String, Object> parameters);
/**
* 上报自动驾驶状态 服务于业务调度
*
* @param parameters map
* @return {@link BaseData}
*/
@FormUrlEncoded
@POST("/dataService/autoDriver/receiveAutopilotState")
Observable<BaseData> uploadAutopilotState(@FieldMap Map<String, Object> parameters);
}

View File

@@ -599,8 +599,8 @@ public class MockIntentHandler implements IntentHandler {
DebugConfig.setSelfCarSpeedYOffset(intent.getIntExtra("yOffset", 20));
break;
case 51:// 模拟路口车辆移动
mLocationMockHandler.sendEmptyMessageDelayed(100, 0L);
mLocationMockHandler.sendEmptyMessageDelayed(101, 1000L);
// mLocationMockHandler.sendEmptyMessageDelayed(100, 0L);
// mLocationMockHandler.sendEmptyMessageDelayed(101, 1000L);
break;
case 52:
// 打开连调工控机、ADAS的控制面板

View File

@@ -1,5 +1,6 @@
package com.mogo.module.service.location;
import android.annotation.SuppressLint;
import android.content.Context;
import android.location.Criteria;
import android.location.Location;
@@ -29,6 +30,7 @@ public class MogoRTKLocation {
private MogoRTKLocation() {
}
@SuppressLint("MissingPermission")
public void init() {
locationManager = (LocationManager) AbsMogoApplication.getApp().getApplicationContext().getSystemService(Context.LOCATION_SERVICE);
String provider = locationManager.getBestProvider(getCriteria(), true);
@@ -102,7 +104,7 @@ public class MogoRTKLocation {
if (locationManager != null && locationListener != null) {
locationManager.removeUpdates(locationListener);
} else {
Logger.d(TAG, "stop failed , reason : loc" + locationManager + " , or loc listener: " + locationListener + " is null");
Logger.d(TAG, "stop failed , listener: " + locationListener + " is null");
}
}
}

View File

@@ -39,6 +39,7 @@ import com.mogo.realtime.api.MoGoAiCloudRealTime;
import com.mogo.realtime.socket.IMogoCloudOnMsgListener;
import com.mogo.service.adas.IMogoADASControlStatusChangedListener;
import com.mogo.service.connection.IMogoLifecycleListener;
import com.mogo.service.adas.entity.ADASRecognizedResult;
import com.mogo.service.module.IMogoBizActionDoneListener;
import com.mogo.utils.ResourcesHelper;
import com.mogo.utils.ThreadPoolService;

View File

@@ -0,0 +1,16 @@
package com.mogo.module.service.spi;
import com.elegant.spi.annotations.Service;
import com.mogo.module.common.datacenter.SnapshotLocationDataCenter;
import com.mogo.realtime.api.IRealTimeProvider;
import com.mogo.realtime.entity.SocketReceiveDataProto3;
@Service(value = IRealTimeProvider.class)
public class SPIRealTimeUpload implements IRealTimeProvider {
@Override
public SocketReceiveDataProto3.SocketReceiveDataProto getLocationMsg() {
return null;
}
}

View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="@color/module_services_dispatch_bg" />
<corners android:radius="@dimen/module_services_dispatch_airport_dialog_corner" />
</shape>

View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="@color/module_services_dispatch_affirm_bg" />
<corners android:radius="@dimen/module_services_dispatch_airport_dialog_affirm_corner" />
</shape>

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
<corners android:bottomLeftRadius="@dimen/module_services_dispatch_cars_dialog_corner"/>
<solid android:color="@color/module_services_dispatch_cars_background"/>
</shape>

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<corners android:radius="@dimen/module_services_dispatch_cars_dialog_corner"/>
<solid android:color="@color/module_services_dispatch_cars_background"/>
</shape>

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
<corners android:bottomRightRadius="@dimen/module_services_dispatch_cars_dialog_corner"/>
<solid android:color="@color/module_services_dispatch_cars_background"/>
</shape>

View File

@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval">
<solid android:color="@color/module_services_dispatch_cars_count_down_bg"/>
</shape>

View File

@@ -0,0 +1,122 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="@dimen/module_services_dispatch_airport_dialog_width"
android:layout_height="wrap_content"
android:background="@drawable/bg_adas_dispatch">
<TextView
android:id="@+id/module_services_dispatch_dialog_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_marginTop="@dimen/module_services_dispatch_airport_dialog_title_margin_top"
android:text="@string/module_services_dispatch_dialog_title"
android:textColor="@android:color/white"
android:textSize="@dimen/module_services_dispatch_airport_dialog_title_size"
android:textStyle="bold" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/module_services_dispatch_airport_dialog_first_column_margin_left"
android:layout_marginTop="@dimen/module_services_dispatch_airport_dialog_startloc_margin_top"
android:text="@string/module_services_dispatch_dialog_start_loc"
android:textSize="@dimen/module_services_dispatch_airport_dialog_next_level_title_size" />
<TextView
android:id="@+id/module_services_dispatch_dialog_start_content"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/module_services_dispatch_airport_dialog_first_column_margin_left"
android:layout_marginTop="@dimen/module_services_dispatch_airport_dialog_startloc_content_margin_top"
android:textColor="@android:color/white"
android:textSize="@dimen/module_services_dispatch_airport_dialog_title_size"
android:textStyle="bold" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/module_services_dispatch_airport_dialog_first_column_margin_left"
android:layout_marginTop="@dimen/module_services_dispatch_airport_dialog_endloc_margin_top"
android:text="@string/module_services_dispatch_dialog_end_loc"
android:textSize="@dimen/module_services_dispatch_airport_dialog_next_level_title_size" />
<TextView
android:id="@+id/module_services_dispatch_dialog_end_content"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/module_services_dispatch_airport_dialog_first_column_margin_left"
android:layout_marginTop="@dimen/module_services_dispatch_airport_dialog_endloc_content_margin_top"
android:textColor="@android:color/white"
android:textSize="@dimen/module_services_dispatch_airport_dialog_title_size"
android:textStyle="bold" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/module_services_dispatch_airport_dialog_first_column_margin_left"
android:layout_marginTop="@dimen/module_services_dispatch_airport_dialog_task_margin_top"
android:text="@string/module_services_dispatch_dialog_task_info"
android:textSize="@dimen/module_services_dispatch_airport_dialog_next_level_title_size" />
<TextView
android:id="@+id/module_services_dispatch_dialog_task_content"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/module_services_dispatch_airport_dialog_first_column_margin_left"
android:layout_marginEnd="@dimen/module_services_dispatch_airport_dialog_first_column_margin_left"
android:layout_marginTop="@dimen/module_services_dispatch_airport_dialog_task_content_margin_top"
android:textColor="@android:color/white"
android:textSize="@dimen/module_services_dispatch_airport_dialog_task_content_size" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/module_services_dispatch_airport_dialog_last_column_margin_left"
android:layout_marginTop="@dimen/module_services_dispatch_airport_dialog_startloc_margin_top"
android:text="@string/module_services_dispatch_dialog_task_time"
android:textSize="@dimen/module_services_dispatch_airport_dialog_next_level_title_size" />
<TextView
android:id="@+id/module_services_dispatch_dialog_task_time"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/module_services_dispatch_airport_dialog_last_column_margin_left"
android:layout_marginTop="@dimen/module_services_dispatch_airport_dialog_startloc_content_margin_top"
android:textColor="@android:color/white"
android:textSize="@dimen/module_services_dispatch_airport_dialog_title_size"
android:textStyle="bold" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/module_services_dispatch_airport_dialog_last_column_margin_left"
android:layout_marginTop="@dimen/module_services_dispatch_airport_dialog_endloc_margin_top"
android:text="@string/module_services_dispatch_dialog_flight_info"
android:textSize="@dimen/module_services_dispatch_airport_dialog_next_level_title_size" />
<TextView
android:id="@+id/module_services_dispatch_dialog_flight_time"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/module_services_dispatch_airport_dialog_last_column_margin_left"
android:layout_marginTop="@dimen/module_services_dispatch_airport_dialog_endloc_content_margin_top"
android:textColor="@android:color/white"
android:textSize="@dimen/module_services_dispatch_airport_dialog_title_size"
android:textStyle="bold" />
<Button
android:id="@+id/module_services_dispatch_dialog_confirm"
android:layout_width="@dimen/module_services_dispatch_airport_dialog_affirm_width"
android:layout_height="@dimen/module_services_dispatch_airport_dialog_affirm_height"
android:layout_below="@+id/module_services_dispatch_dialog_task_content"
android:layout_centerHorizontal="true"
android:layout_marginTop="@dimen/module_services_dispatch_airport_dialog_margin_top"
android:layout_marginBottom="@dimen/module_services_dispatch_airport_dialog_margin_bottom"
android:background="@drawable/bg_adas_dispatch_affirm"
android:gravity="center"
android:text="@string/module_services_dispatch_dialog_affirm"
android:textColor="@android:color/white"
android:textSize="@dimen/module_services_dispatch_airport_dialog_title_size"
android:textStyle="bold" />
</RelativeLayout>

View File

@@ -0,0 +1,94 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="@dimen/module_services_dispatch_cars_dialog_width"
android:layout_height="@dimen/module_services_dispatch_cars_dialog_height"
android:background="@drawable/module_service_dispatch_cars_bg">
<TextView
android:id="@+id/module_adas_dispatch_remind_timer"
android:layout_width="@dimen/module_services_dispatch_cars_dialog_timer_size"
android:layout_height="@dimen/module_services_dispatch_cars_dialog_timer_size"
android:layout_margin="@dimen/module_services_dispatch_cars_dialog_timer_margin"
android:background="@drawable/module_service_dispatch_timer_bg"
android:gravity="center"
android:text="10"
android:textColor="@color/module_services_dispatch_cars_count_down_txt"
android:textSize="@dimen/module_services_dispatch_cars_dialog_timer_txt_size"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/module_services_dispatch_cars_dialog_title_margin_top"
android:text="@string/module_services_dispatch_cars_remind_title"
android:textColor="@android:color/white"
android:textSize="@dimen/module_services_dispatch_cars_dialog_title_size"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/module_services_dispatch_cars_dialog_content_margin_top"
android:text="@string/module_services_dispatch_cars_remind_content"
android:textColor="@android:color/white"
android:textSize="@dimen/module_services_dispatch_cars_dialog_content_size"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/module_adas_dispatch_remind_loc"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/module_services_dispatch_cars_dialog_loc_margin_top"
android:maxLines="1"
android:textColor="@color/module_services_dispatch_cars_text_loc"
android:textSize="@dimen/module_services_dispatch_cars_dialog_loc_size"
android:textStyle="bold"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<View
android:layout_width="match_parent"
android:layout_height="1px"
android:background="@color/module_services_dispatch_cars_line"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintBottom_toTopOf="@+id/module_adas_dispatch_remind_affirm"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent" />
<Button
android:id="@+id/module_adas_dispatch_remind_affirm"
android:layout_width="@dimen/module_services_dispatch_cars_dialog_btn_width"
android:layout_height="@dimen/module_services_dispatch_cars_dialog_line_margin_bottom"
android:gravity="center"
android:text="@string/module_services_dispatch_cars_affirm"
android:textColor="@color/module_services_dispatch_cars_text_loc"
android:textSize="@dimen/module_services_dispatch_cars_dialog_title_size"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent" />
<View
android:layout_width="1px"
android:layout_height="@dimen/module_services_dispatch_cars_dialog_line_margin_bottom"
android:layout_marginStart="@dimen/module_services_dispatch_cars_dialog_btn_width"
android:background="@color/module_services_dispatch_cars_line"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent" />
<Button
android:id="@+id/module_adas_dispatch_remind_cancel"
android:layout_width="@dimen/module_services_dispatch_cars_dialog_btn_width"
android:layout_height="@dimen/module_services_dispatch_cars_dialog_line_margin_bottom"
android:gravity="center"
android:text="@string/module_services_dispatch_cars_cancel"
android:textColor="@color/module_services_dispatch_cars_cancel"
android:textSize="@dimen/module_services_dispatch_cars_dialog_title_size"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintRight_toRightOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@@ -0,0 +1,40 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<!--鄂州机场调度Dialog-->
<dimen name="module_services_dispatch_airport_dialog_width">1263px</dimen>
<dimen name="module_services_dispatch_airport_dialog_height">1173px</dimen>
<dimen name="module_services_dispatch_airport_dialog_corner">32px</dimen>
<dimen name="module_services_dispatch_airport_dialog_next_level_title_size">38px</dimen>
<dimen name="module_services_dispatch_airport_dialog_title_size">48px</dimen>
<dimen name="module_services_dispatch_airport_dialog_task_content_size">42px</dimen>
<dimen name="module_services_dispatch_airport_dialog_title_margin_top">55px</dimen>
<dimen name="module_services_dispatch_airport_dialog_startloc_margin_top">219px</dimen>
<dimen name="module_services_dispatch_airport_dialog_startloc_content_margin_top">288px</dimen>
<dimen name="module_services_dispatch_airport_dialog_endloc_margin_top">415px</dimen>
<dimen name="module_services_dispatch_airport_dialog_endloc_content_margin_top">484px</dimen>
<dimen name="module_services_dispatch_airport_dialog_task_margin_top">621px</dimen>
<dimen name="module_services_dispatch_airport_dialog_task_content_margin_top">690px</dimen>
<dimen name="module_services_dispatch_airport_dialog_first_column_margin_left">100px</dimen>
<dimen name="module_services_dispatch_airport_dialog_last_column_margin_left">852px</dimen>
<dimen name="module_services_dispatch_airport_dialog_margin_top">86px</dimen>
<dimen name="module_services_dispatch_airport_dialog_margin_bottom">80px</dimen>
<dimen name="module_services_dispatch_airport_dialog_affirm_width">700px</dimen>
<dimen name="module_services_dispatch_airport_dialog_affirm_height">140px</dimen>
<dimen name="module_services_dispatch_airport_dialog_affirm_corner">70px</dimen>
<!--衡阳小巴调度Dialog-->
<dimen name="module_services_dispatch_cars_dialog_width">950px</dimen>
<dimen name="module_services_dispatch_cars_dialog_height">540px</dimen>
<dimen name="module_services_dispatch_cars_dialog_corner">32px</dimen>
<dimen name="module_services_dispatch_cars_dialog_title_size">48px</dimen>
<dimen name="module_services_dispatch_cars_dialog_title_margin_top">55px</dimen>
<dimen name="module_services_dispatch_cars_dialog_content_size">38px</dimen>
<dimen name="module_services_dispatch_cars_dialog_content_margin_top">179px</dimen>
<dimen name="module_services_dispatch_cars_dialog_loc_size">56px</dimen>
<dimen name="module_services_dispatch_cars_dialog_loc_margin_top">251px</dimen>
<dimen name="module_services_dispatch_cars_dialog_line_margin_bottom">152px</dimen>
<dimen name="module_services_dispatch_cars_dialog_btn_width">474.5px</dimen>
<dimen name="module_services_dispatch_cars_dialog_timer_margin">20px</dimen>
<dimen name="module_services_dispatch_cars_dialog_timer_size">46px</dimen>
<dimen name="module_services_dispatch_cars_dialog_timer_txt_size">24px</dimen>
</resources>

View File

@@ -58,4 +58,42 @@
<dimen name="module_services_panel_item_nickname_marginTop">6px</dimen>
<dimen name="module_services_panel_item_distance_tag_marginBottom">6px</dimen>
<dimen name="module_services_panel_item_start">40px</dimen>
<!--鄂州机场调度Dialog-->
<dimen name="module_services_dispatch_airport_dialog_width">947px</dimen>
<dimen name="module_services_dispatch_airport_dialog_height">880px</dimen>
<dimen name="module_services_dispatch_airport_dialog_corner">24px</dimen>
<dimen name="module_services_dispatch_airport_dialog_next_level_title_size">28px</dimen>
<dimen name="module_services_dispatch_airport_dialog_title_size">36px</dimen>
<dimen name="module_services_dispatch_airport_dialog_task_content_size">30px</dimen>
<dimen name="module_services_dispatch_airport_dialog_title_margin_top">41px</dimen>
<dimen name="module_services_dispatch_airport_dialog_startloc_margin_top">164px</dimen>
<dimen name="module_services_dispatch_airport_dialog_startloc_content_margin_top">216px</dimen>
<dimen name="module_services_dispatch_airport_dialog_endloc_margin_top">311px</dimen>
<dimen name="module_services_dispatch_airport_dialog_endloc_content_margin_top">363px</dimen>
<dimen name="module_services_dispatch_airport_dialog_task_margin_top">466px</dimen>
<dimen name="module_services_dispatch_airport_dialog_task_content_margin_top">519px</dimen>
<dimen name="module_services_dispatch_airport_dialog_first_column_margin_left">125px</dimen>
<dimen name="module_services_dispatch_airport_dialog_last_column_margin_left">639px</dimen>
<dimen name="module_services_dispatch_airport_dialog_margin_top">100px</dimen>
<dimen name="module_services_dispatch_airport_dialog_margin_bottom">60px</dimen>
<dimen name="module_services_dispatch_airport_dialog_affirm_width">525px</dimen>
<dimen name="module_services_dispatch_airport_dialog_affirm_height">105px</dimen>
<dimen name="module_services_dispatch_airport_dialog_affirm_corner">52px</dimen>
<!--衡阳小巴调度Dialog-->
<dimen name="module_services_dispatch_cars_dialog_width">712px</dimen>
<dimen name="module_services_dispatch_cars_dialog_height">405px</dimen>
<dimen name="module_services_dispatch_cars_dialog_corner">24px</dimen>
<dimen name="module_services_dispatch_cars_dialog_title_size">36px</dimen>
<dimen name="module_services_dispatch_cars_dialog_title_margin_top">41px</dimen>
<dimen name="module_services_dispatch_cars_dialog_content_size">28px</dimen>
<dimen name="module_services_dispatch_cars_dialog_content_margin_top">134px</dimen>
<dimen name="module_services_dispatch_cars_dialog_loc_size">42px</dimen>
<dimen name="module_services_dispatch_cars_dialog_loc_margin_top">188px</dimen>
<dimen name="module_services_dispatch_cars_dialog_line_margin_bottom">114px</dimen>
<dimen name="module_services_dispatch_cars_dialog_btn_width">355px</dimen>
<dimen name="module_services_dispatch_cars_dialog_timer_margin">15px</dimen>
<dimen name="module_services_dispatch_cars_dialog_timer_size">35px</dimen>
<dimen name="module_services_dispatch_cars_dialog_timer_txt_size">18px</dimen>
</resources>

View File

@@ -9,4 +9,13 @@
<color name="module_services_id_panel_item_avatar_border_color">#3081A4DC</color>
<color name="module_services_empty_tip_textColor">#B2FFFFFF</color>
<color name="module_services_error_textColor">#FFFFFF</color>
<color name="module_services_dispatch_bg">#E63B4577</color>
<color name="module_services_dispatch_affirm_bg">#3E7BFE</color>
<color name="module_services_dispatch_cars_text_loc">#1F9BFE</color>
<color name="module_services_dispatch_cars_background">#E63B4577</color>
<color name="module_services_dispatch_cars_count_down_txt">#8E9DD4</color>
<color name="module_services_dispatch_cars_count_down_bg">#4D000000</color>
<color name="module_services_dispatch_cars_line">#66B8BFE8</color>
<color name="module_services_dispatch_cars_cancel">#AFB3C7</color>
</resources>

View File

@@ -59,5 +59,40 @@
<dimen name="module_services_panel_item_nickname_marginTop">3px</dimen>
<dimen name="module_services_panel_item_distance_tag_marginBottom">3px</dimen>
<dimen name="module_services_panel_item_start">24px</dimen>
¬
<dimen name="module_services_dispatch_airport_dialog_width">1263px</dimen>
<dimen name="module_services_dispatch_airport_dialog_height">1173px</dimen>
<dimen name="module_services_dispatch_airport_dialog_corner">32px</dimen>
<dimen name="module_services_dispatch_airport_dialog_next_level_title_size">38px</dimen>
<dimen name="module_services_dispatch_airport_dialog_title_size">48px</dimen>
<dimen name="module_services_dispatch_airport_dialog_task_content_size">42px</dimen>
<dimen name="module_services_dispatch_airport_dialog_title_margin_top">55px</dimen>
<dimen name="module_services_dispatch_airport_dialog_startloc_margin_top">219px</dimen>
<dimen name="module_services_dispatch_airport_dialog_startloc_content_margin_top">288px</dimen>
<dimen name="module_services_dispatch_airport_dialog_endloc_margin_top">415px</dimen>
<dimen name="module_services_dispatch_airport_dialog_endloc_content_margin_top">484px</dimen>
<dimen name="module_services_dispatch_airport_dialog_task_margin_top">621px</dimen>
<dimen name="module_services_dispatch_airport_dialog_task_content_margin_top">690px</dimen>
<dimen name="module_services_dispatch_airport_dialog_first_column_margin_left">100px</dimen>
<dimen name="module_services_dispatch_airport_dialog_last_column_margin_left">852px</dimen>
<dimen name="module_services_dispatch_airport_dialog_margin_top">86px</dimen>
<dimen name="module_services_dispatch_airport_dialog_margin_bottom">80px</dimen>
<dimen name="module_services_dispatch_airport_dialog_affirm_width">700px</dimen>
<dimen name="module_services_dispatch_airport_dialog_affirm_height">140px</dimen>
<dimen name="module_services_dispatch_airport_dialog_affirm_corner">70px</dimen>
<dimen name="module_services_dispatch_cars_dialog_width">950px</dimen>
<dimen name="module_services_dispatch_cars_dialog_height">540px</dimen>
<dimen name="module_services_dispatch_cars_dialog_corner">32px</dimen>
<dimen name="module_services_dispatch_cars_dialog_title_size">48px</dimen>
<dimen name="module_services_dispatch_cars_dialog_title_margin_top">55px</dimen>
<dimen name="module_services_dispatch_cars_dialog_content_size">38px</dimen>
<dimen name="module_services_dispatch_cars_dialog_content_margin_top">179px</dimen>
<dimen name="module_services_dispatch_cars_dialog_loc_size">56px</dimen>
<dimen name="module_services_dispatch_cars_dialog_loc_margin_top">251px</dimen>
<dimen name="module_services_dispatch_cars_dialog_line_margin_bottom">152px</dimen>
<dimen name="module_services_dispatch_cars_dialog_btn_width">474.5px</dimen>
<dimen name="module_services_dispatch_cars_dialog_timer_margin">20px</dimen>
<dimen name="module_services_dispatch_cars_dialog_timer_size">46px</dimen>
<dimen name="module_services_dispatch_cars_dialog_timer_txt_size">24px</dimen>
</resources>

View File

@@ -1,9 +1,9 @@
<resources>
<string name="app_name">mogo-module-service</string>
<string name="module_service_app_entrance_text">辅助\n驾驶</string>
<string name="module_service_launcher_card_tips">你的周围有%d个%s请点击查看你也可以对我说打开蘑菇出行</string>
<string name="module_service_launcher_card_tips">你的周围有%d个%s请点击查看你也可以对我说打开蘑菇车联‘</string>
<string name="module_service_launcher_card_info">周围有%d个%s</string>
<string name="module_service_open_app_tip">亲,建议您使用蘑菇出行</string>
<string name="module_service_open_app_tip">亲,建议您使用蘑菇车联‘</string>
<string name="module_services_str_20Km_radius">扩大到20公里半径</string>
<string name="module_services_str_40Km_radius">扩大到40公里半径</string>
<string name="module_services_panel_item_distance_tag_text">距离目的地</string>
@@ -12,4 +12,16 @@
<string name="module_services_online_car_panel_empty_tmpl">很抱歉,目的地%d公里内未找到车友</string>
<string name="module_services_online_car_panel_title">目的地车友</string>
<string name="module_services_error_text">加载失败,请点击重试</string>
<string name="module_services_dispatch_dialog_title">您有新的工作任务</string>
<string name="module_services_dispatch_dialog_start_loc">开始地点:</string>
<string name="module_services_dispatch_dialog_end_loc">结束地点:</string>
<string name="module_services_dispatch_dialog_task_time">任务时间:</string>
<string name="module_services_dispatch_dialog_task_info">任务内容:</string>
<string name="module_services_dispatch_dialog_flight_info">航班信息:</string>
<string name="module_services_dispatch_dialog_affirm">接受任务</string>
<string name="module_services_dispatch_cars_remind_title">调度确认</string>
<string name="module_services_dispatch_cars_remind_content">车辆将开启自动驾驶,并行驶至:</string>
<string name="module_services_dispatch_cars_affirm">确认</string>
<string name="module_services_dispatch_cars_cancel">取消</string>
</resources>

View File

@@ -7,8 +7,6 @@ import com.alibaba.android.arouter.facade.annotation.Route;
import com.mogo.map.MogoLatLng;
import com.mogo.map.overlay.IMogoPolyline;
import com.mogo.map.overlay.MogoPolylineOptions;
import com.mogo.module.common.entity.V2XPoiTypeEnum;
import com.mogo.module.common.entity.V2XRoadEventEntity;
import com.mogo.module.v2x.MoGoV2XServicePaths;
import com.mogo.module.v2x.V2XConst;
import com.mogo.module.v2x.V2XServiceManager;

View File

@@ -32,6 +32,14 @@ class RemoteControlAutoPilotParameters {
this.lat = lat;
this.lon = lon;
}
@Override
public String toString() {
return "AutoPilotLonLat{" +
"lat=" + lat +
", lon=" + lon +
'}';
}
}
@Override

View File

@@ -110,7 +110,7 @@ public class MogoADASController implements IMogoADASController {
private IMogoAdasCarDataCallback mMogoAdasCarDataCallback;
private IMogoAdasOCHCallback mAdasOCHCallback;
private List<AdasAIDLOwnerCarRectModel> mLastFrameDatums;
private double mLastLon;
private double mLastLat;
@@ -134,6 +134,8 @@ public class MogoADASController implements IMogoADASController {
return satelliteTime;
}
private final List<IMogoAdasOCHCallback> mAdasOCHCallback = new CopyOnWriteArrayList<>();
/**
* 接收 adas 识别数据线程
*/
@@ -362,11 +364,13 @@ public class MogoADASController implements IMogoADASController {
return;
}
if (mAdasOCHCallback != null) {
mAdasOCHCallback.onArriveAt(new AdasOCHData(
autopilotArriveModel.getCarType(),
autopilotArriveModel.getLon(),
autopilotArriveModel.getLat())
);
for (IMogoAdasOCHCallback cb : mAdasOCHCallback) {
cb.onArriveAt(new AdasOCHData(
autopilotArriveModel.getCarType(),
autopilotArriveModel.getLon(),
autopilotArriveModel.getLat())
);
}
}
}
@@ -400,7 +404,9 @@ public class MogoADASController implements IMogoADASController {
Logger.d(TAG, "notifyAutopilotState: " + autopilotStatus);
DebugConfig.setAutoPilotStatus(autopilotStatus.getValues().getState() + "");
if (mAdasOCHCallback != null) {
mAdasOCHCallback.onStateChanged(autopilotStatus.getValues().getState(), autopilotStatus.getValues().getReason());
for (IMogoAdasOCHCallback cb : mAdasOCHCallback) {
cb.onStateChanged(autopilotStateModel.getState(), autopilotStateModel.getReason());
}
}
}
};
@@ -690,28 +696,33 @@ public class MogoADASController implements IMogoADASController {
}
@Override
public void setAdasCarDataCallback(IMogoAdasCarDataCallback carDataCallback) {
public void setAdasCarDataCallback( IMogoAdasCarDataCallback carDataCallback ) {
mMogoAdasCarDataCallback = carDataCallback;
}
@Override
public void addAdasOCHCallback(IMogoAdasOCHCallback callback) {
mAdasOCHCallback = callback;
if (mAdasOCHCallback.contains(callback)) {
return;
}
mAdasOCHCallback.add(callback);
}
@Override
public void removeAdasOCHCallback() {
mAdasOCHCallback = null;
mAdasOCHCallback.clear();
}
@Override
public void onAutopilotArriveLike(int carType) {
if (mAdasOCHCallback != null) {
mAdasOCHCallback.onArriveAt(new AdasOCHData(
carType,
116.09888888,
39.999999)
);
if (!mAdasOCHCallback.isEmpty()) {
for (IMogoAdasOCHCallback cb : mAdasOCHCallback) {
cb.onArriveAt(new AdasOCHData(
carType,
116.09888888,
39.999999)
);
}
}
}
@@ -734,13 +745,17 @@ public class MogoADASController implements IMogoADASController {
@Override
public void mockOchStatus(int state, String reason) {
if (state == -1) {
if (mAdasOCHCallback != null) {
mAdasOCHCallback.onArriveAt(new AdasOCHData(1, 1d, 1d));
if (!mAdasOCHCallback.isEmpty()) {
for (IMogoAdasOCHCallback cb : mAdasOCHCallback) {
cb.onArriveAt(new AdasOCHData(1, 1d, 1d));
}
}
} else {
mockState = state;
if (mAdasOCHCallback != null) {
mAdasOCHCallback.onStateChanged(state, reason);
if (!mAdasOCHCallback.isEmpty()) {
for (IMogoAdasOCHCallback cb : mAdasOCHCallback) {
cb.onStateChanged(state, reason);
}
}
}
}