Merge branch 'dev2_aiSdk' into qa_och_bus2

# Conflicts:
#	libraries/map-custom/build.gradle
This commit is contained in:
董宏宇
2021-05-27 19:10:58 +08:00
109 changed files with 1084 additions and 980 deletions

2
.idea/gradle.xml generated
View File

@@ -25,8 +25,6 @@
<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-services-apk" />
<option value="$PROJECT_DIR$/foudations/mogo-base-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" />

View File

@@ -251,6 +251,64 @@ android {
// 是否需要使用工控机的rtk定位
buildConfigField 'boolean', 'IS_USE_ADAS_RTK_LOCATION_INFO', 'true'
}
// f系列-网约车-出租车
fPadLenovoOchTaxi {
// 应用包名
applicationId rootProject.ext.android.fLauncherApplicationId
dimension "product"
buildConfigField 'boolean', 'AI_ASSIST_ACTIVE_STAUTS', 'false'
// 车机类型主要用于区分自研车机还是别人家的车机自研车机类型为0
buildConfigField 'int', 'CAR_MACHINE_TYPE', '2'
buildConfigField 'boolean', 'ROAD_EVENT_ANIMATED', 'true'
manifestPlaceholders = [AMAP_API_VALUE: rootProject.ext.android.fLauncherAmapApiValue, CHANNEL_VALUE: "fochtaxi"]
// 是否使用高德sdk自定义导航
buildConfigField 'boolean', 'USE_CUSTOM_NAVI', 'false'
// 是否支持换肤
buildConfigField 'boolean', 'IS_SKIN_SUPPORTED', 'true'
// 是否支持查询导航目的地车友
buildConfigField 'boolean', 'IS_SUPPORTED_SEARCH_DESTINATION_ONLINE_CAR_LIST', 'true'
// 是否支持桌面卡片刷新
buildConfigField 'boolean', 'IS_SUPPORT_LAUNCHER_CARD_REFRESH_STRATEGY', 'false'
// 是否基于地图
buildConfigField 'boolean', 'IS_MAP_BASED', 'true'
// 是否加载引导模块
buildConfigField 'boolean', 'IS_NEED_LOAD_GUIDE_MODULE', 'false'
// 分享时是否隐藏 adas
buildConfigField 'boolean', 'IS_NEED_HIDE_ADAS_WHEN_SHARE', 'false'
// 是否需要实时上报坐标
buildConfigField 'boolean', 'IS_NEED_UPLOAD_COORDINATES_IN_TIME', 'true'
// 是否需要使用工控机的rtk定位
buildConfigField 'boolean', 'IS_USE_ADAS_RTK_LOCATION_INFO', 'true'
}
// f系列-网约车-小巴车
fPadLenovoOchBus {
// 应用包名
applicationId rootProject.ext.android.fLauncherApplicationId
dimension "product"
buildConfigField 'boolean', 'AI_ASSIST_ACTIVE_STAUTS', 'false'
// 车机类型主要用于区分自研车机还是别人家的车机自研车机类型为0
buildConfigField 'int', 'CAR_MACHINE_TYPE', '2'
buildConfigField 'boolean', 'ROAD_EVENT_ANIMATED', 'true'
manifestPlaceholders = [AMAP_API_VALUE: rootProject.ext.android.fLauncherAmapApiValue,CHANNEL_VALUE: "fochbus"]
// 是否使用高德sdk自定义导航
buildConfigField 'boolean', 'USE_CUSTOM_NAVI', 'false'
// 是否支持换肤
buildConfigField 'boolean', 'IS_SKIN_SUPPORTED', 'true'
// 是否支持查询导航目的地车友
buildConfigField 'boolean', 'IS_SUPPORTED_SEARCH_DESTINATION_ONLINE_CAR_LIST', 'true'
// 是否支持桌面卡片刷新
buildConfigField 'boolean', 'IS_SUPPORT_LAUNCHER_CARD_REFRESH_STRATEGY', 'false'
// 是否基于地图
buildConfigField 'boolean', 'IS_MAP_BASED', 'true'
// 是否加载引导模块
buildConfigField 'boolean', 'IS_NEED_LOAD_GUIDE_MODULE', 'false'
// 分享时是否隐藏 adas
buildConfigField 'boolean', 'IS_NEED_HIDE_ADAS_WHEN_SHARE', 'false'
// 是否需要实时上报坐标
buildConfigField 'boolean', 'IS_NEED_UPLOAD_COORDINATES_IN_TIME', 'true'
// 是否需要使用工控机的rtk定位
buildConfigField 'boolean', 'IS_USE_ADAS_RTK_LOCATION_INFO', 'true'
}
// f系列-分体机
phone {
// 应用包名
@@ -649,7 +707,6 @@ dependencies {
implementation project(':modules:mogo-module-search')
implementation project(':modules:mogo-module-authorize')
implementation project(':modules:mogo-module-service')
// implementation project(':modules:mogo-module-obu')
implementation project(':modules:mogo-module-splash')
implementation project(':modules:mogo-module-service')
implementation project(':modules:mogo-module-v2x')
@@ -665,14 +722,12 @@ dependencies {
apply from: "./functions/aicloudservices.gradle"
apply from: "./functions/basedmap.gradle"
apply from: "./functions/perform.gradle"
// apply from: "./functions/baseservices.gradle"
apply from: "./functions/socketpush.gradle"
apply from: "./functions/leftpanel.gradle"
apply from: "./functions/skin.gradle"
apply from: "./functions/crashreport.gradle"
apply from: "./functions/widgets.gradle"
apply from: "./functions/tts.gradle"
// apply from: "./functions/httpdns.gradle"
apply from: "./functions/backwidget.gradle"
apply from: "./functions/mediaui.gradle"
apply from: "./functions/bizguide.gradle"

View File

@@ -37,6 +37,24 @@ project.android.productFlavors {
}
}
}
// 联想Pad
fPadLenovoOchTaxi {
externalNativeBuild {
ndk {
// 设置支持的SO库架构
abiFilters "arm64-v8a"
}
}
}
// 联想Pad
fPadLenovoOchBus {
externalNativeBuild {
ndk {
// 设置支持的SO库架构
abiFilters "arm64-v8a"
}
}
}
// f系列-分体机
f80x {
externalNativeBuild {

View File

@@ -18,6 +18,8 @@ project.dependencies {
em3Implementation rootProject.ext.dependencies.mogoaicloudserviceapk
fochtaxiImplementation rootProject.ext.dependencies.mogoaicloudserviceapk
fochbusImplementation rootProject.ext.dependencies.mogoaicloudserviceapk
fPadLenovoOchTaxiImplementation rootProject.ext.dependencies.mogoaicloudserviceapk
fPadLenovoOchBusImplementation rootProject.ext.dependencies.mogoaicloudserviceapk
} else {
bydautoImplementation project(':foudations:mogo-aicloud-services-sdk')
phoneImplementation project(':foudations:mogo-aicloud-services-sdk')
@@ -36,5 +38,7 @@ project.dependencies {
em3Implementation project(':foudations:mogo-aicloud-services-apk')
fochtaxiImplementation project(':foudations:mogo-aicloud-services-apk')
fochbusImplementation project(':foudations:mogo-aicloud-services-apk')
fPadLenovoOchTaxiImplementation project(':foudations:mogo-aicloud-services-apk')
fPadLenovoOchBusImplementation project(':foudations:mogo-aicloud-services-apk')
}
}

View File

@@ -8,6 +8,8 @@ project.dependencies {
f80xImplementation rootProject.ext.dependencies.mapcustom
fochtaxiImplementation rootProject.ext.dependencies.mapcustom
fochbusImplementation rootProject.ext.dependencies.mapcustom
fPadLenovoOchTaxiImplementation rootProject.ext.dependencies.mapcustom
fPadLenovoOchBusImplementation rootProject.ext.dependencies.mapcustom
phoneImplementation rootProject.ext.dependencies.mapcustom
f8AmapImplementation rootProject.ext.dependencies.mapamap
@@ -27,6 +29,8 @@ project.dependencies {
f80xImplementation project(':libraries:map-custom')
fochtaxiImplementation project(':libraries:map-custom')
fochbusImplementation project(':libraries:map-custom')
fPadLenovoOchTaxiImplementation project(':libraries:map-custom')
fPadLenovoOchBusImplementation project(':libraries:map-custom')
phoneImplementation project(':libraries:map-custom')
f8AmapImplementation project(':libraries:map-amap')

View File

@@ -19,6 +19,8 @@ project.dependencies {
em3Implementation rootProject.ext.dependencies.mogobaseserviceapk
fochtaxiImplementation rootProject.ext.dependencies.mogobaseserviceapk
fochbusImplementation rootProject.ext.dependencies.mogobaseserviceapk
fPadLenovoOchTaxiImplementation rootProject.ext.dependencies.mogobaseserviceapk
fPadLenovoOchBusImplementation rootProject.ext.dependencies.mogobaseserviceapk
} else {
bydautoImplementation project(':foudations:mogo-base-services-sdk')
phoneImplementation project(':foudations:mogo-base-services-sdk')
@@ -37,5 +39,7 @@ project.dependencies {
em3Implementation project(':foudations:mogo-base-services-apk')
fochtaxiImplementation project(':foudations:mogo-base-services-apk')
fochbusImplementation project(':foudations:mogo-base-services-apk')
fPadLenovoOchTaxiImplementation project(':foudations:mogo-base-services-apk')
fPadLenovoOchBusImplementation project(':foudations:mogo-base-services-apk')
}
}

View File

@@ -15,6 +15,8 @@ project.dependencies {
em3Implementation rootProject.ext.dependencies.mogomoduleguide
fochtaxiImplementation rootProject.ext.dependencies.mogomoduleguide
fochbusImplementation rootProject.ext.dependencies.mogomoduleguide
fPadLenovoOchTaxiImplementation rootProject.ext.dependencies.mogomoduleguide
fPadLenovoOchBusImplementation rootProject.ext.dependencies.mogomoduleguide
} else {
bydautoImplementation project(':modules:mogo-module-guide')
phoneImplementation project(':modules:mogo-module-guide')
@@ -29,5 +31,7 @@ project.dependencies {
em3Implementation project(':modules:mogo-module-guide')
fochtaxiImplementation project(':modules:mogo-module-guide')
fochbusImplementation project(':modules:mogo-module-guide')
fPadLenovoOchTaxiImplementation project(':modules:mogo-module-guide')
fPadLenovoOchBusImplementation project(':modules:mogo-module-guide')
}
}

View File

@@ -5,11 +5,11 @@ project.dependencies {
implementation rootProject.ext.dependencies.crashreport
implementation rootProject.ext.dependencies.crashreportupgrade
debugImplementation rootProject.ext.dependencies.crashreportbugly
releaseImplementation rootProject.ext.dependencies.crashreportnoop
releaseImplementation rootProject.ext.dependencies.crashreportbugly
} else {
implementation project(':test:crashreport')
implementation project(':test:crashreport-upgrade')
debugImplementation project(':test:crashreport-bugly')
releaseImplementation project(':test:crashreport-noop')
implementation project(':test:crashreport-bugly')
releaseImplementation project(':test:crashreport-bugly')
}
}

View File

@@ -19,6 +19,8 @@ project.dependencies {
em3Implementation rootProject.ext.dependencies.moduleleftpanelnoop
fochtaxiImplementation rootProject.ext.dependencies.moduleleftpanelnoop
fochbusImplementation rootProject.ext.dependencies.moduleleftpanelnoop
fPadLenovoOchTaxiImplementation rootProject.ext.dependencies.moduleleftpanelnoop
fPadLenovoOchBusImplementation rootProject.ext.dependencies.moduleleftpanelnoop
phoneImplementation rootProject.ext.dependencies.moduleleftpanelnoop
} else {
bydautoImplementation project(':modules:mogo-module-left-panel')
@@ -37,6 +39,8 @@ project.dependencies {
em3Implementation project(':modules:mogo-module-left-panel-noop')
fochtaxiImplementation project(':modules:mogo-module-left-panel-noop')
fochbusImplementation project(':modules:mogo-module-left-panel-noop')
fPadLenovoOchTaxiImplementation project(':modules:mogo-module-left-panel-noop')
fPadLenovoOchBusImplementation project(':modules:mogo-module-left-panel-noop')
phoneImplementation project(':modules:mogo-module-left-panel-noop')
}
}

View File

@@ -17,6 +17,8 @@ project.dependencies {
e8xxImplementation rootProject.ext.dependencies.mogoochnoop
fochtaxiImplementation rootProject.ext.dependencies.mogoochtaxi
fochbusImplementation rootProject.ext.dependencies.mogoochbus
fPadLenovoOchTaxiImplementation rootProject.ext.dependencies.mogoochtaxi
fPadLenovoOchBusImplementation rootProject.ext.dependencies.mogoochbus
} else {
bydautoImplementation project(':OCH:mogo-och-noop')
phoneImplementation project(':OCH:mogo-och-noop')
@@ -34,5 +36,7 @@ project.dependencies {
e8xxImplementation project(':OCH:mogo-och-noop')
fochtaxiImplementation project(':OCH:mogo-och-taxi')
fochbusImplementation project(':OCH:mogo-och-bus')
fPadLenovoOchTaxiImplementation project(':OCH:mogo-och-taxi')
fPadLenovoOchBusImplementation project(':OCH:mogo-och-bus')
}
}

View File

@@ -17,6 +17,8 @@ project.dependencies {
e8xxImplementation rootProject.ext.dependencies.skinsupportimpl
fochtaxiImplementation rootProject.ext.dependencies.skinsupportimpl
fochbusImplementation rootProject.ext.dependencies.skinsupportimpl
fPadLenovoOchTaxiImplementation rootProject.ext.dependencies.skinsupportimpl
fPadLenovoOchBusImplementation rootProject.ext.dependencies.skinsupportimpl
phoneImplementation rootProject.ext.dependencies.skinsupportimpl
f8xxImplementation rootProject.ext.dependencies.skinsupportlight
@@ -30,6 +32,8 @@ project.dependencies {
em3Implementation rootProject.ext.dependencies.skinsupportlight
fochtaxiImplementation rootProject.ext.dependencies.skinsupportlight
fochbusImplementation rootProject.ext.dependencies.skinsupportlight
fPadLenovoOchTaxiImplementation rootProject.ext.dependencies.skinsupportlight
fPadLenovoOchBusImplementation rootProject.ext.dependencies.skinsupportlight
phoneImplementation rootProject.ext.dependencies.skinsupportlight
} else {
@@ -51,6 +55,8 @@ project.dependencies {
e8xxImplementation project(':skin:mogo-skin-support-impl')
fochtaxiImplementation project(':skin:mogo-skin-support-impl')
fochbusImplementation project(':skin:mogo-skin-support-impl')
fPadLenovoOchTaxiImplementation project(':skin:mogo-skin-support-impl')
fPadLenovoOchBusImplementation project(':skin:mogo-skin-support-impl')
phoneImplementation project(':skin:mogo-skin-support-impl')
f8xxImplementation project(':skin:mogo-skin-light')
@@ -64,6 +70,8 @@ project.dependencies {
em3Implementation project(':skin:mogo-skin-light')
fochtaxiImplementation project(':skin:mogo-skin-light')
fochbusImplementation project(':skin:mogo-skin-light')
fPadLenovoOchTaxiImplementation project(':skin:mogo-skin-light')
fPadLenovoOchBusImplementation project(':skin:mogo-skin-light')
phoneImplementation project(':skin:mogo-skin-light')
}
}

View File

@@ -15,6 +15,8 @@ project.dependencies {
e8xxImplementation rootProject.ext.dependencies.ttszhi
fochtaxiImplementation rootProject.ext.dependencies.ttszhi
fochbusImplementation rootProject.ext.dependencies.ttszhi
fPadLenovoOchTaxiImplementation rootProject.ext.dependencies.ttszhi
fPadLenovoOchBusImplementation rootProject.ext.dependencies.ttszhi
phoneImplementation rootProject.ext.dependencies.ttszhi
} else {
bydautoImplementation project(':tts:tts-di')
@@ -32,6 +34,8 @@ project.dependencies {
e8xxImplementation project(':tts:tts-zhi')
fochtaxiImplementation project(':tts:tts-zhi')
fochbusImplementation project(':tts:tts-zhi')
fPadLenovoOchTaxiImplementation project(':tts:tts-zhi')
fPadLenovoOchBusImplementation project(':tts:tts-zhi')
phoneImplementation project(':tts:tts-zhi')
}
}

View File

@@ -3,7 +3,7 @@
afterEvaluate {
def independent = ["em3", "em1", "d80x", "d82x", "bydauto", "em2", "phone"]
def launcher = ["f80x", "f8xx", "f8amap", "em4", "e8xx", "fochtaxi", "fochbus", "fPadLenovo"]
def launcher = ["f80x", "f8xx", "f8amap", "em4", "e8xx", "fochtaxi", "fochbus", "fPadLenovo", "fPadLenovoOchTaxi", "fPadLenovoOchBus"]
it.getTasks().iterator().forEachRemaining {
def task = it

View File

@@ -1,9 +1,9 @@
package com.mogo.launcher;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.os.Process;
import android.text.TextUtils;
import android.util.Log;
import com.alibaba.android.arouter.launcher.ARouter;
@@ -34,7 +34,6 @@ import com.mogo.service.MogoServicePaths;
import com.mogo.test.crashreport.ITestCrashReportProvider;
import com.mogo.test.crashreport.upgrade.UpgradeReportProvider;
import com.mogo.utils.ProcessUtils;
import com.mogo.utils.UiThreadHandler;
import com.mogo.utils.httpdns.HttpSimpleLocation;
import com.mogo.utils.logger.LogLevel;
import com.mogo.utils.logger.Logger;
@@ -123,6 +122,17 @@ public class MogoApplication extends AbsMogoApplication {
ARouter.getInstance().navigation(ITestCrashReportProvider.class);
}
Log.i("timer", "cost " + (System.currentTimeMillis() - start) + "ms");
try {
if (DebugConfig.getCarMachineType() == DebugConfig.CAR_MACHINE_TYPE_LENOVO) {
Intent intent = new Intent();
intent.setComponent(new ComponentName("com.zhidao.speech", "com.zhidao.speech.MainActivity"));
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
}
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
@@ -213,13 +223,26 @@ public class MogoApplication extends AbsMogoApplication {
clientConfig.setNetMode(MogoHttpDnsConfig.HTTP_DNS_ENV_RELEASE);
}
// 设置是否是第三APP登录
clientConfig.setThirdLogin(false);
clientConfig.setThirdLogin(DebugConfig.getCarMachineType() != DebugConfig.CAR_MACHINE_TYPE_SELF_INNOVATE);
// 设置是否输出日志
clientConfig.setShowDebugLog(true);
// 设置是否是直播推流的主播
clientConfig.setAnchor(false);
// 设置从蘑菇AI开放平台获取的APPKey
clientConfig.setThirdPartyAppKey("wbvpzgar");
switch (DebugConfig.getCarMachineType()) {
// 自研车机
case DebugConfig.CAR_MACHINE_TYPE_SELF_INNOVATE:
clientConfig.setThirdPartyAppKey("wbvpzgar");
break;
// 比亚迪
case DebugConfig.CAR_MACHINE_TYPE_BYD:
clientConfig.setThirdPartyAppKey("bydauto");
break;
// 衡阳-鹰眼项目
case DebugConfig.CAR_MACHINE_TYPE_LENOVO:
clientConfig.setThirdPartyAppKey("pfieouqg");
break;
}
// 设置应用服务AppId 长链、鉴权
clientConfig.setServiceAppId("com.mogo.launcher");
// 设置AI云平台分配给三方应用的签名密钥需要从AI云平台申请
@@ -230,7 +253,6 @@ public class MogoApplication extends AbsMogoApplication {
// 设置是否使用MoGoAiCloud SDK内部定位进行实时数据上报
clientConfig.setIsUseExternalLocation(true);
// 设置DNS经纬度位置
clientConfig.setIHttpDnsCurrentLocation(new IHttpDnsCurrentLocation() {
@Override

View File

@@ -12,8 +12,8 @@ ext {
commonIndependentAmapApiValue : "1c3fbc5f5e183619ffb1e7bc01e6751f",
compileSdkVersion : 28,
buildToolsVersion : "29.0.2",
minSdkVersion : 19,
targetSdkVersion : 22,
minSdkVersion : 22,
targetSdkVersion : 23,
]
dependencies = [
// androidx

View File

@@ -43,6 +43,7 @@ dependencies {
implementation rootProject.ext.dependencies.rxjava
implementation rootProject.ext.dependencies.accountsdk
api rootProject.ext.dependencies.mogoaicloudrealtime
implementation rootProject.ext.dependencies.amapnavi3dmap
if (Boolean.valueOf(RELEASE)) {
implementation rootProject.ext.dependencies.mogoutils

View File

@@ -11,6 +11,8 @@ import android.widget.ImageView;
import android.widget.TextView;
import com.alibaba.android.arouter.launcher.ARouter;
import com.amap.api.navi.AMapNaviView;
import com.android.internal.policy.MyPhoneLayoutInflater;
import com.mogo.commons.analytics.AnalyticsUtils;
import com.mogo.commons.debug.DebugConfig;
import com.mogo.commons.device.Devices;
@@ -59,9 +61,17 @@ public abstract class AbsMogoApplication extends Application {
return sApp;
}
public static AMapNaviView aMapNaviView;
public static AMapNaviView getMapNaviView() {
return aMapNaviView;
}
@Override
public void onCreate() {
super.onCreate();
aMapNaviView = new AMapNaviView(this);
aMapNaviView.onCreate(null);
// 在设置皮肤布局填充器之前进行克隆一个出来
mLayoutInflaterNoSkin = LayoutInflater.from(new ContextThemeWrapper(this, R.style.Theme_AppCompat)).cloneInContext(new ContextThemeWrapper(this, R.style.Theme_AppCompat));
sApp = this;

View File

@@ -1,8 +1,10 @@
package com.mogo.commons.mvp;
import android.content.Context;
import android.os.Build;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
@@ -40,6 +42,24 @@ public abstract class MvpActivity< V extends IView, P extends Presenter< V > >
getLifecycle().addObserver( mPresenter );
}
@Override
protected void onResume() {
super.onResume();
hideBottomUIMenu();
}
//隐藏导航栏
protected void hideBottomUIMenu() {
//隐藏虚拟按键
if (Build.VERSION.SDK_INT >= 19) {
//for new api versions.
View decorView = getWindow().getDecorView();
int uiOptions = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY ;
decorView.setSystemUiVisibility(uiOptions);
}
}
protected void beforeSetContentView(Bundle savedInstanceState){
}

View File

@@ -2,17 +2,15 @@ package com.mogo.commons.network;
import android.Manifest;
import android.content.Context;
import android.content.SharedPreferences;
import android.content.pm.PackageManager;
import android.telephony.CellLocation;
import android.telephony.TelephonyManager;
import android.telephony.cdma.CdmaCellLocation;
import android.telephony.gsm.GsmCellLocation;
import android.text.TextUtils;
import com.mogo.commons.AbsMogoApplication;
import com.mogo.commons.debug.DebugConfig;
import com.mogo.utils.storage.SharedPrefsMgr;
import com.mogo.utils.DeviceIdUtils;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
@@ -66,9 +64,8 @@ public class Utils {
public static final String PROPERTIES = "android.os.SystemProperties";
public static String getSn() {
if ( DebugConfig.getCarMachineType() != DebugConfig.CAR_MACHINE_TYPE_SELF_INNOVATE ) {
return SharedPrefsMgr.getInstance( AbsMogoApplication.getApp() ).getString( "allocated_sn" );
return DeviceIdUtils.getDeviceId(AbsMogoApplication.getApp());
}
return getSystemProperties( GSM_SERIAL );
}

View File

@@ -146,7 +146,7 @@ MOGO_OCH_TAXI_VERSION=1.0.0
######## 外部依赖引用
# 车聊聊
CARCHATTING_VERSION=2.2.320
CARCHATTING_VERSION=2.2.325
# 车聊聊接口
CARCHATTINGPROVIDER_VERSION=1.1.11
# websocket

View File

@@ -67,7 +67,7 @@ dependencies {
implementation project(':foudations:mogo-commons')
}
implementation 'com.zhidaoauto.machine:map:1.0.0-vr-8.5.29'
implementation 'com.zhidaoauto.machine:map:1.0.0-vr-8.5.31'
// implementation 'com.zhidaoauto.machine:map:1.0.0-vr-test-3.4'
}

View File

@@ -766,7 +766,7 @@ public class AMapViewWrapper implements IMogoMapView,
if (!mIsDelayed) {
mIsDelayed = true;
UiThreadHandler.postDelayed(() -> {
Logger.d(TAG, "倒计时结束");
//Logger.d(TAG, "倒计时结束");
mIsFirstLocated = false;
}, 5_000L);
}

View File

@@ -95,7 +95,7 @@ class CustomMapApiBuilder implements IMogoMapApiBuilder {
public IMogoMapView getMapView( Context context ) {
Log.d(TAG,"setDebugMode==true");
NavAutoApi.INSTANCE.init( context, MapParams.Companion.init()
.setDebugMode( true )
.setDebugMode( false )
.setCoordinateType( MapParams.COORDINATETYPE_GCJ02 )
.setPerspectiveMode( MapParams.MAP_PERSPECTIVE_2D )
.setZoom( 20 )

View File

@@ -68,11 +68,15 @@ object CarCorderController : TakePhotoCallback, TakeVideoCallback {
}
fun initCarCorderController() {
zdCarCoderController =
ZdCarCoderController.getInstance(AbsMogoApplication.getApp().applicationContext)
zdCarCoderController.addCallback(this)
zdCarCoderController.addVideoCallback(this)
zdCarCoderController.init()
try {
zdCarCoderController =
ZdCarCoderController.getInstance(AbsMogoApplication.getApp().applicationContext)
zdCarCoderController.addCallback(this)
zdCarCoderController.addVideoCallback(this)
zdCarCoderController.init()
} catch (e: Exception) {
e.printStackTrace()
}
}

View File

@@ -44,10 +44,12 @@ dependencies {
api rootProject.ext.dependencies.modulemain
implementation rootProject.ext.dependencies.mogooch
implementation rootProject.ext.dependencies.moduleservice
implementation rootProject.ext.dependencies.moduleSmallMap
} else {
api project(":modules:mogo-module-main")
implementation project(":OCH:mogo-och")
implementation project(':modules:mogo-module-service')
implementation project(':modules:mogo-module-smp')
}
}

View File

@@ -1,6 +1,11 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.zhidao.mogo.module.main.launcher">
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<application>
<activity
android:name=".MainLauncherActivity"

View File

@@ -1,15 +1,24 @@
package com.zhidao.mogo.module.main.launcher;
import android.Manifest;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.net.Uri;
import android.os.Bundle;
import android.os.Handler;
import android.os.Process;
import android.provider.Settings;
import android.text.TextUtils;
import android.util.Log;
import android.view.View;
import android.widget.ImageView;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;
import com.alibaba.android.arouter.launcher.ARouter;
import com.mogo.commons.debug.DebugConfig;
@@ -20,6 +29,7 @@ import com.mogo.module.main.cards.MogoModulesManager;
import com.mogo.module.service.receiver.MogoReceiver;
import com.mogo.och.IMogoOCH;
import com.mogo.service.intent.IMogoIntentListener;
import com.mogo.service.map.IMogoSmallMapProvider;
import com.mogo.service.statusmanager.StatusDescriptor;
import com.mogo.service.v2x.IV2XListener;
import com.mogo.utils.logger.Logger;
@@ -28,6 +38,7 @@ import static com.mogo.module.common.entity.V2XMessageEntity.V2XTypeEnum.ALERT_T
import static com.mogo.module.common.entity.V2XMessageEntity.V2XTypeEnum.ALERT_THE_FRONT_CRASH_WARNING_LEFT;
import static com.mogo.module.common.entity.V2XMessageEntity.V2XTypeEnum.ALERT_THE_FRONT_CRASH_WARNING_RIGHT;
import static com.mogo.module.common.entity.V2XMessageEntity.V2XTypeEnum.ALERT_THE_FRONT_CRASH_WARNING_TOP;
import static com.mogo.utils.ProcessUtils.getPackageName;
/**
* 针对作为Launcher的情况做个性化操作
@@ -115,7 +126,9 @@ public class MainLauncherActivity extends MainActivity implements IMogoIntentLis
@Override
protected void loadOthersModules() {
super.loadOthersModules();
Logger.d(TAG, "loadOthersModules");
loadOCHModule();
loadSmpModule();
}
/**
@@ -128,6 +141,16 @@ public class MainLauncherActivity extends MainActivity implements IMogoIntentLis
}
}
/**
* 加载小地图模块
*/
private void loadSmpModule() {
IMogoSmallMapProvider smp = ARouter.getInstance().navigation(IMogoSmallMapProvider.class);
if (smp != null) {
smp.init(this, R.id.module_main_id_smp_fragment);
}
}
@Override
protected void onDestroy() {
super.onDestroy();
@@ -158,7 +181,6 @@ public class MainLauncherActivity extends MainActivity implements IMogoIntentLis
}
@Override
public void warningChangedWithDirection(int type) {
Log.d(TAG, "显示红色预警蒙层");
@@ -227,7 +249,7 @@ public class MainLauncherActivity extends MainActivity implements IMogoIntentLis
@Override
public void onStatusChanged(StatusDescriptor descriptor, boolean isTrue) {
super.onStatusChanged(descriptor,isTrue);
super.onStatusChanged(descriptor, isTrue);
if (isTrue) {
mLeftShadowFrame.setVisibility(View.GONE);
mApps.setVisibility(View.GONE);
@@ -236,4 +258,5 @@ public class MainLauncherActivity extends MainActivity implements IMogoIntentLis
mApps.setVisibility(View.VISIBLE);
}
}
}

View File

@@ -45,7 +45,6 @@
:modules:mogo-module-left-panel
:modules:mogo-module-left-panel-noop
:foudations:mogo-base-services-apk
:foudations:mogo-base-services-sdk
:modules:mogo-module-push-base
:modules:mogo-module-push-noop
:modules:mogo-module-push

View File

@@ -140,6 +140,9 @@ public class SnapshotLocationController {
mLastLocationInfo = null;
}
}
if (list.size() == 0) {
return null;
}
//Logger.d( TAG, "upload loc size = %s", list == null ? 0 : list.size() );
return list;
}

View File

@@ -18,6 +18,7 @@ import android.widget.EditText;
import android.widget.FrameLayout;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.RadioButton;
import android.widget.TextView;
@@ -181,8 +182,10 @@ public class EntranceFragment extends MvpFragment<EntranceView, EntrancePresente
private boolean isShowGuide;
//远景和中景的切换
private ImageView mSwitchMapModeImage;
private FrameLayout mSwitchMapModeLayout;
private TextView mSwitchText;
/**
* 搜索莫模块
@@ -375,8 +378,12 @@ public class EntranceFragment extends MvpFragment<EntranceView, EntrancePresente
mSwitchMapModeLayout = (FrameLayout) findViewById(R.id.module_switch_model_layout);
mSwitchMapModeImage = (ImageView) findViewById(R.id.module_switch_model_icon);
mSwitchMapModeImage.setOnClickListener(clickListener);
mSwitchMapModeLayout.setOnClickListener(clickListener);
mSwitchText = (TextView) findViewById(R.id.module_switch_model_text);
if (DebugConfig.getCarMachineType() == DebugConfig.CAR_MACHINE_TYPE_LENOVO ) {
enterVrMode();
}
}
private int debugPanelClickCount = 0;
@@ -386,7 +393,7 @@ public class EntranceFragment extends MvpFragment<EntranceView, EntrancePresente
private Group groupFix;
private void enterVrMode() {
if (!localIsVrMode) {
// if (!localIsVrMode) {
tvEnterVrMode.setVisibility(View.GONE);
mMove2CurrentLocation.setVisibility(View.GONE);
mUploadRoadCondition.setVisibility(View.GONE);
@@ -410,7 +417,7 @@ public class EntranceFragment extends MvpFragment<EntranceView, EntrancePresente
flSpeed.setVisibility(View.VISIBLE);
mSwitchMapModeLayout.setVisibility(View.VISIBLE);
// clTrafficLight.setVisibility(View.VISIBLE);
}
// }
}
private void exitVrMode() {
@@ -717,6 +724,11 @@ public class EntranceFragment extends MvpFragment<EntranceView, EntrancePresente
TopViewAnimHelper.getInstance().setIMogoMapUIController(mMApUIController);
TopViewNoLinkageAnimHelper.getInstance().setIMogoMapUIController(mMApUIController);
// 进入vr模式不可缩放地图
if (DebugConfig.getCarMachineType() == DebugConfig.CAR_MACHINE_TYPE_LENOVO ) {
UiThreadHandler.postDelayed(this::stepIntoVrMode, 3_000L );
}
mClickShareVoiceStrings =
getContext().getResources().getStringArray(R.array.click_share_voice_guide_array);
mInnerGuideVoiceStrings =
@@ -725,6 +737,18 @@ public class EntranceFragment extends MvpFragment<EntranceView, EntrancePresente
getContext().getResources().getStringArray(R.array.search_voice_guide_outer_array);
}
/**
* 进入鹰眼模式,设置手势缩放地图失效
*/
private void stepIntoVrMode(){
Logger.d( TAG, "进入vr模式" );
MogoApisHandler.getInstance()
.getApis()
.getMapServiceApi()
.getMapUIController()
.openVrMode(false);
}
@Override
public void onResume() {
super.onResume();
@@ -1345,15 +1369,17 @@ public class EntranceFragment extends MvpFragment<EntranceView, EntrancePresente
// show panel
debugPanelGroup.setVisibility(View.VISIBLE);
}
} else if (v.getId() == R.id.module_switch_model_icon) { //切换地图的远近视图
} else if (v.getId() == R.id.module_switch_model_layout) { //切换地图的远近视图
if (MogoApisHandler.getInstance().getApis().getMapServiceApi().getMapUIController().getCurrentMapVisualAngle().isLongSight()) {
MogoApisHandler.getInstance().getApis().getMapServiceApi().getMarkerManager(AbsMogoApplication.getApp()).visibleAllMarkers();
MogoApisHandler.getInstance().getApis().getMapServiceApi()
.getMapUIController().changeMapVisualAngle(VisualAngleMode.MODE_MEDIUM_SIGHT);
mSwitchText.setText(R.string.module_map_model_normal);
} else if (MogoApisHandler.getInstance().getApis().getMapServiceApi().getMapUIController().getCurrentMapVisualAngle().isMediumSight()) {
MogoApisHandler.getInstance().getApis().getMapServiceApi().getMarkerManager(AbsMogoApplication.getApp()).inVisibleAllMarkers();
MogoApisHandler.getInstance().getApis().getMapServiceApi()
.getMapUIController().changeMapVisualAngle(VisualAngleMode.MODE_LONG_SIGHT);
mSwitchText.setText(R.string.module_map_model_faster);
}
}

View File

@@ -75,6 +75,7 @@ public class TopViewAnimHelper {
public void init(ConstraintLayout rootView, OnTopViewAnimSimpleListener listener) {
topMotionLayout = rootView;
topContainer = rootView.findViewById(R.id.module_entrance_id_top_container);
topContainer.getLayoutParams().width = (int) getDimen(R.dimen.module_ext_top_view_width);
animNavInfoView = rootView.findViewById(R.id.module_ext_id_anim_nav_info);
vrModeNavInfoView = rootView.findViewById(R.id.module_ext_id_vr_nav_info);

View File

@@ -15,6 +15,8 @@ import android.view.View;
import androidx.annotation.Nullable;
import com.mogo.module.extensions.R;
/**
* created by wujifei on 2021/3/24 16:20
* describe:
@@ -28,7 +30,7 @@ public class ArcView extends View {
//圆弧颜色
private int mArcColor;
//圆弧的画笔的宽度
private float mStrokeWith = 10;
private float mStrokeWith = getResources().getDimension(R.dimen.module_ext_arcView_stroke_with);
//文字描述的paint
private Paint mTextPaint;
@@ -73,11 +75,11 @@ public class ArcView extends View {
mTextPaint.setTypeface(Typeface.defaultFromStyle(Typeface.BOLD));
//绘制中心的数值
mTextPaint.getTextBounds(mValue, 0, mValue.length(), mRect);
canvas.drawText(mValue, getWidth() / 2, getHeight() / 2 + mRect.height() / 2-10, mTextPaint);
canvas.drawText(mValue, getWidth() / 2, getHeight() / 2 + mRect.height() / 2 - 10, mTextPaint);
mTextPaint.setTypeface(Typeface.defaultFromStyle(Typeface.NORMAL));
//绘制中心文字描述
mTextPaint.setTextSize(28);
mTextPaint.setTextSize(getResources().getDimension(R.dimen.module_ext_arcView_des_text_size));
mTextPaint.getTextBounds(mDes, 0, mDes.length(), mRect);
canvas.drawText(mDes, getWidth() / 2, getHeight() * 17 / 20 + mRect.height() / 2, mTextPaint);
}
@@ -116,7 +118,7 @@ public class ArcView extends View {
//设置文本的对齐方式
mTextPaint.setTextAlign(Paint.Align.CENTER);
//mTextPaint.setTextSize(getResources().getDimensionPixelSize(R.dimen.dp_12));
mTextPaint.setTextSize(80);
mTextPaint.setTextSize(getResources().getDimension(R.dimen.module_ext_arcView_center_text_size));
}

View File

@@ -2,7 +2,7 @@
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<corners android:radius="26px" />
<corners android:radius="60px" />
<solid android:color="@color/module_switch_map_bg" />

View File

@@ -26,8 +26,8 @@
<FrameLayout
android:id="@+id/fl_speed"
android:layout_width="@dimen/dp_300"
android:layout_height="@dimen/dp_300"
android:layout_width="@dimen/module_ext_speed_width"
android:layout_height="@dimen/module_ext_speed_height"
android:layout_marginLeft="@dimen/dp_20"
android:layout_marginTop="@dimen/dp_10"
android:background="@drawable/yi_biao_pan_bg_nor"
@@ -39,32 +39,51 @@
<com.mogo.module.extensions.view.ArcView
android:id="@+id/moudule_arc"
android:layout_width="@dimen/dp_200"
android:layout_height="@dimen/dp_200"
android:layout_width="@dimen/module_ext_arcView_width"
android:layout_height="@dimen/module_ext_arcView_height"
android:layout_gravity="center" />
</FrameLayout>
<!--切换地图远近事件-->
<!--切换地图远近事件 @dimen/module_switch_map -->
<FrameLayout
android:id="@+id/module_switch_model_layout"
android:layout_width="@dimen/module_switch_map"
android:layout_height="@dimen/module_switch_map"
android:layout_height="@dimen/module_switch_map_height"
android:layout_marginLeft="@dimen/dp_20"
android:layout_marginBottom="26px"
android:background="@drawable/module_switch_map_bg"
android:elevation="@dimen/dp_10"
android:padding="@dimen/dp_20"
android:visibility="gone"
android:background="@drawable/module_switch_map_bg"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintBottom_toBottomOf="parent">
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent">
<ImageView
android:id="@+id/module_switch_model_icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:src="@drawable/module_switch_map_angle" />
<LinearLayout
android:id="@+id/module_switch_layout"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:orientation="horizontal">
<ImageView
android:id="@+id/module_switch_model_icon"
android:layout_width="@dimen/module_switch_image"
android:layout_height="@dimen/module_switch_image"
android:paddingLeft="@dimen/module_switch_margin_left"
android:layout_gravity="left|center_vertical"
android:src="@drawable/module_switch_map_angle" />
<TextView
android:id="@+id/module_switch_model_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingLeft="@dimen/module_switch_margin_left"
android:textSize="@dimen/module_switch_text_size"
android:gravity="right|center"
android:text="@string/module_map_model_normal"
android:textColor="@color/module_ext_color_voice_text" />
</LinearLayout>
</FrameLayout>
<androidx.constraintlayout.widget.ConstraintLayout

View File

@@ -163,6 +163,5 @@
<dimen name="module_event_live_error_text_size">36px</dimen>
<dimen name="module_video_window_height_content">393px</dimen>
<dimen name="module_video_window_width_content">700px</dimen>
<dimen name="module_switch_map">108px</dimen>
</resources>

View File

@@ -0,0 +1,16 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<dimen name="module_ext_top_view_width_in_vr_mode">1100px</dimen>
<dimen name="module_ext_speed_width">460px</dimen>
<dimen name="module_ext_speed_height">460px</dimen>
<dimen name="module_ext_arcView_width">320px</dimen>
<dimen name="module_ext_arcView_height">320px</dimen>
<dimen name="module_ext_arcView_stroke_with">15px</dimen>
<dimen name="module_ext_arcView_center_text_size">110px</dimen>
<dimen name="module_ext_arcView_des_text_size">40px</dimen>
<dimen name="module_switch_map">279px</dimen>
<dimen name="module_switch_map_height">119px</dimen>
<dimen name="module_switch_margin_left">22px</dimen>
<dimen name="module_switch_text_size">36px</dimen>
<dimen name="module_switch_image">50px</dimen>
</resources>

View File

@@ -1,167 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<!-- module_ext_layout_entrance.xml-->
<dimen name="module_ext_search_height">90px</dimen>
<dimen name="module_ext_search_marginLeft">32px</dimen>
<dimen name="module_ext_search_marginTop">2px</dimen>
<dimen name="module_ext_search_drawablePadding">16px</dimen>
<dimen name="module_ext_search_paddingLeft">26px</dimen>
<dimen name="module_ext_search_paddingRight">26px</dimen>
<dimen name="module_ext_search_textSize">32px</dimen>
<dimen name="module_ext_common_address_height">90px</dimen>
<dimen name="module_ext_common_address_marginLeft">32px</dimen>
<dimen name="module_ext_common_address_marginTop">2px</dimen>
<dimen name="module_ext_common_address_home_width">100px</dimen>
<dimen name="module_ext_common_address_home_height">90px</dimen>
<dimen name="module_ext_common_address_divider_width">2px</dimen>
<dimen name="module_ext_common_address_divider_height">54px</dimen>
<dimen name="module_ext_common_address_company_width">100px</dimen>
<dimen name="module_ext_common_address_company_height">90px</dimen>
<dimen name="module_ext_weather_space_between_icon_and_tem">8px</dimen>
<dimen name="module_ext_speed_limit_width">180px</dimen>
<dimen name="module_ext_speed_limit_height">180px</dimen>
<dimen name="module_ext_speed_limit_marginTop">2px</dimen>
<dimen name="module_ext_speed_limit_marginRight">60px</dimen>
<dimen name="module_ext_speed_limit_value_textSize">60px</dimen>
<dimen name="module_ext_speed_limit_unit_textSize">28px</dimen>
<dimen name="module_ext_navi_panel_marginLeft">32px</dimen>
<dimen name="module_ext_navi_panel_marginTop">2px</dimen>
<dimen name="module_ext_operation_panel_width">140px</dimen>
<dimen name="module_ext_operation_panel_marginRight">32px</dimen>
<dimen name="module_ext_operation_panel_marginBottom">60px</dimen>
<dimen name="module_ext_operation_panel_vr_height">92px</dimen>
<dimen name="module_ext_operation_panel_vr_textSize">24px</dimen>
<dimen name="module_ext_operation_panel_divider_width">48px</dimen>
<dimen name="module_ext_operation_panel_divider_height">2px</dimen>
<dimen name="module_ext_operation_panel_move2_height">140px</dimen>
<dimen name="module_ext_operation_panel_share_width">140px</dimen>
<dimen name="module_ext_operation_panel_share_height">120px</dimen>
<dimen name="module_ext_operation_panel_share_marginBottom">20px</dimen>
<dimen name="module_ext_operation_panel_share_textSize">30px</dimen>
<dimen name="module_ext_operation_panel_share_goneMarginBottom">32px</dimen>
<dimen name="module_ext_operation_panel_share_goneMarginRight">32px</dimen>
<dimen name="module_ext_navi_exit_width">120px</dimen>
<dimen name="module_ext_navi_exit_height">120px</dimen>
<dimen name="module_ext_navi_exit_marginLeft">32px</dimen>
<dimen name="module_ext_navi_exit_marginBottom">60px</dimen>
<dimen name="module_ext_button_container_marginLeft">32px</dimen>
<dimen name="module_ext_button_container_marginBottom">60px</dimen>
<dimen name="module_ext_navi_exit_textSize">32px</dimen>
<dimen name="v2x_cancel_help_text_size">30px</dimen>
<dimen name="module_entrance_id_button_marginTop">20px</dimen>
<!-- module_ext_layout_extensions.xml-->
<dimen name="module_ext_height">120px</dimen>
<dimen name="module_ext_paddingRight">60px</dimen>
<dimen name="module_ext_paddingLeft">60px</dimen>
<dimen name="module_ext_voice_textSize">32px</dimen>
<dimen name="module_ext_time_textSize">48px</dimen>
<dimen name="module_ext_date_marginRight">80px</dimen>
<dimen name="module_ext_date_textSize">28px</dimen>
<dimen name="module_ext_weather_marginRight">26px</dimen>
<dimen name="module_ext_weather_icon_width">44px</dimen>
<dimen name="module_ext_weather_icon_height">44px</dimen>
<dimen name="module_ext_weather_temp_marginRight">18px</dimen>
<dimen name="module_ext_weather_temp_textSize">34px</dimen>
<dimen name="module_ext_weather_temp_desc_marginRight">26px</dimen>
<dimen name="module_ext_weather_temp_desc_textSize">28px</dimen>
<dimen name="module_ext_msg_marginRight">30px</dimen>
<dimen name="module_ext_msg_counter_width">30px</dimen>
<dimen name="module_ext_msg_counter_height">30px</dimen>
<dimen name="module_ext_msg_counter_textSize">20px</dimen>
<dimen name="module_ext_user_img_width">103px</dimen>
<dimen name="module_ext_user_img_height">103px</dimen>
<!-- module_map_layout_navi_info_panel.xml-->
<dimen name="module_ext_navi_info_panel_width">1058px</dimen>
<dimen name="module_ext_navi_info_panel_height">210px</dimen>
<dimen name="module_ext_navi_info_panel_small_height">144px</dimen>
<dimen name="module_ext_navi_info_panel_turn_icon_width">159px</dimen>
<dimen name="module_ext_navi_info_panel_turn_icon_height">159px</dimen>
<dimen name="module_ext_navi_info_panel_turn_icon_small_width">70px</dimen>
<dimen name="module_ext_navi_info_panel_turn_icon_small_height">70px</dimen>
<dimen name="module_ext_navi_info_panel_turn_icon_marginLeft">56px</dimen>
<dimen name="module_ext_navi_info_panel_turn_icon_small_marginLeft">83px</dimen>
<dimen name="module_ext_navi_info_panel_turn_icon_marginTop">24px</dimen>
<dimen name="module_ext_navi_info_panel_next_info_distance_marginTop">40px</dimen>
<dimen name="module_ext_navi_info_panel_next_info_distance_textSize">60px</dimen>
<dimen name="module_ext_navi_info_panel_next_info_distance_textSize_small">50px</dimen>
<dimen name="module_ext_navi_info_panel_next_info_distance_unit_marginLeft">12px</dimen>
<dimen name="module_ext_navi_info_panel_next_info_distance_unit_marginBottom">10px</dimen>
<dimen name="module_ext_navi_info_panel_next_info_distance_unit_textSize">40px</dimen>
<dimen name="module_ext_navi_info_panel_next_info_distance_unit_textSize_small">30px</dimen>
<dimen name="module_ext_navi_info_panel_next_info_road_textSize">34px</dimen>
<dimen name="module_ext_navi_info_panel__arrive_destination_estimate_info_marginTop">24px</dimen>
<dimen name="module_ext_navi_info_panel__arrive_destination_estimate_info_textSize">28px</dimen>
<dimen name="module_ext_navi_info_turn_icon_margin_bottom">23px</dimen>
<dimen name="module_ext_voice_msg_padding_top">17px</dimen>
<dimen name="module_ext_voice_msg_padding_bottom">17px</dimen>
<dimen name="module_ext_voice_msg_padding_left">36px</dimen>
<dimen name="module_ext_voice_msg_padding_right">36px</dimen>
<dimen name="module_ext_voice_msg_icon_margin_left">-2px</dimen>
<dimen name="module_ext_navi_extra_info_margin_right">95px</dimen>
<dimen name="module_ext_weather_bkg_corner">30px</dimen>
<dimen name="module_ext_weather_container_paddingLeft">40px</dimen>
<dimen name="module_ext_weather_container_paddingRight">40px</dimen>
<dimen name="module_ext_msg_dot_marginLeft">15px</dimen>
<dimen name="module_ext_msg_dot_marginRight">15px</dimen>
<dimen name="module_ext_navi_next_info_road_marginTop">5px</dimen>
<dimen name="module_ext_remaining_info_marginRight">50px</dimen>
<dimen name="module_ext_remaining_distance_textSize">56px</dimen>
<dimen name="module_ext_remaining_distance_unit_textSize">30px</dimen>
<dimen name="module_ext_remaining_time_textSize">56px</dimen>
<dimen name="module_ext_remaining_time_unit_textSize">30px</dimen>
<dimen name="module_ext_arrive_time_textSize">56px</dimen>
<dimen name="module_ext_arrive_time_unit_textSize">30px</dimen>
<dimen name="module_map_navi_next_info_road_turn_marginLeft">15px</dimen>
<dimen name="module_map_navi_next_info_road_turn_marginRight">15px</dimen>
<!-- 导航查看全程显示范围-->
<dimen name="module_map_display_overview_left_margin">1000px</dimen>
<dimen name="module_map_display_overview_top_margin">390px</dimen>
<dimen name="module_map_display_overview_bottom_margin">200px</dimen>
<dimen name="module_map_display_overview_right_margin">200px</dimen>
<dimen name="module_ext_north_goneMarginTop">240px</dimen>
<dimen name="module_ext_common_corner">30px</dimen>
<dimen name="module_ext_button_width">120px</dimen>
<dimen name="module_ext_button_height">120px</dimen>
<dimen name="module_ext_camera_button_marginTop">10px</dimen>
<dimen name="module_ext_display_overview_textSize">22px</dimen>
<dimen name="module_ext_display_overview_textSize_large">28px</dimen>
<dimen name="module_ext_north_textSize">28px</dimen>
<dimen name="module_ext_navi_info_panel_next_info_distance_next_step_textSize">30px</dimen>
<dimen name="module_entrance_id_uploading_width">90px</dimen>
<dimen name="module_entrance_id_uploading_height">90px</dimen>
<dimen name="module_map_id_navi_next_info_distance_marginTop">6dp</dimen>
<dimen name="module_map_id_navi_next_info_road_marginBottom">15px</dimen>
<dimen name="module_map_id_navi_next_info_road_marginBottom_small">4px</dimen>
<dimen name="module_map_id_navi_next_info_distance_marginStart">10px</dimen>
<dimen name="module_ext_display_overview_icon_marginTop">20px</dimen>
<dimen name="module_ext_top_over_navi_height">40px</dimen>
<dimen name="module_ext_msg_counter_margin">45px</dimen>
<dimen name="module_ext_user_avator_size">100px</dimen>
<dimen name="module_ext_user_avator_board_size">134px</dimen>
<dimen name="module_ext_layout_padding">30px</dimen>
<dimen name="module_ext_layout_paddingRight">20px</dimen>
<dimen name="module_ext_layout_paddingBottom">20px</dimen>
<dimen name="module_ext_destination_online_car_drawablePadding">8px</dimen>
<dimen name="module_ext_destination_online_car_paddingLeft">21px</dimen>
<dimen name="module_ext_destination_online_car_paddingRight">31px</dimen>
<dimen name="module_ext_top_view_max_width">1920px</dimen>
<dimen name="module_ext_navi_width">-1</dimen>
<dimen name="module_ext_bottom_btn_margin_bottom">0px</dimen>
<dimen name="module_event_live_error_text_size">36px</dimen>
<dimen name="module_video_window_height_content">393px</dimen>
<dimen name="module_video_window_width_content">700px</dimen>
<dimen name="module_switch_map">145px</dimen>
</resources>

View File

@@ -98,7 +98,8 @@
<dimen name="module_ext_navi_info_panel_next_info_distance_unit_textSize">40px</dimen>
<dimen name="module_ext_navi_info_panel_next_info_distance_unit_textSize_small">30px</dimen>
<dimen name="module_ext_navi_info_panel_next_info_road_textSize">34px</dimen>
<dimen name="module_ext_navi_info_panel__arrive_destination_estimate_info_marginTop">24px</dimen>
<dimen name="module_ext_navi_info_panel__arrive_destination_estimate_info_marginTop">24px
</dimen>
<dimen name="module_ext_navi_info_panel__arrive_destination_estimate_info_textSize">28px</dimen>
<dimen name="module_ext_navi_info_turn_icon_margin_bottom">24px</dimen>
<dimen name="module_ext_voice_msg_padding_top">17px</dimen>
@@ -181,4 +182,13 @@
<dimen name="module_video_window_height_content">393px</dimen>
<dimen name="module_video_window_width_content">700px</dimen>
<dimen name="module_ext_speed_width">300px</dimen>
<dimen name="module_ext_speed_height">300px</dimen>
<dimen name="module_ext_arcView_width">200px</dimen>
<dimen name="module_ext_arcView_height">200px</dimen>
<dimen name="module_ext_arcView_stroke_with">10px</dimen>
<dimen name="module_ext_arcView_center_text_size">80px</dimen>
<dimen name="module_ext_arcView_des_text_size">28px</dimen>
</resources>

View File

@@ -14,5 +14,5 @@
<color name="arc_speeding">#DB3137</color>
<color name="arc_speed">#3E77F6</color>
<color name="module_switch_map_bg">#3B4577</color>
<color name="module_switch_map_bg">#323C6F</color>
</resources>

View File

@@ -243,6 +243,9 @@
<dimen name="module_ext_navi_in_vr_traffic_light_no_time_margin_top">11px</dimen>
<dimen name="module_video_window_width_content">400px</dimen>
<dimen name="module_video_window_height_content">300px</dimen>
<dimen name="module_switch_map">108px</dimen>
<dimen name="module_switch_map">279px</dimen>
<dimen name="module_switch_map_height">119px</dimen>
<dimen name="module_switch_margin_left">23px</dimen>
<dimen name="module_switch_text_size">35px</dimen>
<dimen name="module_switch_image">50px</dimen>
</resources>

View File

@@ -69,4 +69,7 @@
<item>提前看看出行路况,试试唤醒小智说,“中关村路况怎么样”</item>
</string-array>
<string name="module_map_model_normal">默认视角</string>
<string name="module_map_model_faster">远距视角</string>
</resources>

View File

@@ -229,6 +229,9 @@ public class MainActivity extends MvpActivity<MainView, MainPresenter> implement
MapCenterPointStrategy.setMapCenterPointByScene(mServiceApis.getMapServiceApi().getMapUIController(), Scene.AIMLESS);
}
/**
* 加载其它模块
*/
protected void loadOthersModules() {
// 加载地图,触发地图加载完毕回调,在初始化其他卡片模块,保证卡片模块可以正确获取地图相关服务。
loadContainerModules();

View File

@@ -2,6 +2,8 @@ package com.mogo.module.main.utils;
import android.animation.AnimatorSet;
import android.animation.ObjectAnimator;
import android.content.res.Resources;
import android.util.DisplayMetrics;
import android.view.View;
import com.mogo.module.main.R;
@@ -44,4 +46,9 @@ public class DisplayEffectsHelper {
public void display() {
animatorSet.start();
}
private float dp2px(float dp) {
DisplayMetrics metrics = Resources.getSystem().getDisplayMetrics();
return dp * metrics.density;
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 784 KiB

View File

@@ -141,6 +141,12 @@
android:layout_width="match_parent"
android:layout_height="match_parent" />
<!--小地图视图-->
<FrameLayout
android:id="@+id/module_main_id_smp_fragment"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<!--冷启动过渡Logo-->
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/module_main_id_cover_up"

View File

@@ -940,7 +940,9 @@ public class MogoServices implements IMogoMapListener,
MogoApisHandler.getInstance().getApis().getStatusManagerApi().setVrMode( TAG, true );
MapCenterPointStrategy.resetByChangeMode();
MapMarkerManager.getInstance().redrawMarkerByStyleChanged();
AIAssist.getInstance( mContext ).speakTTSVoice( "已开启鹰眼模式" );
if (DebugConfig.getCarMachineType() != DebugConfig.CAR_MACHINE_TYPE_LENOVO ) {
AIAssist.getInstance( mContext ).speakTTSVoice( "已开启鹰眼模式" );
}
mLastStatusIsVr = true;
}
} else {
@@ -949,7 +951,9 @@ public class MogoServices implements IMogoMapListener,
MogoApisHandler.getInstance().getApis().getStatusManagerApi().setVrMode( TAG, false );
MapCenterPointStrategy.resetByChangeMode();
MapMarkerManager.getInstance().redrawMarkerByStyleChanged();
AIAssist.getInstance( mContext ).speakTTSVoice( "已退出鹰眼模式" );
if (DebugConfig.getCarMachineType() != DebugConfig.CAR_MACHINE_TYPE_LENOVO ) {
AIAssist.getInstance( mContext ).speakTTSVoice( "已退出鹰眼模式" );
}
}
}
}

View File

@@ -35,6 +35,7 @@ import com.mogo.module.common.uploadintime.SnapshotLocationController;
import com.mogo.module.service.MarkerServiceHandler;
import com.mogo.module.service.R;
import com.mogo.module.service.status.EnvStatusManager;
import com.mogo.module.service.timedelay.TimeDelayUploadManager;
import com.mogo.realtime.entity.ADASRecognizedResult;
import com.mogo.realtime.entity.CloudRoadData;
import com.mogo.realtime.entity.MogoSnapshotSetData;
@@ -617,6 +618,10 @@ public class MockIntentHandler implements IntentHandler {
case 54:
mTimeTickCarHandler.sendEmptyMessageDelayed(1, 0L);
break;
case 55:
//开启模拟数据Mock用于验证算法准确性
TimeDelayUploadManager.getInstance().init(context);
break;
}
}

View File

@@ -0,0 +1,22 @@
package com.mogo.module.service.network;
import com.mogo.commons.data.BaseData;
import com.mogo.module.common.entity.MarkerResponse;
import java.util.Map;
import io.reactivex.Observable;
import retrofit2.http.FieldMap;
import retrofit2.http.FormUrlEncoded;
import retrofit2.http.POST;
public interface TimeDelayApiService {
/**
* 上报延时时间
*/
@FormUrlEncoded
@POST("/yycp-computer-vision-service/mockEye/delayTimeCallBack")
Observable<BaseData> uploadDelayData(@FieldMap Map<String, Object> parameters);
}

View File

@@ -0,0 +1,50 @@
package com.mogo.module.service.network.bean;
public class MockSocketReceiverData {
public static final int MOCK_RECEIVER_STATUS_START = 0;
public static final int MOCK_RECEIVER_STATUS_STOP = 1;
private int status;
private double lat;
private double lon;
private double heading;
private long systemTime;
private long satelliteTime;
public int getStatus() {
return status;
}
public double getLat() {
return lat;
}
public double getLon() {
return lon;
}
public double getHeading() {
return heading;
}
public long getSystemTime() {
return systemTime;
}
public long getSatelliteTime() {
return satelliteTime;
}
@Override
public String toString() {
return "MockSocketReceiverData{" +
"status=" + status +
", lat=" + lat +
", lon=" + lon +
", heading=" + heading +
", systemTime=" + systemTime +
", satelliteTime=" + satelliteTime +
'}';
}
}

View File

@@ -0,0 +1,37 @@
package com.mogo.module.service.network.bean;
public class MockSocketSendData {
private long systemTime;
private String uuid;
private long satelliteTime;
public MockSocketSendData(long systemTime, String uuid, long satelliteTime) {
this.systemTime = systemTime;
this.uuid = uuid;
this.satelliteTime = satelliteTime;
}
public long getSystemTime() {
return systemTime;
}
public void setSystemTime(long systemTime) {
this.systemTime = systemTime;
}
public String getUuid() {
return uuid;
}
public void setUuid(String uuid) {
this.uuid = uuid;
}
public long getSatelliteTime() {
return satelliteTime;
}
public void setSatelliteTime(long satelliteTime) {
this.satelliteTime = satelliteTime;
}
}

View File

@@ -0,0 +1,24 @@
package com.mogo.module.service.timedelay;
import com.mogo.commons.debug.DebugConfig;
public class MockDataDelayUploadHttpConstant {
public static final String HOST_DEV = "http://dzt-test.zhidaozhixing.com";
public static final String HOST_TEST = "http://dzt-test.zhidaozhixing.com";
public static final String HOST_DEMO = "http://dzt-show.zhidaozhixing.com";
public static final String HOST_PRODUCT = "http://dzt.zhidaozhixing.com";
public static String getBaseUrl() {
switch (DebugConfig.getNetMode()) {
case DebugConfig.NET_MODE_DEV:
return HOST_DEV;
case DebugConfig.NET_MODE_QA:
return HOST_TEST;
case DebugConfig.NET_MODE_DEMO:
return HOST_DEMO;
default:
return HOST_PRODUCT;
}
}
}

View File

@@ -1,23 +1,64 @@
package com.mogo.module.service.timedelay;
import android.content.Context;
import android.os.Build;
import android.os.Handler;
import android.os.Message;
import androidx.annotation.RequiresApi;
import com.mogo.commons.data.BaseData;
import com.mogo.commons.network.SubscribeImpl;
import com.mogo.commons.network.Utils;
import com.mogo.module.common.MogoApisHandler;
import com.mogo.module.common.uploadintime.SnapshotLocationController;
import com.mogo.module.service.MarkerServiceHandler;
import com.mogo.module.service.network.TimeDelayApiService;
import com.mogo.module.service.network.bean.MockSocketReceiverData;
import com.mogo.module.service.network.bean.MockSocketSendData;
import com.mogo.realtime.api.MoGoAiCloudRealTime;
import com.mogo.realtime.entity.CloudRoadData;
import com.mogo.realtime.entity.MogoSnapshotSetData;
import com.mogo.realtime.socket.IMogoCloudOnMsgListener;
import com.mogo.service.connection.IMogoOnMessageListener;
import com.mogo.utils.WorkThreadHandler;
import com.mogo.utils.logger.Logger;
import com.mogo.utils.network.RequestOptions;
import com.mogo.utils.network.utils.GsonUtil;
import org.json.JSONException;
import org.json.JSONObject;
import java.util.HashMap;
import java.util.Map;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.schedulers.Schedulers;
import static com.mogo.commons.AbsMogoApplication.getApp;
import static com.mogo.module.service.network.bean.MockSocketReceiverData.MOCK_RECEIVER_STATUS_START;
/**
* 接收服务端模拟定位数据对下发数据做实时Post上报统计时延
*/
public class TimeDelayUploadManager implements IMogoOnMessageListener {
public class TimeDelayUploadManager implements IMogoOnMessageListener<MockSocketReceiverData>, IMogoCloudOnMsgListener {
private static final String TAG = "TimeDelayUploadManager";
private volatile static TimeDelayUploadManager timeDelayUploadManager;
private static final int MSG_SOCKET_TYPE = 403000;
private static final int MOCK_MSG = 1;
private boolean isMockData = false;
private MockSocketReceiverData mMockData;
private long mRecordSatelliteTime; //todo 后续多点模拟用
private TimeDelayApiService timeDelayApiService;
private TimeDelayUploadManager() {
}
public TimeDelayUploadManager getInstance() {
public static TimeDelayUploadManager getInstance() {
if (timeDelayUploadManager == null) {
synchronized (TimeDelayUploadManager.class) {
if (timeDelayUploadManager == null) {
@@ -31,16 +72,103 @@ public class TimeDelayUploadManager implements IMogoOnMessageListener {
public void init(Context mContext) {
MogoApisHandler.getInstance()
.getApis()
.getSocketManagerApi(mContext).registerOnMessageListener(MSG_SOCKET_TYPE,this);
.getSocketManagerApi(mContext).registerOnMessageListener(MSG_SOCKET_TYPE, this);
MoGoAiCloudRealTime.registerOnMsgListener(this);
}
private final Handler mockHandler = new Handler(WorkThreadHandler.newInstance("mock-algorithm-work-thread").getLooper()) {
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
if (msg.what == MOCK_MSG) {
//改变地图定位数据,触发自车移动
JSONObject jo = new JSONObject();
try {
jo.put("lon", mMockData.getLon());
jo.put("lat", mMockData.getLat());
jo.put("heading", mMockData.getHeading());
jo.put("systemTime", System.currentTimeMillis());
jo.put("satelliteTime", System.currentTimeMillis());
} catch (JSONException e) {
e.printStackTrace();
}
MarkerServiceHandler.getApis().getMapServiceApi().getMapUIController().syncLocation2Map(jo);
SnapshotLocationController.getInstance().syncAdasLocationInfo(jo);
mockHandler.sendEmptyMessageDelayed(MOCK_MSG, 50);
}
}
};
@Override
public Class<MockSocketReceiverData> target() {
return MockSocketReceiverData.class;
}
//接收socket数据
@Override
public void onMsgReceived(MockSocketReceiverData mockData) {
Logger.d(TAG, "onMsgReceived obj : " + mockData.toString());
if (mockData.getStatus() == MOCK_RECEIVER_STATUS_START) { //todo 暂时以单条数据发送后续多点实时发送Message
isMockData = true;
//开启定位模拟
mMockData = mockData;
mRecordSatelliteTime = mockData.getSatelliteTime();
mockHandler.sendEmptyMessage(MOCK_MSG);
if (timeDelayApiService == null) {
timeDelayApiService = MogoApisHandler.getInstance().getApis().getNetworkApi().create(TimeDelayApiService.class, MockDataDelayUploadHttpConstant.getBaseUrl());
}
} else {
isMockData = false;
//停止定位模拟
if (mockHandler.hasMessages(MOCK_MSG)) {
mockHandler.removeMessages(MOCK_MSG);
mMockData = null;
mRecordSatelliteTime = 0;
timeDelayApiService = null;
}
}
}
@Override
public Class target() {
return null;
public void onMsgSend(long id) {
}
//接收实时数据监听回调,用于给服务端上报时延
@RequiresApi(api = Build.VERSION_CODES.N)
@Override
public void onMsgReceived(Object obj) {
public void onMsgReceived(MogoSnapshotSetData mogoSnapshotSetData) {
if (isMockData) {
//接口数据上报
CloudRoadData result = mogoSnapshotSetData.getAllList()
.stream()
.filter(cloudRoadData -> cloudRoadData.getUuid().contains("serialNumber_"))
.findAny()
.orElse(null);
if (result == null) {
Logger.d(TAG, "未找到与之匹配数据");
return;
}
MockSocketSendData mockSocketSendData = new MockSocketSendData(System.currentTimeMillis(), result.getUuid(), result.getSatelliteTime());
Map<String, Object> map = new HashMap<>();
map.put("sn", Utils.getSn());
map.put("data", GsonUtil.jsonFromObject(mockSocketSendData));
Logger.d(TAG, "mockSocketSendData : " + GsonUtil.jsonFromObject(mockSocketSendData));
Logger.d(TAG, "data uuid : " + result.getUuid() + " duration : " + (System.currentTimeMillis() - result.getSatelliteTime()));
timeDelayApiService.uploadDelayData(map)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new SubscribeImpl<BaseData>(RequestOptions.create(getApp())) {
@Override
public void onNext(BaseData o) {
super.onNext(o);
}
@Override
public void onError(Throwable e) {
super.onError(e);
}
});
}
}
}

View File

@@ -1,4 +1,4 @@
-keep class com.mogo.module.small.map.SmallMapDirectionView{*;}
-keep class com.amap.api.col.n3.*{*;}
-keep class com.mogo.module.small.map.*{*;}
-keep class com.android.internal.policy.MyPhoneLayoutInflater{*;}
-keep class com.mogo.module.small.map.SmallVisionProvider{*;}
-keep class com.amap.api.col.n3.*{*;}

View File

@@ -2,10 +2,4 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.mogo.module.small.map">
<!--<application>
<service
android:name=".SmallMapService"
android:exported="false"
/>
</application>-->
</manifest>

View File

@@ -1,186 +0,0 @@
//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by Fernflower decompiler)
//
package com.amap.api.col.n3;
import android.content.Context;
import android.content.res.Resources;
import android.content.res.Resources.Theme;
import android.util.AttributeSet;
import android.util.Log;
import android.view.ContextThemeWrapper;
import android.view.LayoutInflater;
import android.view.LayoutInflater.Factory;
import android.view.View;
import android.view.ViewStub;
import com.android.internal.policy.MyPhoneLayoutInflater;
import java.lang.reflect.Constructor;
import java.util.HashMap;
import java.util.HashSet;
public final class le2 extends ContextThemeWrapper {
private Resources a = lg.a();
private Theme b;
private LayoutInflater c;
private ClassLoader d;
private int e;
private static final String[] f = new String[]{"android.widget", "android.webkit", "android.app"};
private le2.a g = new le2.a();
private Factory h = new Factory() {
public final View onCreateView(String var1, Context var2, AttributeSet var3) {
return le2.this.a(var1, var2, var3);
}
};
public le2(Context var1, int var2, ClassLoader var3) {
super(var1, var2);
this.d = var3;
this.b = lg.b();
this.e = var2;
super.onApplyThemeResource(this.b, this.e, true);
(new StringBuilder("classloader:")).append(this.d);
}
public final Resources getResources() {
return this.a != null ? this.a : super.getResources();
}
public final void a(int var1) {
if (var1 != this.e) {
this.e = var1;
super.onApplyThemeResource(this.b, this.e, true);
}
}
public final Theme getTheme() {
return this.b != null ? this.b : super.getTheme();
}
public final Object getSystemService(String var1) {
if ("layout_inflater".equals(var1)) {
if (this.c == null) {
// 这里构建一个自己对的布局填充器
// 与已经被修改的context.getSystemService(Context.LAYOUT_INFLATER_SERVICE)
// 隔离从而保证高德地图SDK能正常初始化
LayoutInflater var2 = new MyPhoneLayoutInflater(getBaseContext());
this.c = var2.cloneInContext(this);
this.c.setFactory(this.h);
this.c = this.c.cloneInContext(this);
}
return this.c;
} else {
return super.getSystemService(var1);
}
}
private final View a(String var1, Context var2, AttributeSet var3) {
if (this.g.a.contains(var1)) {
return null;
} else {
Constructor var4;
if ((var4 = (Constructor) this.g.b.get(var1)) == null) {
Class var5 = null;
boolean var6 = false;
String var7 = "api.navi";
label71:
{
label70:
{
Throwable var10000;
label79:
{
boolean var10001;
try {
if (var1.contains(var7)) {
var5 = this.d.loadClass(var1);
} else {
String[] var17;
int var8 = (var17 = f).length;
int var9 = 0;
while (var9 < var8) {
String var10 = var17[var9];
try {
var5 = this.d.loadClass(var10 + "." + var1);
break;
} catch (Throwable var13) {
++var9;
}
}
}
if (var5 == null) {
break label71;
}
} catch (Throwable var15) {
var10000 = var15;
var10001 = false;
break label79;
}
if (var5 == ViewStub.class) {
break label71;
}
try {
if (var5.getClassLoader() != this.d) {
break label71;
}
break label70;
} catch (Throwable var14) {
var10000 = var14;
var10001 = false;
}
}
Throwable var18 = var10000;
(new StringBuilder("load view err:")).append(Log.getStackTraceString(var18));
break label71;
}
var6 = true;
}
if (!var6) {
this.g.a.add(var1);
return null;
}
try {
var4 = var5.getConstructor(Context.class, AttributeSet.class);
this.g.b.put(var1, var4);
} catch (Throwable var12) {
(new StringBuilder("create view err:")).append(Log.getStackTraceString(var12));
}
}
try {
View var16 = null;
if (var4 != null) {
var16 = (View) var4.newInstance(var2, var3);
}
return var16;
} catch (Throwable var11) {
(new StringBuilder("create view err:")).append(Log.getStackTraceString(var11));
return null;
}
}
}
public static class a {
public HashSet<String> a = new HashSet();
public HashMap<String, Constructor<?>> b = new HashMap();
public a() {
}
}
}

View File

@@ -1,40 +0,0 @@
package com.amap.api.col.n3;
import android.content.Context;
import android.content.res.XmlResourceParser;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
/**
* 这里是为了解决 使用换肤框架后,高德地图初始化有问题加入的
* 问题原因是:
* skin 框架会替换 LayoutInflater 中的 setFactory2 从而导致高德 le 中的 setFactory 失效。
* 解决方案为:
* 直接通过内存地址替换整个 ArtMethod来将需要修改的高德SDK中的方法指向我们修改过后的方法。
*/
public class lg2 extends lg {
static le2 b;
public static View a(Context var0, int var1, ViewGroup var2) {
XmlResourceParser var9 = a().getXml(var1);
if (!a) {
return LayoutInflater.from(var0).inflate(var9, var2);
} else {
try {
if (b == null) {
b = new le2(var0, c == -1 ? 0 : c, lg.class.getClassLoader());
}
b.a(c == -1 ? 0 : c);
View var3 = LayoutInflater.from(b).inflate(var9, var2);
return var3;
} catch (Throwable var7) {
var7.printStackTrace();
np.c(var7, "ResourcesUtil", "selfInflate(Activity activity, int resource, ViewGroup root)");
} finally {
var9.close();
}
return null;
}
}
}

View File

@@ -4,8 +4,10 @@ import android.content.Context;
import android.graphics.BitmapFactory;
import android.util.AttributeSet;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.MotionEvent;
import android.view.ViewGroup;
import android.widget.FrameLayout;
import android.widget.RelativeLayout;
import androidx.annotation.Nullable;
@@ -17,7 +19,9 @@ import com.amap.api.maps.UiSettings;
import com.amap.api.navi.AMapNaviView;
import com.amap.api.navi.AMapNaviViewOptions;
import com.mogo.commons.AbsMogoApplication;
import com.mogo.commons.debug.DebugConfig;
import com.mogo.module.common.MogoApisHandler;
import com.mogo.module.common.view.RoundLayout;
import com.mogo.utils.FileUtils;
import java.io.IOException;
@@ -31,8 +35,10 @@ import java.io.IOException;
public class SmallMapDirectionView extends RelativeLayout {
private String styleFilePath = "/mnt/sdcard/amap/small_map_style.data";
private RoundLayout rlSmallMapBorder;
private AMapNaviView mAMapNaviView;
private int zoomLevel = 15;
private boolean mapIsLoaded = false;
public SmallMapDirectionView(Context context) {
this(context, null);
@@ -52,11 +58,11 @@ public class SmallMapDirectionView extends RelativeLayout {
}
private void initView(Context context) {
LayoutInflater.from(context).inflate(R.layout.module_small_map_view, this);
AbsMogoApplication.getLayoutInflaterNoSkin().inflate(R.layout.module_small_map_view, this);
mAMapNaviView = findViewById(R.id.aMapNaviView);
mAMapNaviView.onCreate(null);
mAMapNaviView = AbsMogoApplication.getMapNaviView();
rlSmallMapBorder = findViewById(R.id.rlSmallMapBorder);
rlSmallMapBorder.addView(mAMapNaviView);
// 车头朝上
mAMapNaviView.setNaviMode(AMapNaviView.CAR_UP_MODE);
@@ -133,7 +139,7 @@ public class SmallMapDirectionView extends RelativeLayout {
// 2D模式
options.setTilt(0);
// 黑夜模式
// options.setNaviNight(true);
//options.setNaviNight(true);
// 自定义地图样式
options.setCustomMapStylePath(styleFilePath);
mAMapNaviView.setViewOptions(options);
@@ -143,23 +149,6 @@ public class SmallMapDirectionView extends RelativeLayout {
CameraUpdate cameraUpdate = CameraUpdateFactory.zoomTo(zoomLevel);
aMap.moveCamera(cameraUpdate);
aMap.setOnMapLoadedListener(new AMap.OnMapLoadedListener() {
@Override
public void onMapLoaded() {
//Log.w("onMapLoaded", "===onMapLoaded====");
// 高德地图有bug所以需要多次调用设置皮肤才能成功
if (options != null) {
options.setCustomMapStylePath(styleFilePath);
mAMapNaviView.setViewOptions(options);
}
//设置希望展示的地图缩放级别
CameraUpdate cameraUpdate = CameraUpdateFactory.zoomTo(zoomLevel);
aMap.moveCamera(cameraUpdate);
}
});
try {
// 判断是否有样式文件存在
FileUtils.copy(
@@ -205,16 +194,39 @@ public class SmallMapDirectionView extends RelativeLayout {
e.printStackTrace();
}
new Thread(new Runnable() {
@Override
public void run() {
try {
Thread.sleep(1000L);
} catch (InterruptedException e) {
e.printStackTrace();
}
// 高德地图有bug所以需要多次调用设置皮肤才能成功
if (options != null) {
options.setCustomMapStylePath(styleFilePath);
mAMapNaviView.setViewOptions(options);
}
//设置希望展示的地图缩放级别
CameraUpdate cameraUpdate = CameraUpdateFactory.zoomTo(zoomLevel);
aMap.moveCamera(cameraUpdate);
}
}).start();
setOnClickListener(view -> {
MogoApisHandler.getInstance().getApis()
.getMapServiceApi()
.getMapUIController()
.changeMapMode(
MogoApisHandler.getInstance()
.getApis()
.getAdasControllerApi()
.getCurrentSkinMode()
);
if (DebugConfig.getCarMachineType() != DebugConfig.CAR_MACHINE_TYPE_LENOVO ) {
MogoApisHandler.getInstance().getApis()
.getMapServiceApi()
.getMapUIController()
.changeMapMode(
MogoApisHandler.getInstance()
.getApis()
.getAdasControllerApi()
.getCurrentSkinMode()
);
}
});
}

View File

@@ -0,0 +1,43 @@
package com.mogo.module.small.map;
import android.content.Context;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import com.mogo.commons.AbsMogoApplication;
/**
* @author donghongyu
* @date 2021/5/19 10:50 上午
*/
public class SmallMapFragment extends Fragment {
private Context mContext;
protected View mRootView;
@Override
public void onAttach(Context context) {
super.onAttach(context);
mContext = context;
}
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
if (mRootView == null) {
mRootView = AbsMogoApplication.getLayoutInflaterNoSkin()
.inflate(R.layout.module_small_map_fragment, container, false);
} else {
ViewGroup viewGroup = (ViewGroup) mRootView.getParent();
if (viewGroup != null) {
viewGroup.removeView(mRootView);
}
}
return mRootView;
}
}

View File

@@ -0,0 +1,101 @@
package com.mogo.module.small.map;
import android.content.Context;
import android.util.Log;
import androidx.fragment.app.FragmentActivity;
import com.alibaba.android.arouter.facade.annotation.Route;
import com.mogo.module.common.MogoApisHandler;
import com.mogo.service.MogoServicePaths;
import com.mogo.service.map.IMogoSmallMapProvider;
import com.mogo.service.statusmanager.IMogoStatusChangedListener;
import com.mogo.service.statusmanager.StatusDescriptor;
import com.mogo.utils.logger.Logger;
/**
* @author donghongyu
* @date 12/10/20 1:34 PM
*/
@Route(path = MogoServicePaths.PATH_SMALL_MAP)
public class SmallMapProvider implements IMogoSmallMapProvider, IMogoStatusChangedListener {
private final String TAG = "SmallVisionProvider";
private Context mContext;
private int mContainerId;
private FragmentActivity mActivity;
private SmallMapFragment mSmallMapFragment;
@Override
public void init(FragmentActivity activity, int containerId) {
Log.d(TAG, "小地图模块初始化……init(FragmentActivity activity, int containerId)");
mActivity = activity;
mContainerId = containerId;
Logger.d(TAG, "addSmallMapView");
}
@Override
public void init(Context context) {
Log.d(TAG, "小地图模块初始化……init(Context context)");
mContext = context;
MogoApisHandler.getInstance()
.getApis()
.getStatusManagerApi()
.registerStatusChangedListener(
MogoServicePaths.PATH_SMALL_MAP,
StatusDescriptor.VR_MODE,
this);
MogoApisHandler.getInstance()
.getApis()
.getStatusManagerApi()
.registerStatusChangedListener(
MogoServicePaths.PATH_SMALL_MAP,
StatusDescriptor.MAIN_PAGE_RESUME,
this);
}
@Override
public void showPanel() {
Log.d(TAG, "小地图模块触发展示……");
if (mSmallMapFragment == null) {
Logger.d(TAG, "准备add fragment======");
mSmallMapFragment = new SmallMapFragment();
mActivity.getSupportFragmentManager().beginTransaction().add(mContainerId, mSmallMapFragment).commit();
return;
}
Logger.d(TAG, "准备show fragment");
mActivity.getSupportFragmentManager().beginTransaction().show(mSmallMapFragment).commit();
}
@Override
public void hidePanel() {
Log.d(TAG, "小地图模块触发隐藏……");
if (mSmallMapFragment != null) {
Logger.d(TAG, "准备hide fragment");
mActivity.getSupportFragmentManager().beginTransaction().hide(mSmallMapFragment).commit();
}
}
@Override
public void changeAngle(double angle) {
}
@Override
public void onStatusChanged(StatusDescriptor descriptor, boolean isTrue) {
Log.d(TAG, "onStatusChanged……descriptor=" + descriptor + "isTrue=" + isTrue);
if (descriptor == StatusDescriptor.VR_MODE) {
if (isTrue) {
showPanel();
} else {
hidePanel();
}
}
}
}

View File

@@ -1,88 +0,0 @@
package com.mogo.module.small.map;
import android.app.Service;
import android.content.Intent;
import android.os.IBinder;
import android.view.Gravity;
import android.view.WindowManager;
import androidx.annotation.Nullable;
import com.mogo.module.common.wm.WindowManagerView;
import com.mogo.utils.logger.Logger;
/**
* @author donghongyu
* @date 12/10/20 1:35 PM
*/
public class SmallMapService extends Service {
private static final String TAG = "MachineVisionMapService";
private WindowManagerView mWindowManagerView;
private SmallMapDirectionView mSmallMapDirectionView;
@Override
public void onCreate() {
super.onCreate();
Logger.d(TAG, "onCreate");
addSmallMapView();
}
@Nullable
@Override
public IBinder onBind(Intent intent) {
Logger.d(TAG, "onBind");
return null;
}
@Override
public void onRebind(Intent intent) {
super.onRebind(intent);
addSmallMapView();
Logger.d(TAG, "onRebind");
}
@Override
public boolean onUnbind(Intent intent) {
Logger.d(TAG, "onUnbind");
if (mWindowManagerView != null && mWindowManagerView.isShowing()) {
mWindowManagerView.dismiss();
}
mWindowManagerView = null;
return true;
}
@Override
public void onDestroy() {
super.onDestroy();
Logger.d(TAG, "onDestroy");
if (mWindowManagerView != null) {
mWindowManagerView.dismiss();
}
}
/**
* 添加小地图View
*/
private void addSmallMapView() {
Logger.d(TAG, "addSmallMapView");
// 初始化小地图控件
mSmallMapDirectionView = new SmallMapDirectionView(getApplicationContext());
mWindowManagerView = new WindowManagerView.Builder(getApplicationContext())
.contentView(mSmallMapDirectionView)
.size(
WindowManager.LayoutParams.WRAP_CONTENT,
WindowManager.LayoutParams.WRAP_CONTENT
)
.position(
getResources().getDimensionPixelOffset(R.dimen.module_small_map_view_x),
getResources().getDimensionPixelOffset(R.dimen.module_small_map_view_y)
)
.gravity(Gravity.TOP | Gravity.LEFT)
.showInWindowManager();
mWindowManagerView.show();
}
}

View File

@@ -1,175 +0,0 @@
package com.mogo.module.small.map;
import android.content.Context;
import android.os.Bundle;
import android.util.Log;
import android.view.Gravity;
import android.view.View;
import android.view.ViewGroup;
import android.view.WindowManager;
import androidx.annotation.NonNull;
import androidx.fragment.app.Fragment;
import com.alibaba.android.arouter.facade.annotation.Route;
import com.amap.api.col.n3.lg;
import com.amap.api.col.n3.lg2;
import com.mogo.hook.HookManager;
import com.mogo.module.common.MogoApisHandler;
import com.mogo.module.common.wm.WindowManagerView;
import com.mogo.service.MogoServicePaths;
import com.mogo.service.map.IMogoSmallMapProvider;
import com.mogo.service.module.ModuleType;
import com.mogo.service.statusmanager.IMogoStatusChangedListener;
import com.mogo.service.statusmanager.StatusDescriptor;
import com.mogo.utils.logger.Logger;
import java.lang.reflect.Method;
/**
* @author donghongyu
* @date 12/10/20 1:34 PM
*/
@Route(path = MogoServicePaths.PATH_SMALL_MAP)
public class SmallVisionProvider implements IMogoSmallMapProvider, IMogoStatusChangedListener {
private final String TAG = "SmallVisionProvider";
private Context mContext;
private WindowManagerView mWindowManagerView;
private SmallMapDirectionView mSmallMapDirectionView;
@Override
public Fragment createFragment(Context context, Bundle data) {
return null;
}
@Override
public View createView(Context context) {
return null;
}
@NonNull
@Override
public String getModuleName() {
return TAG;
}
@Override
public int getType() {
return ModuleType.TYPE_SERVICE;
}
@Override
public void init(Context context) {
Log.d(TAG, "小地图模块初始化……");
mContext = context;
MogoApisHandler.getInstance()
.getApis()
.getStatusManagerApi()
.registerStatusChangedListener(
MogoServicePaths.PATH_SMALL_MAP,
StatusDescriptor.VR_MODE,
this);
MogoApisHandler.getInstance()
.getApis()
.getStatusManagerApi()
.registerStatusChangedListener(
MogoServicePaths.PATH_SMALL_MAP,
StatusDescriptor.MAIN_PAGE_RESUME,
this);
}
@Override
public void onDestroy() {
Log.d(TAG, "小地图模块销毁……");
hidePanel();
// 释放组件内存
mSmallMapDirectionView = null;
mWindowManagerView = null;
}
@Override
public void showPanel() {
Log.d(TAG, "小地图模块触发展示……");
addSmallMapView();
}
@Override
public void hidePanel() {
Log.d(TAG, "小地图模块触发隐藏……");
if (mWindowManagerView != null && mWindowManagerView.isShowing()) {
mWindowManagerView.dismiss();
}
}
@Override
public void changeAngle(double angle) {
}
@Override
public void onStatusChanged(StatusDescriptor descriptor, boolean isTrue) {
Log.d(TAG, "onStatusChanged……descriptor=" + descriptor + "isTrue=" + isTrue);
if (descriptor == StatusDescriptor.VR_MODE) {
if (isTrue) {
showPanel();
} else {
hidePanel();
}
}
if (descriptor == StatusDescriptor.MAIN_PAGE_RESUME) {
// 只有 VR 模式下才进行展示
if (MogoApisHandler.getInstance().getApis().getStatusManagerApi().isVrMode()) {
if (isTrue) {
showPanel();
} else {
hidePanel();
}
}
}
}
/**
* 添加小地图View
*/
private void addSmallMapView() {
Logger.d(TAG, "addSmallMapView");
try {
// 替换高德地图的方法,解决因为加入换肤框架导致地图初始化失败
Method srcMethod = lg.class.getDeclaredMethod("a", Context.class, int.class, ViewGroup.class);
Method destMethod = lg2.class.getDeclaredMethod("a", Context.class, int.class, ViewGroup.class);
HookManager.get().hookMethod(srcMethod, destMethod);
Logger.d(TAG, "hook 高德地图成功");
} catch (Exception e) {
e.printStackTrace();
}
// 初始化小地图控件
if (mSmallMapDirectionView == null) {
mSmallMapDirectionView = new SmallMapDirectionView(mContext);
}
if (mWindowManagerView == null) {
mWindowManagerView = new WindowManagerView.Builder(mContext)
.contentView(mSmallMapDirectionView)
.size(
WindowManager.LayoutParams.WRAP_CONTENT,
WindowManager.LayoutParams.WRAP_CONTENT
)
.position(
mContext.getResources().getDimensionPixelOffset(R.dimen.module_small_map_view_x),
mContext.getResources().getDimensionPixelOffset(R.dimen.module_small_map_view_y)
)
.gravity(Gravity.TOP | Gravity.LEFT)
.showInWindowManager();
}
mWindowManagerView.show();
}
}

View File

@@ -1,5 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<com.mogo.module.small.map.SmallMapDirectionView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/smallMapDirectionView"
android:layout_width="match_parent"
android:layout_height="match_parent" />

View File

@@ -0,0 +1,13 @@
<?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="match_parent"
android:layout_height="match_parent">
<com.mogo.module.small.map.SmallMapDirectionView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@@ -6,7 +6,6 @@
android:layout_height="wrap_content"
tools:parentTag="RelativeLayout">
<View
android:layout_width="@dimen/module_small_map_view_border_width"
android:layout_height="@dimen/module_small_map_view_border_height"
@@ -16,16 +15,16 @@
<com.mogo.module.common.view.RoundLayout
android:id="@+id/rlSmallMapBorder"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_width="@dimen/module_small_map_view_width"
android:layout_height="@dimen/module_small_map_view_width"
android:layout_centerInParent="true"
app:roundLayoutRadius="360dp">
<com.amap.api.navi.AMapNaviView
android:id="@+id/aMapNaviView"
android:layout_width="@dimen/module_small_map_view_width"
android:layout_height="@dimen/module_small_map_view_width" />
<!--TODO Hook方案在Pad上有问题,优先 效果,后面在看如何解决-->
<!-- <com.amap.api.navi.AMapNaviView
android:id="@+id/aMapNaviView"
android:layout_width="@dimen/module_small_map_view_width"
android:layout_height="@dimen/module_small_map_view_width" />-->
</com.mogo.module.common.view.RoundLayout>
</merge>

View File

@@ -0,0 +1,18 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<dimen name="module_small_map_padding">40px</dimen>
<dimen name="module_small_map_view_border_width">400px</dimen>
<dimen name="module_small_map_view_border_height">400px</dimen>
<dimen name="module_small_map_view_width">370px</dimen>
<dimen name="module_small_map_view_height">370px</dimen>
<dimen name="module_small_map_view_x">1620px</dimen>
<dimen name="module_small_map_view_y">780px</dimen>
<dimen name="module_small_map_big_view_x">0px</dimen>
<dimen name="module_small_map_big_view_y">0px</dimen>
<dimen name="module_small_map_big_view_width">1920px</dimen>
<dimen name="module_small_map_big_view_height">1080px</dimen>
</resources>

View File

@@ -2,14 +2,12 @@
<resources>
<dimen name="module_small_map_padding">30px</dimen>
<dimen name="module_small_map_border_view_width">400px</dimen>
<dimen name="module_small_map_border_view_height">400px</dimen>
<dimen name="module_small_map_view_border_width">288px</dimen>
<dimen name="module_small_map_view_border_height">288px</dimen>
<dimen name="module_small_map_view_width">260px</dimen>
<dimen name="module_small_map_view_height">260px</dimen>
<dimen name="module_small_map_view_x">1620px</dimen>
<dimen name="module_small_map_view_y">780px</dimen>

View File

@@ -570,8 +570,8 @@ public class MoGoV2XMarkerManager implements IMoGoV2XMarkerManager {
}
if (V2XServiceManager.getMoGoStatusManager().isVrMode()) {
mAlarmInfoMarker = MarkerDrawer.getInstance().drawMapMarkerImpl(markerShowEntity, MarkerDrawer.MARKER_Z_INDEX_HIGH, clickListener);
mAlarmInfoMarker.setInfoWindowAdapter(new RoadConditionInfoWindow3DAdapter(markerShowEntity, AbsMogoApplication.getApp(), mAlarmInfoMarker.getMogoMarkerOptions()));
mAlarmInfoMarker.showInfoWindow();
// mAlarmInfoMarker.setInfoWindowAdapter(new RoadConditionInfoWindow3DAdapter(markerShowEntity, AbsMogoApplication.getApp(), mAlarmInfoMarker.getMogoMarkerOptions()));
// mAlarmInfoMarker.showInfoWindow();
} else {
optionsRipple.icon(V2XMarkerAdapter.getV2XRoadEventViewPng(context, roadEventEntity));
mAlarmInfoMarker = V2XServiceManager.getMarkerManager().addMarker(V2X_EVENT_ALARM_POI, optionsRipple);

View File

@@ -25,6 +25,7 @@ import com.zhidao.carchattingprovider.MogoDriverInfo;
import java.util.List;
import static android.text.style.TtsSpan.GENDER_MALE;
import static com.mogo.module.v2x.V2XConst.MODULE_NAME;
/**
* V2X 测试面板广播接收,目的是可以通过广播调用起来面板
@@ -102,7 +103,7 @@ public class TestPanelBroadcastReceiver extends BroadcastReceiver {
LocalBroadcastManager.getInstance(mContext).sendBroadcast(intent);
} else if (sceneType == 6) {//查看前车直播
V2XVoiceCallLiveBiz.getInstance().getFrontCarLive();
} else if (sceneType == 7) {//查看前直播
} else if (sceneType == 7) {//查看前方路口直播
V2XVoiceCallLiveBiz.getInstance().getOpenRoadCameraLive();
} else if (sceneType == 8) {//触发疲劳驾驶
V2XMessageEntity<V2XPushMessageEntity> v2XMessageEntity =
@@ -166,6 +167,13 @@ public class TestPanelBroadcastReceiver extends BroadcastReceiver {
V2XServiceManager.getMapService().getMapUIController().changeMapVisualAngle(VisualAngleMode.MODE_MEDIUM_SIGHT);
} else if (sceneType == 20) { //test visualAngle UI
V2XServiceManager.getMapService().getMapUIController().changeMapVisualAngle(VisualAngleMode.MODE_CLOSE_SIGHT);
} else if (sceneType == 21) {// 自车求助
V2XMessageEntity<Boolean> v2XMessageEntity =
TestOnLineCarUtils.getV2XScenarioCarForHelpEventData();
Intent intent = new Intent(V2XConst.BROADCAST_SCENE_HANDLER_ACTION);
intent.putExtra(V2XConst.BROADCAST_SCENE_EXTRA_KEY, v2XMessageEntity);
LocalBroadcastManager.getInstance(mContext).sendBroadcast(intent);
V2XServiceManager.getMoGoStatusManager().setSeekHelping(MODULE_NAME, true);
}
}

View File

@@ -84,7 +84,7 @@ public class V2XSeekHelpButton implements IV2XButton {
doAction();
});
ViewGroup.LayoutParams layoutParams = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,
(int) V2XUtils.getApp().getResources().getDimension(R.dimen.dp_150));
(int) V2XUtils.getApp().getResources().getDimension(R.dimen.module_v2x_car_for_help_window_height));
V2XServiceManager.getMogoTopViewManager().addView(topView, layoutParams);
}

View File

@@ -465,4 +465,25 @@ public class TestOnLineCarUtils {
}
return null;
}
/**
* 自车求助测试数据
*/
public static V2XMessageEntity<Boolean> getV2XScenarioCarForHelpEventData() {
try {
V2XMessageEntity<Boolean> v2xMessageEntity = new V2XMessageEntity<>();
// 控制类型
v2xMessageEntity.setType(V2XMessageEntity.V2XTypeEnum.ALERT_CAR_FOR_HELP);
// 设置数据
v2xMessageEntity.setContent(true);
// 控制展示状态
v2xMessageEntity.setShowState(true);
return v2xMessageEntity;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.9 KiB

View File

@@ -2,5 +2,5 @@
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="#000000" />
<corners android:radius="@dimen/dp_20" />
<corners android:radius="@dimen/module_v2x_road_event_bg_radius" />
</shape>

View File

@@ -2,8 +2,9 @@
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="@dimen/dp_822"
android:layout_width="@dimen/module_v2x_road_event_window_width_vr"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:gravity="center">
<androidx.constraintlayout.widget.ConstraintLayout
@@ -222,14 +223,14 @@
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="wrap_content"
android:layout_height="@dimen/dp_140"
android:layout_height="@dimen/module_v2x_road_event_height"
android:background="@drawable/bg_v2x_event_bg">
<com.mogo.service.imageloader.MogoImageView
android:id="@+id/iv_event"
android:layout_width="@dimen/dp_100"
android:layout_height="@dimen/dp_100"
android:layout_marginLeft="@dimen/dp_30"
android:layout_width="@dimen/module_v2x_road_event_icon_width"
android:layout_height="@dimen/module_v2x_road_event_icon_height"
android:layout_marginLeft="@dimen/module_v2x_road_event_icon_margin_left"
android:scaleType="fitXY"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
@@ -252,18 +253,18 @@
android:id="@+id/tv_event"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/module_v2x_road_event_icon_margin_left"
android:layout_marginRight="@dimen/module_v2x_road_event_icon_margin_left"
android:maxWidth="@dimen/dp_480"
android:paddingLeft="@dimen/dp_40"
android:paddingRight="@dimen/dp_40"
android:textColor="@color/v2x_white_color"
android:textSize="@dimen/dp_32" />
android:textSize="@dimen/module_v2x_road_event_text_size" />
<ImageView
android:id="@+id/iv_play"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_6"
android:paddingLeft="@dimen/dp_42"
android:layout_marginLeft="@dimen/module_v2x_road_event_icon_margin_left"
android:layout_marginTop="@dimen/module_v2x_road_event_icon_play_margin_top"
android:src="@drawable/icon_play"
android:visibility="gone" />
</LinearLayout>
@@ -273,9 +274,9 @@
android:id="@+id/tv_line"
android:layout_width="@dimen/dp_0_5"
android:layout_height="@dimen/dp_70"
android:alpha="0.3"
android:background="@color/v2x_line_color"
android:visibility="gone"
android:alpha="0.3"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@+id/tv_play"
app:layout_constraintStart_toEndOf="@+id/ll_event"
@@ -284,14 +285,12 @@
<TextView
android:id="@+id/tv_play"
android:layout_width="wrap_content"
android:layout_height="@dimen/dp_140"
android:layout_width="@dimen/module_v2x_road_event_height"
android:layout_height="@dimen/module_v2x_road_event_height"
android:gravity="center"
android:paddingLeft="@dimen/dp_40"
android:paddingRight="@dimen/dp_40"
android:text="播放"
android:textColor="@color/v2x_event_play_text"
android:textSize="@dimen/dp_30"
android:textSize="@dimen/module_v2x_road_event_text_play_text_size"
android:visibility="gone"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"

View File

@@ -2,23 +2,23 @@
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="@dimen/dp_800"
android:layout_height="@dimen/dp_140"
android:layout_width="@dimen/module_v2x_fault_help_width"
android:layout_height="@dimen/module_v2x_fault_help_height"
android:layout_marginTop="@dimen/dp_8"
android:background="@drawable/bg_v2x_event_bg"
tools:layout_height="wrap_content">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="wrap_content"
android:layout_height="@dimen/dp_140"
android:layout_height="@dimen/module_v2x_fault_help_height"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<com.mogo.service.imageloader.MogoImageView
android:id="@+id/ivFaultHelpHead"
android:layout_width="@dimen/dp_140"
android:layout_height="@dimen/dp_140"
android:layout_width="@dimen/module_v2x_fault_help_height"
android:layout_height="@dimen/module_v2x_fault_help_height"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="@+id/rlRoadEventList"
app:layout_constraintStart_toStartOf="parent"
@@ -30,12 +30,12 @@
<TextView
android:id="@+id/tvImgTextContent"
android:layout_width="@dimen/dp_80"
android:layout_height="@dimen/dp_35"
android:layout_width="@dimen/module_v2x_fault_help_img_content_width"
android:layout_height="@dimen/module_v2x_fault_help_img_content_height"
android:layout_marginTop="15dp"
android:background="@drawable/bg_v2x_event_type_orange_vr"
android:gravity="center"
android:paddingTop="@dimen/dp_2"
android:paddingTop="2dp"
android:paddingBottom="@dimen/dp_5"
android:text="求助"
android:textColor="@android:color/white"
@@ -50,9 +50,9 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp_24"
android:layout_marginTop="@dimen/dp_27"
android:layout_marginTop="@dimen/module_v2x_fault_help_name_margin_top"
android:textColor="#FFFFFF"
android:textSize="@dimen/dp_40"
android:textSize="@dimen/module_v2x_fault_help_name_text_size"
android:textStyle="bold"
app:layout_constraintStart_toEndOf="@id/ivFaultHelpHead"
app:layout_constraintTop_toTopOf="parent"
@@ -65,10 +65,10 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp_24"
android:layout_marginBottom="@dimen/dp_27"
android:layout_marginBottom="@dimen/module_v2x_fault_help_time_margin_bottom"
android:alpha="0.59"
android:textColor="#FFFFFF"
android:textSize="@dimen/dp_24"
android:textSize="@dimen/module_v2x_fault_help_time_text_size"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toEndOf="@id/ivFaultHelpHead"
tools:text="15:30发布求助信息" />
@@ -83,7 +83,7 @@
android:layout_marginRight="@dimen/dp_42"
android:gravity="center_vertical"
android:textColor="#FFFFFF"
android:textSize="@dimen/dp_42"
android:textSize="@dimen/module_v2x_fault_help_distance_text_size"
app:layout_constraintBottom_toBottomOf="@+id/ivFaultHelpEventCall"
app:layout_constraintEnd_toStartOf="@+id/ivFaultHelpEventCall"
app:layout_constraintTop_toTopOf="@+id/ivFaultHelpEventCall"
@@ -91,8 +91,8 @@
<ImageView
android:id="@+id/ivFaultHelpEventCall"
android:layout_width="@dimen/dp_80"
android:layout_height="@dimen/dp_80"
android:layout_width="@dimen/module_v2x_fault_help_event_call_width"
android:layout_height="@dimen/module_v2x_fault_help_event_call_width"
android:layout_marginRight="@dimen/dp_40"
android:src="@drawable/v2x_event_icon_tel_vr"
android:visibility="gone"
@@ -103,9 +103,9 @@
<ImageView
android:id="@+id/ivFaultHelpEventNavi"
android:layout_width="@dimen/dp_80"
android:layout_height="@dimen/dp_80"
android:layout_marginRight="@dimen/dp_40"
android:layout_width="@dimen/module_v2x_fault_help_event_call_width"
android:layout_height="@dimen/module_v2x_fault_help_event_call_width"
android:layout_marginRight="@dimen/module_v2x_fault_help_event_navi_margin_right"
android:src="@drawable/v2x_event_icon_daohang_vr"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"

View File

@@ -5,6 +5,7 @@
android:id="@+id/llEventMore"
android:layout_width="@dimen/module_v2x_panel_width"
android:layout_height="@dimen/module_v2x_panel_width"
android:visibility="gone"
android:background="@drawable/module_ext_drawable_shadow_bg"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">

View File

@@ -28,7 +28,7 @@
android:layout_marginRight="@dimen/dp_20"
android:text="为您推荐最优路线"
android:textColor="#FFFFFF"
android:textSize="@dimen/dp_32"
android:textSize="@dimen/module_v2x_event_warning_type_text_size"
app:layout_constraintBottom_toBottomOf="@+id/warning_type_image"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@+id/warning_type_image"

View File

@@ -5,10 +5,10 @@
android:layout_height="match_parent">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="@dimen/dp_640"
android:layout_height="@dimen/dp_140"
android:alpha="0.7"
android:layout_width="@dimen/module_v2x_car_for_help_width"
android:layout_height="@dimen/module_v2x_car_for_help_height"
android:layout_marginTop="@dimen/dp_8"
android:alpha="0.7"
android:background="@drawable/bg_v2x_event_bg"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
@@ -16,8 +16,8 @@
<ImageView
android:id="@+id/iv_event"
android:layout_width="@dimen/dp_100"
android:layout_height="@dimen/dp_100"
android:layout_width="@dimen/module_v2x_car_for_help_icon_width"
android:layout_height="@dimen/module_v2x_car_for_help_icon_height"
android:layout_marginLeft="@dimen/dp_30"
android:scaleType="fitXY"
android:src="@drawable/icon_car_for_help"
@@ -29,19 +29,19 @@
android:id="@+id/tv_event"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:maxWidth="@dimen/dp_480"
android:maxWidth="@dimen/module_v2x_car_for_help_event_maxwidth"
android:paddingLeft="@dimen/dp_40"
android:paddingRight="@dimen/dp_40"
android:text="正在为您发起求助"
android:textColor="@color/v2x_white_color"
android:textSize="@dimen/dp_32"
android:textSize="@dimen/module_v2x_car_for_help_event_text_size"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toEndOf="@+id/iv_event"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:layout_width="@dimen/dp_0_5"
android:layout_height="@dimen/dp_70"
android:layout_height="@dimen/dp_72"
android:alpha="0.3"
android:background="@color/v2x_line_color"
app:layout_constraintBottom_toBottomOf="parent"
@@ -50,14 +50,12 @@
<TextView
android:id="@+id/tv_cancel"
android:layout_width="@dimen/dp_140"
android:layout_height="@dimen/dp_140"
android:layout_width="@dimen/module_v2x_car_for_help_height"
android:layout_height="@dimen/module_v2x_car_for_help_height"
android:gravity="center"
android:paddingLeft="@dimen/dp_40"
android:paddingRight="@dimen/dp_40"
android:text="取消"
android:textColor="@color/v2x_car_for_help_cancel"
android:textSize="@dimen/dp_30"
android:textSize="@dimen/module_v2x_car_for_help_cancel_text_size"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" />

View File

@@ -2,14 +2,14 @@
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="@dimen/dp_822"
android:layout_height="@dimen/dp_182"
android:layout_width="@dimen/module_v2x_road_event_window_width_vr"
android:layout_height="@dimen/module_v2x_road_event_window_height_vr"
android:layout_marginTop="@dimen/dp_8">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rvRoadEventList"
android:layout_width="match_parent"
android:layout_height="@dimen/module_v2x_event_window_height_vr"
android:layout_height="@dimen/module_v2x_road_event_window_height_vr"
android:minHeight="@dimen/module_v2x_event_window_height"
android:orientation="horizontal"
android:overScrollMode="never"

Some files were not shown because too many files have changed in this diff Show More