From 4efdbfeeaef9030f4583409f2bae8577a9db8231 Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 25 Dec 2020 19:04:40 +0800 Subject: [PATCH 01/72] .. --- .idea/gradle.xml | 1 - 1 file changed, 1 deletion(-) diff --git a/.idea/gradle.xml b/.idea/gradle.xml index 8efbfa420e..426ff6b360 100644 --- a/.idea/gradle.xml +++ b/.idea/gradle.xml @@ -85,7 +85,6 @@ From 6db6140ae482a328221d3dfaecbf68524ef35e30 Mon Sep 17 00:00:00 2001 From: wangcongtao Date: Fri, 25 Dec 2020 21:12:57 +0800 Subject: [PATCH 02/72] =?UTF-8?q?=E6=98=BE=E7=A4=BA=E8=AE=BE=E7=BD=AE=20?= =?UTF-8?q?=E5=8D=87=E7=BA=A7sdk=E7=89=88=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- libraries/map-custom/build.gradle | 2 +- .../common/drawer/SnapshotSetDataDrawer.java | 24 +++++++ .../service/impl/adas/MogoADASController.java | 66 ++++++++++--------- 3 files changed, 61 insertions(+), 31 deletions(-) diff --git a/libraries/map-custom/build.gradle b/libraries/map-custom/build.gradle index bc98d7bbf5..f42565d9bb 100644 --- a/libraries/map-custom/build.gradle +++ b/libraries/map-custom/build.gradle @@ -67,7 +67,7 @@ dependencies { implementation project(':foudations:mogo-commons') } - implementation 'com.zhidaoauto.machine:map:1.0.0-vr-7.4.7' + implementation 'com.zhidaoauto.machine:map:1.0.0-vr-7.4.8' // implementation 'com.zhidaoauto.machine:map:1.0.0-vr-7.4.5-log-1' } diff --git a/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/SnapshotSetDataDrawer.java b/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/SnapshotSetDataDrawer.java index 000b8ddc32..076f058274 100644 --- a/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/SnapshotSetDataDrawer.java +++ b/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/SnapshotSetDataDrawer.java @@ -92,6 +92,7 @@ class SnapshotSetDataDrawer extends BaseDrawer implements IMogoMarkerClickListen MogoApisHandler.getInstance().getApis().getMapServiceApi().getMarkerManager( AbsMogoApplication.getApp() ).removeMarkers( DataTypes.TYPE_MARKER_CLOUD_DATA ); return; } + filterData( data.getAllList() ); List< CloudRoadData > allDatumsList = new ArrayList<>(); allDatumsList.addAll( data.getAllList() ); // allDatumsList.addAll( data.getNearList() ); @@ -170,6 +171,29 @@ class SnapshotSetDataDrawer extends BaseDrawer implements IMogoMarkerClickListen } } + /** + * vr 模式下显示合并数据,否则只显示上报位置的车辆 + * + * @param dataList + */ + private void filterData( List< CloudRoadData > dataList ) { + if ( dataList == null || dataList.isEmpty() ) { + return; + } + if ( !MogoApisHandler.getInstance().getApis().getStatusManagerApi().isVrMode() ) { + return; + } + List< CloudRoadData > newList = new ArrayList<>(); + for ( CloudRoadData cloudRoadData : dataList ) { + if ( cloudRoadData.getFromType() != CloudRoadData.FROM_MY_LOCATION ) { + continue; + } + newList.add( cloudRoadData ); + } + dataList.clear(); + dataList.addAll( newList ); + } + private void bindClickListener( IMogoMarker marker ) { if ( marker == null || marker.isDestroyed() ) { return; diff --git a/services/mogo-service/src/main/java/com/mogo/service/impl/adas/MogoADASController.java b/services/mogo-service/src/main/java/com/mogo/service/impl/adas/MogoADASController.java index 85c98e6ad5..f82bf29011 100644 --- a/services/mogo-service/src/main/java/com/mogo/service/impl/adas/MogoADASController.java +++ b/services/mogo-service/src/main/java/com/mogo/service/impl/adas/MogoADASController.java @@ -57,6 +57,7 @@ import java.util.List; import java.util.Map; import io.reactivex.schedulers.Schedulers; + import java.util.concurrent.CopyOnWriteArrayList; import static com.mogo.module.common.utils.SPConst.getSpGuide; @@ -85,7 +86,7 @@ public class MogoADASController implements IMogoADASController { private IMogoStatusManager mStatusManager = SingletonsHolder.get( IMogoStatusManager.class ); private boolean mIsReleased = true; - private List adasDataCallbackList = new ArrayList<>(); + private List< IMogoAdasDataCallback > adasDataCallbackList = new ArrayList<>(); private IAutopolitDataCallBack mAutopolitDataCallBack; @@ -113,6 +114,10 @@ public class MogoADASController implements IMogoADASController { // 物体识别返回 // Logger.d( TAG, "onRectData = %s", rectInfo.toString() ); mLastFrameData = rectInfo; + // 仅在 vr 模式下显示 adas 识别车辆 + if ( !MogoApisHandler.getInstance().getApis().getStatusManagerApi().isVrMode() ) { + return; + } handleAdasRecognizedData( rectInfo ); } @@ -210,7 +215,7 @@ public class MogoADASController implements IMogoADASController { @Override public void showADAS() { - if( DebugConfig.isNeedLoadGuideModule() ){ + if ( DebugConfig.isNeedLoadGuideModule() ) { if ( !SharedPrefsMgr.getInstance( AbsMogoApplication.getApp() ).getBoolean( getSpGuide(), false ) ) { return; } @@ -272,13 +277,13 @@ public class MogoADASController implements IMogoADASController { @Override public void requestGetCarModelListInfo() { - if (DebugConfig.isMapBased()) { - Logger.d(TAG, "requestGetCarModelListInfo"); + if ( DebugConfig.isMapBased() ) { + Logger.d( TAG, "requestGetCarModelListInfo" ); // 向adas发送车模list - String carModelList = SharedPrefsMgr.getInstance(context).getString( - "CAR_MODEL_LIST", ""); - if (carModelList != null && !carModelList.isEmpty()) { - AutopilotServiceManage.getInstance().settingCarModelListInfo(carModelList); + String carModelList = SharedPrefsMgr.getInstance( context ).getString( + "CAR_MODEL_LIST", "" ); + if ( carModelList != null && !carModelList.isEmpty() ) { + AutopilotServiceManage.getInstance().settingCarModelListInfo( carModelList ); } // 此处进行网络请求,请求成功后再通知一次adas requestCarModelList(); @@ -368,6 +373,7 @@ public class MogoADASController implements IMogoADASController { } private Context context; + @Override public void init( Context context ) { AutopilotServiceManage.getInstance().init( context ); @@ -464,40 +470,40 @@ public class MogoADASController implements IMogoADASController { private String currentSn = TEST_SN; private void requestCarModelList() { - Map params = new HashMap<>(8); - params.put("sn", Utils.getSn()); + Map< String, String > params = new HashMap<>( 8 ); + params.put( "sn", Utils.getSn() ); // currentSn = useTestSn ? TEST_SN : Utils.getSn(); // params.put("sn", currentSn); - MogoApisHandler.getInstance().getApis().getNetworkApi().create(CarModelInfoNetApiServices.class, CarModelInfoNetApiServices.getBaseUrl()). - requestCarModelList(params). - subscribeOn(Schedulers.io()). - observeOn(Schedulers.io()). - subscribe(new SubscribeImpl(RequestOptions.create(context)) { + MogoApisHandler.getInstance().getApis().getNetworkApi().create( CarModelInfoNetApiServices.class, CarModelInfoNetApiServices.getBaseUrl() ). + requestCarModelList( params ). + subscribeOn( Schedulers.io() ). + observeOn( Schedulers.io() ). + subscribe( new SubscribeImpl< CarModelListResponse >( RequestOptions.create( context ) ) { @Override - public void onSuccess(CarModelListResponse o) { - super.onSuccess(o); - Logger.d(TAG, "请求车模列表成功: " + o); + public void onSuccess( CarModelListResponse o ) { + super.onSuccess( o ); + Logger.d( TAG, "请求车模列表成功: " + o ); // 保存到sp中 - String value = GsonUtil.jsonFromObject(o.getResult()); - SharedPrefsMgr.getInstance(context).putString("CAR_MODEL_LIST", - value); - if(value != null && !value.isEmpty()){ - AutopilotServiceManage.getInstance().settingCarModelListInfo(value); + String value = GsonUtil.jsonFromObject( o.getResult() ); + SharedPrefsMgr.getInstance( context ).putString( "CAR_MODEL_LIST", + value ); + if ( value != null && !value.isEmpty() ) { + AutopilotServiceManage.getInstance().settingCarModelListInfo( value ); } } @Override - public void onError(Throwable e) { - super.onError(e); - Logger.e(TAG, e, "请求自车模型失败"); + public void onError( Throwable e ) { + super.onError( e ); + Logger.e( TAG, e, "请求自车模型失败" ); } @Override - public void onError(String message, int code) { - super.onError(message, code); - Logger.e(TAG, "请求自车模型失败: " + message); + public void onError( String message, int code ) { + super.onError( message, code ); + Logger.e( TAG, "请求自车模型失败: " + message ); } - }); + } ); } From 7fa38d9080f621230a0bc61ddb8814832433e344 Mon Sep 17 00:00:00 2001 From: wangcongtao Date: Sun, 27 Dec 2020 15:57:35 +0800 Subject: [PATCH 03/72] =?UTF-8?q?=E5=8D=87=E7=BA=A7=E8=87=AA=E7=A0=94?= =?UTF-8?q?=E5=9C=B0=E5=9B=BEsdk=E7=89=88=E6=9C=AC=20=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E4=BB=96=E8=BD=A6=E5=8A=A8=E7=94=BB=E6=97=B6=E9=97=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- libraries/map-custom/build.gradle | 2 +- .../com/mogo/module/common/drawer/SnapshotSetDataDrawer.java | 2 +- .../src/main/java/com/mogo/module/service/MogoServices.java | 2 ++ 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/libraries/map-custom/build.gradle b/libraries/map-custom/build.gradle index f42565d9bb..bd525599dc 100644 --- a/libraries/map-custom/build.gradle +++ b/libraries/map-custom/build.gradle @@ -67,7 +67,7 @@ dependencies { implementation project(':foudations:mogo-commons') } - implementation 'com.zhidaoauto.machine:map:1.0.0-vr-7.4.8' + implementation 'com.zhidaoauto.machine:map:1.0.0-vr-7.5.1' // implementation 'com.zhidaoauto.machine:map:1.0.0-vr-7.4.5-log-1' } diff --git a/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/SnapshotSetDataDrawer.java b/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/SnapshotSetDataDrawer.java index 076f058274..c09cfdf95f 100644 --- a/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/SnapshotSetDataDrawer.java +++ b/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/SnapshotSetDataDrawer.java @@ -159,7 +159,7 @@ class SnapshotSetDataDrawer extends BaseDrawer implements IMogoMarkerClickListen List< MogoLatLng > points = new ArrayList<>(); points.add( new MogoLatLng( lastPosition.lat, lastPosition.lon ) ); points.add( new MogoLatLng( target.lat, target.lon ) ); - marker.startSmoothInMs( points, 500L ); + marker.startSmoothInMs( points, SystemClock.elapsedRealtime() - mLastReceiveTime ); } } else { marker.setRotateAngle( 360 - ( float ) cloudRoadData.getHeading() ); diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/MogoServices.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/MogoServices.java index 25460261f1..bcfe822ff2 100644 --- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/MogoServices.java +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/MogoServices.java @@ -555,6 +555,8 @@ public class MogoServices implements IMogoMapListener, MapMarkerManager.getInstance().syncLocation( latLng.lon, latLng.lat ); + Logger.d( TAG, "zoom = %s", zoom ); + if ( mIsCameraInited ) { mLastZoomLevel = zoom; mLastCustomRefreshCenterLocation = latLng; From ec080323392416621a5ea40b7ec9428db31eb9e3 Mon Sep 17 00:00:00 2001 From: wangcongtao Date: Sun, 27 Dec 2020 16:05:14 +0800 Subject: [PATCH 04/72] opt --- .../com/mogo/module/common/drawer/SnapshotSetDataDrawer.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/SnapshotSetDataDrawer.java b/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/SnapshotSetDataDrawer.java index c09cfdf95f..c3e9f0b981 100644 --- a/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/SnapshotSetDataDrawer.java +++ b/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/SnapshotSetDataDrawer.java @@ -180,7 +180,7 @@ class SnapshotSetDataDrawer extends BaseDrawer implements IMogoMarkerClickListen if ( dataList == null || dataList.isEmpty() ) { return; } - if ( !MogoApisHandler.getInstance().getApis().getStatusManagerApi().isVrMode() ) { + if ( MogoApisHandler.getInstance().getApis().getStatusManagerApi().isVrMode() ) { return; } List< CloudRoadData > newList = new ArrayList<>(); From 93f5a60249116b3538bc0990c7186a7ce43fdf9d Mon Sep 17 00:00:00 2001 From: wangcongtao Date: Mon, 28 Dec 2020 15:06:10 +0800 Subject: [PATCH 05/72] =?UTF-8?q?=E5=8E=BB=E6=8E=89=E8=87=AA=E7=A0=94?= =?UTF-8?q?=E5=9C=B0=E5=9B=BEstyleDir=E8=AE=BE=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/mogo/map/impl/custom/CustomMapApiBuilder.java | 1 - 1 file changed, 1 deletion(-) diff --git a/libraries/map-custom/src/main/java/com/mogo/map/impl/custom/CustomMapApiBuilder.java b/libraries/map-custom/src/main/java/com/mogo/map/impl/custom/CustomMapApiBuilder.java index 4e9a9a7885..4044a5203d 100644 --- a/libraries/map-custom/src/main/java/com/mogo/map/impl/custom/CustomMapApiBuilder.java +++ b/libraries/map-custom/src/main/java/com/mogo/map/impl/custom/CustomMapApiBuilder.java @@ -95,7 +95,6 @@ class CustomMapApiBuilder implements IMogoMapApiBuilder { .setDebugMode( true ) .setCoordinateType( MapParams.COORDINATETYPE_GCJ02 ) .setPerspectiveMode( MapParams.MAP_PERSPECTIVE_2D ) - .setStyleDir( "sdcard/shmdata_asset/mogo_style" ) .setCachePath( "sdcard/tiles" ) .setZoom( 16 ) .setPointToCenter( 0.734375f, 0.5f ) From 71c5c8582e0b1ab97a8c4bfe0e1477484a1dc7f8 Mon Sep 17 00:00:00 2001 From: wangcongtao Date: Mon, 28 Dec 2020 15:06:56 +0800 Subject: [PATCH 06/72] =?UTF-8?q?=E5=8E=BB=E6=8E=89=E8=87=AA=E7=A0=94?= =?UTF-8?q?=E5=9C=B0=E5=9B=BEcachePath=E8=AE=BE=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/mogo/map/impl/custom/CustomMapApiBuilder.java | 1 - 1 file changed, 1 deletion(-) diff --git a/libraries/map-custom/src/main/java/com/mogo/map/impl/custom/CustomMapApiBuilder.java b/libraries/map-custom/src/main/java/com/mogo/map/impl/custom/CustomMapApiBuilder.java index 4044a5203d..2dd9320480 100644 --- a/libraries/map-custom/src/main/java/com/mogo/map/impl/custom/CustomMapApiBuilder.java +++ b/libraries/map-custom/src/main/java/com/mogo/map/impl/custom/CustomMapApiBuilder.java @@ -95,7 +95,6 @@ class CustomMapApiBuilder implements IMogoMapApiBuilder { .setDebugMode( true ) .setCoordinateType( MapParams.COORDINATETYPE_GCJ02 ) .setPerspectiveMode( MapParams.MAP_PERSPECTIVE_2D ) - .setCachePath( "sdcard/tiles" ) .setZoom( 16 ) .setPointToCenter( 0.734375f, 0.5f ) .setStyleMode( MapParams.MAP_STYLE_NIGHT ), NavParams.Companion.init() ); From f66884bd98d2582df333a3c989542287a74eba7d Mon Sep 17 00:00:00 2001 From: unknown Date: Mon, 28 Dec 2020 19:15:50 +0800 Subject: [PATCH 07/72] update callchat t --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 47537e0156..02f2b63fe2 100644 --- a/gradle.properties +++ b/gradle.properties @@ -139,7 +139,7 @@ HTTPDNS_NOOP_VERSION = 2.0.12 ######## 外部依赖引用 # 车聊聊 -CARCHATTING_VERSION=2.2.41 +CARCHATTING_VERSION=2.2.42 # 车聊聊接口 CARCHATTINGPROVIDER_VERSION=1.1.8 # websocket From 2cef54afdb3db87b8e9d79f2e69fcc18c2acd511 Mon Sep 17 00:00:00 2001 From: wangcongtao Date: Mon, 28 Dec 2020 20:51:22 +0800 Subject: [PATCH 08/72] =?UTF-8?q?=E5=8D=87=E7=BA=A7=E5=9C=B0=E5=9B=BE?= =?UTF-8?q?=E7=89=88=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- libraries/map-custom/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/map-custom/build.gradle b/libraries/map-custom/build.gradle index bd525599dc..b4e3a6729c 100644 --- a/libraries/map-custom/build.gradle +++ b/libraries/map-custom/build.gradle @@ -67,7 +67,7 @@ dependencies { implementation project(':foudations:mogo-commons') } - implementation 'com.zhidaoauto.machine:map:1.0.0-vr-7.5.1' + implementation 'com.zhidaoauto.machine:map:1.0.0-vr-7.5.3' // implementation 'com.zhidaoauto.machine:map:1.0.0-vr-7.4.5-log-1' } From fa6e7b4ae61077a00b20efc7148b33c7ad95f44f Mon Sep 17 00:00:00 2001 From: wangcongtao Date: Tue, 29 Dec 2020 10:42:10 +0800 Subject: [PATCH 09/72] =?UTF-8?q?=E6=89=93=E5=BC=80=E8=BD=A6=E8=81=8A?= =?UTF-8?q?=E8=81=8A=E6=A8=A1=E5=9D=97=E4=BE=9D=E8=B5=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/java/com/mogo/launcher/MogoApplication.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/com/mogo/launcher/MogoApplication.java b/app/src/main/java/com/mogo/launcher/MogoApplication.java index dd82afcdb8..b21ec92c05 100644 --- a/app/src/main/java/com/mogo/launcher/MogoApplication.java +++ b/app/src/main/java/com/mogo/launcher/MogoApplication.java @@ -75,7 +75,7 @@ public class MogoApplication extends AbsMogoApplication { MogoModulePaths.addBaseModule( new MogoModule( MogoServicePaths.PATH_WIDGETS, MogoServicePaths.PATH_WIDGETS ) ); if ( DebugConfig.isMapBased() ) { -// MogoModulePaths.addModule( new MogoModule( CallChatConstant.PROVIDER, CallChatConstant.MODULE_NAME ) ); + MogoModulePaths.addModule( new MogoModule( CallChatConstant.PROVIDER, CallChatConstant.MODULE_NAME ) ); } MogoModulePaths.addBaseModule( new MogoModule( ShareConstants.TAG, ShareConstants.MODEL_NAME ) ); From 0b59ca285b96b3f1f242282762a7d3d90f49b7e1 Mon Sep 17 00:00:00 2001 From: wangcongtao Date: Tue, 29 Dec 2020 14:35:29 +0800 Subject: [PATCH 10/72] =?UTF-8?q?=E5=8D=87=E7=BA=A7=E8=87=AA=E7=A0=94?= =?UTF-8?q?=E5=9C=B0=E5=9B=BE=E7=89=88=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- libraries/map-custom/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/map-custom/build.gradle b/libraries/map-custom/build.gradle index b4e3a6729c..f355e8380f 100644 --- a/libraries/map-custom/build.gradle +++ b/libraries/map-custom/build.gradle @@ -67,7 +67,7 @@ dependencies { implementation project(':foudations:mogo-commons') } - implementation 'com.zhidaoauto.machine:map:1.0.0-vr-7.5.3' + implementation 'com.zhidaoauto.machine:map:1.0.0-vr-7.5.4' // implementation 'com.zhidaoauto.machine:map:1.0.0-vr-7.4.5-log-1' } From 33bb4cf54219e8000dd1e7f750bdf7b1ce6d0992 Mon Sep 17 00:00:00 2001 From: wangcongtao Date: Tue, 29 Dec 2020 15:02:07 +0800 Subject: [PATCH 11/72] =?UTF-8?q?=E5=9B=9E=E9=80=80=E8=87=AA=E7=A0=94?= =?UTF-8?q?=E5=9C=B0=E5=9B=BE=E7=89=88=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- libraries/map-custom/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/map-custom/build.gradle b/libraries/map-custom/build.gradle index f355e8380f..b4e3a6729c 100644 --- a/libraries/map-custom/build.gradle +++ b/libraries/map-custom/build.gradle @@ -67,7 +67,7 @@ dependencies { implementation project(':foudations:mogo-commons') } - implementation 'com.zhidaoauto.machine:map:1.0.0-vr-7.5.4' + implementation 'com.zhidaoauto.machine:map:1.0.0-vr-7.5.3' // implementation 'com.zhidaoauto.machine:map:1.0.0-vr-7.4.5-log-1' } From 5fc63bbd7b128507a9df3b1895a3c8d3d1f4ca19 Mon Sep 17 00:00:00 2001 From: wangcongtao Date: Tue, 29 Dec 2020 15:59:43 +0800 Subject: [PATCH 12/72] =?UTF-8?q?=E4=BC=98=E5=8C=96=E5=9C=B0=E5=9B=BE?= =?UTF-8?q?=E5=90=AF=E5=8A=A8=E6=97=B6=E7=99=BD=E5=A4=A9=E3=80=81=E5=A4=9C?= =?UTF-8?q?=E9=97=B4=E6=A8=A1=E5=BC=8F=E7=9A=84=E8=AE=BE=E7=BD=AE=E6=97=B6?= =?UTF-8?q?=E6=9C=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/mogo/module/main/MainActivity.java | 6 ++++++ .../src/main/java/com/mogo/module/map/MapFragment.java | 4 ---- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/modules/mogo-module-main/src/main/java/com/mogo/module/main/MainActivity.java b/modules/mogo-module-main/src/main/java/com/mogo/module/main/MainActivity.java index e23dc28f2f..7e1b136d68 100644 --- a/modules/mogo-module-main/src/main/java/com/mogo/module/main/MainActivity.java +++ b/modules/mogo-module-main/src/main/java/com/mogo/module/main/MainActivity.java @@ -182,6 +182,7 @@ public class MainActivity extends MvpActivity< MainView, MainPresenter > impleme EventDispatchCenter.getInstance().setMapLoadedCallback( () -> { Logger.d( TAG, "map loaded." + Thread.currentThread().getName() ); resetMapCenterPoint(); + resetMapUiStyle(); loadOthersModules(); Log.i( "timer", "cost " + ( System.currentTimeMillis() - start ) + "ms" ); } ); @@ -203,6 +204,11 @@ public class MainActivity extends MvpActivity< MainView, MainPresenter > impleme } + private void resetMapUiStyle(){ + final EnumMapUI mapUI = MogoApisHandler.getInstance().getApis().getAdasControllerApi().getCurrentSkinMode(); + mServiceApis.getMapServiceApi().getMapUIController().changeMapMode( mapUI ); + } + private void resetMapCenterPoint() { // 右移地图中心点 MapCenterPointStrategy.init(); diff --git a/modules/mogo-module-map/src/main/java/com/mogo/module/map/MapFragment.java b/modules/mogo-module-map/src/main/java/com/mogo/module/map/MapFragment.java index 626d665366..9940ca26a2 100644 --- a/modules/mogo-module-map/src/main/java/com/mogo/module/map/MapFragment.java +++ b/modules/mogo-module-map/src/main/java/com/mogo/module/map/MapFragment.java @@ -154,10 +154,6 @@ public class MapFragment extends MvpFragment< MapView, MapPresenter > implements if ( mMogoMap.getUIController() != null ) { mMogoMap.getUIController().changeMapMode( EnumMapUI.CarUp_2D ); } - - - final EnumMapUI mapUI = MogoApisHandler.getInstance().getApis().getAdasControllerApi().getCurrentSkinMode(); - getUIController().changeMapMode( mapUI ); } } From d631c8c823f16e12439f7c88f3a0b374ab7aab3d Mon Sep 17 00:00:00 2001 From: wangcongtao Date: Tue, 29 Dec 2020 16:16:52 +0800 Subject: [PATCH 13/72] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E8=AF=AD=E9=9F=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/mogo/module/service/MogoServices.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/MogoServices.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/MogoServices.java index bcfe822ff2..59406a8a9a 100644 --- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/MogoServices.java +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/MogoServices.java @@ -933,10 +933,12 @@ public class MogoServices implements IMogoMapListener, MogoApisHandler.getInstance().getApis().getStatusManagerApi().setVrMode( TAG, true ); MapCenterPointStrategy.resetByChangeMode(); MapMarkerManager.getInstance().redrawMarkerByStyleChanged(); + AIAssist.getInstance( mContext ).speakTTSVoice( "你已进入鹰眼模式" ); } else { MogoApisHandler.getInstance().getApis().getStatusManagerApi().setVrMode( TAG, false ); MapCenterPointStrategy.resetByChangeMode(); MapMarkerManager.getInstance().redrawMarkerByStyleChanged(); + AIAssist.getInstance( mContext ).speakTTSVoice( "你已离开鹰眼模式" ); } } } From b66ec1da6d10c610ea89d201444787377c2749a4 Mon Sep 17 00:00:00 2001 From: wangcongtao Date: Tue, 29 Dec 2020 16:43:18 +0800 Subject: [PATCH 14/72] =?UTF-8?q?=E5=8D=87=E7=BA=A7=E5=9C=B0=E5=9B=BE?= =?UTF-8?q?=E7=89=88=E6=9C=AC=E5=88=B0=E6=9C=80=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- libraries/map-custom/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/map-custom/build.gradle b/libraries/map-custom/build.gradle index b4e3a6729c..f355e8380f 100644 --- a/libraries/map-custom/build.gradle +++ b/libraries/map-custom/build.gradle @@ -67,7 +67,7 @@ dependencies { implementation project(':foudations:mogo-commons') } - implementation 'com.zhidaoauto.machine:map:1.0.0-vr-7.5.3' + implementation 'com.zhidaoauto.machine:map:1.0.0-vr-7.5.4' // implementation 'com.zhidaoauto.machine:map:1.0.0-vr-7.4.5-log-1' } From 6257b7f79a6e9f6f1a80910995647540344a7547 Mon Sep 17 00:00:00 2001 From: lixiaopeng Date: Tue, 29 Dec 2020 18:04:31 +0800 Subject: [PATCH 15/72] opt ui --- .../res/drawable/module_media_circle_bg.xml | 9 +++ ...le_media_music_window_alert_layout_new.xml | 56 ++++++++++++------- 2 files changed, 44 insertions(+), 21 deletions(-) create mode 100644 modules/mogo-module-media/src/main/res/drawable/module_media_circle_bg.xml diff --git a/modules/mogo-module-media/src/main/res/drawable/module_media_circle_bg.xml b/modules/mogo-module-media/src/main/res/drawable/module_media_circle_bg.xml new file mode 100644 index 0000000000..4f0286a260 --- /dev/null +++ b/modules/mogo-module-media/src/main/res/drawable/module_media_circle_bg.xml @@ -0,0 +1,9 @@ + + + + + diff --git a/modules/mogo-module-media/src/main/res/layout/module_media_music_window_alert_layout_new.xml b/modules/mogo-module-media/src/main/res/layout/module_media_music_window_alert_layout_new.xml index 2469ea2ba7..9002881140 100644 --- a/modules/mogo-module-media/src/main/res/layout/module_media_music_window_alert_layout_new.xml +++ b/modules/mogo-module-media/src/main/res/layout/module_media_music_window_alert_layout_new.xml @@ -7,45 +7,59 @@ - + app:layout_constraintTop_toTopOf="parent" /> + - - - - - - - - + + + + + + + + - + app:layout_constraintTop_toTopOf="parent"> + + + + + From cab2517b1c523a9ca8fd282c92b1015e37c8bf0c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=91=A3=E5=AE=8F=E5=AE=87?= Date: Tue, 29 Dec 2020 18:44:01 +0800 Subject: [PATCH 16/72] =?UTF-8?q?=E8=A7=A3=E5=86=B3=E6=8D=A2=E8=82=A4?= =?UTF-8?q?=E6=A1=86=E6=9E=B6=E4=B8=8E=E9=AB=98=E5=BE=B7=E5=9C=B0=E5=9B=BE?= =?UTF-8?q?=E7=9A=84=E5=86=B2=E7=AA=81=20=E7=9B=B4=E6=8E=A5=E9=80=9A?= =?UTF-8?q?=E8=BF=87=E5=86=85=E5=AD=98=E5=9C=B0=E5=9D=80=E6=9B=BF=E6=8D=A2?= =?UTF-8?q?=E6=95=B4=E4=B8=AA=20ArtMethod=20=EF=BC=8C=E5=AE=8C=E6=88=90?= =?UTF-8?q?=E4=BA=86=E9=AB=98=E5=BE=B7=E5=9C=B0=E5=9B=BE=E6=96=B9=E6=B3=95?= =?UTF-8?q?=E7=9A=84=E6=9B=BF=E6=8D=A2=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/gradle.xml | 1 - .idea/misc.xml | 6 +- modules/mogo-module-common/CMakeLists.txt | 44 +++++ modules/mogo-module-common/build.gradle | 12 +- .../src/main/cpp/method-hook-lib.cpp | 87 ++++++++ .../mogo/module/common/hook/HookManager.java | 67 +++++++ .../mogo/module/common/hook/MethodHook.java | 64 ++++++ .../src/main/AndroidManifest.xml | 6 +- .../main/java/com/amap/api/col/n3/le2.java | 186 ++++++++++++++++++ .../main/java/com/amap/api/col/n3/lg2.java | 40 ++++ .../policy/MyPhoneLayoutInflater.java | 60 ++++++ .../module/small/map/SmallVisionProvider.java | 70 ++++++- 12 files changed, 628 insertions(+), 15 deletions(-) create mode 100644 modules/mogo-module-common/CMakeLists.txt create mode 100644 modules/mogo-module-common/src/main/cpp/method-hook-lib.cpp create mode 100644 modules/mogo-module-common/src/main/java/com/mogo/module/common/hook/HookManager.java create mode 100644 modules/mogo-module-common/src/main/java/com/mogo/module/common/hook/MethodHook.java create mode 100644 modules/mogo-module-smp/src/main/java/com/amap/api/col/n3/le2.java create mode 100644 modules/mogo-module-smp/src/main/java/com/amap/api/col/n3/lg2.java create mode 100644 modules/mogo-module-smp/src/main/java/com/android/internal/policy/MyPhoneLayoutInflater.java diff --git a/.idea/gradle.xml b/.idea/gradle.xml index 8efbfa420e..426ff6b360 100644 --- a/.idea/gradle.xml +++ b/.idea/gradle.xml @@ -85,7 +85,6 @@ diff --git a/.idea/misc.xml b/.idea/misc.xml index e082ea7475..733acb1920 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -1,10 +1,14 @@ + + + + - + \ No newline at end of file diff --git a/modules/mogo-module-common/CMakeLists.txt b/modules/mogo-module-common/CMakeLists.txt new file mode 100644 index 0000000000..e66e013af7 --- /dev/null +++ b/modules/mogo-module-common/CMakeLists.txt @@ -0,0 +1,44 @@ +# For more information about using CMake with Android Studio, read the +# documentation: https://d.android.com/studio/projects/add-native-code.html + +# Sets the minimum version of CMake required to build the native library. + +cmake_minimum_required(VERSION 3.4.1) + +# Creates and names a library, sets it as either STATIC +# or SHARED, and provides the relative paths to its source code. +# You can define multiple libraries, and CMake builds them for you. +# Gradle automatically packages shared libraries with your APK. + +add_library( # Sets the name of the library. + method-hook-lib + + # Sets the library as a shared library. + SHARED + + # Provides a relative path to your source file(s). + src/main/cpp/method-hook-lib.cpp ) + +# Searches for a specified prebuilt library and stores the path as a +# variable. Because CMake includes system libraries in the search path by +# default, you only need to specify the name of the public NDK library +# you want to add. CMake verifies that the library exists before +# completing its build. + +find_library( # Sets the name of the path variable. + log-lib + + # Specifies the name of the NDK library that + # you want CMake to locate. + log ) + +# Specifies libraries CMake should link to your target library. You +# can link multiple libraries, such as libraries you define in this +# build script, prebuilt third-party libraries, or system libraries. + +target_link_libraries( # Specifies the target library. + method-hook-lib + + # Links the target library to the log library + # included in the NDK. + ${log-lib} ) \ No newline at end of file diff --git a/modules/mogo-module-common/build.gradle b/modules/mogo-module-common/build.gradle index 99e827b866..783a180702 100644 --- a/modules/mogo-module-common/build.gradle +++ b/modules/mogo-module-common/build.gradle @@ -11,8 +11,18 @@ android { testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" consumerProguardFiles 'consumer-rules.pro' - } + externalNativeBuild { + cmake { + cppFlags "-std=c++11 -frtti -fexceptions" + } + } + } + externalNativeBuild { + cmake { + path "CMakeLists.txt" + } + } buildTypes { release { minifyEnabled false diff --git a/modules/mogo-module-common/src/main/cpp/method-hook-lib.cpp b/modules/mogo-module-common/src/main/cpp/method-hook-lib.cpp new file mode 100644 index 0000000000..046981c7f2 --- /dev/null +++ b/modules/mogo-module-common/src/main/cpp/method-hook-lib.cpp @@ -0,0 +1,87 @@ +#include +#include + +// +// Created by donghongyu on 12/10/20 1:34 PM. +// 源码地址 https://github.com/pqpo/methodhook +// 方法hook jni类 +static const char *kClassMethodHookChar = "com/mogo/module/common/hook/MethodHook"; + +static struct { + jmethodID m1; + jmethodID m2; + size_t methodSize; +} methodHookClassInfo; + + +/** + * 替换指定类中的方法 + * @param env + * @param type 要替换方法的目标 class + * @param srcMethodObj 目标方法对象 + * @param destMethodObj 替换的方法对象 + * @return + */ +static jlong methodHook(JNIEnv *env, jclass type, jobject srcMethodObj, jobject destMethodObj) { + void *srcMethod = reinterpret_cast(env->FromReflectedMethod(srcMethodObj)); + void *destMethod = reinterpret_cast(env->FromReflectedMethod(destMethodObj)); + int *backupMethod = new int[methodHookClassInfo.methodSize]; + memcpy(backupMethod, srcMethod, methodHookClassInfo.methodSize); + memcpy(srcMethod, destMethod, methodHookClassInfo.methodSize); + return reinterpret_cast(backupMethod); +} + +/** + * 恢复指定类中的方法 + * @param env + * @param type 要恢复方法的目标 class + * @param srcMethod 目标方法对象 + * @param methodPtr + * @return + */ +static jobject methodRestore(JNIEnv *env, jclass type, jobject srcMethod, jlong methodPtr) { + int *backupMethod = reinterpret_cast(methodPtr); + void *artMethodSrc = reinterpret_cast(env->FromReflectedMethod(srcMethod)); + memcpy(artMethodSrc, backupMethod, methodHookClassInfo.methodSize); + delete[]backupMethod; + return srcMethod; +} + + +static JNINativeMethod gMethods[] = { + { + "hook_native", + "(Ljava/lang/reflect/Method;Ljava/lang/reflect/Method;)J", + (void *) methodHook + }, + { + "restore_native", + "(Ljava/lang/reflect/Method;J)Ljava/lang/reflect/Method;", + (void *) methodRestore + } +}; + +extern "C" +JNIEXPORT jint JNICALL +/** + * 在jni加载的时候进行方法参数获取 + * @param vm + * @param reserved + * @return + */ +JNI_OnLoad(JavaVM *vm, void *reserved) { + JNIEnv *env = nullptr; + if (vm->GetEnv((void **) &env, JNI_VERSION_1_4) != JNI_OK) { + return JNI_FALSE; + } + jclass classEvaluateUtil = env->FindClass(kClassMethodHookChar); + if (env->RegisterNatives(classEvaluateUtil, gMethods, sizeof(gMethods) / sizeof(gMethods[0])) < + 0) { + return JNI_FALSE; + } + methodHookClassInfo.m1 = env->GetStaticMethodID(classEvaluateUtil, "m1", "()V"); + methodHookClassInfo.m2 = env->GetStaticMethodID(classEvaluateUtil, "m2", "()V"); + methodHookClassInfo.methodSize = reinterpret_cast(methodHookClassInfo.m2) - + reinterpret_cast(methodHookClassInfo.m1); + return JNI_VERSION_1_4; +} diff --git a/modules/mogo-module-common/src/main/java/com/mogo/module/common/hook/HookManager.java b/modules/mogo-module-common/src/main/java/com/mogo/module/common/hook/HookManager.java new file mode 100644 index 0000000000..6dc15753b1 --- /dev/null +++ b/modules/mogo-module-common/src/main/java/com/mogo/module/common/hook/HookManager.java @@ -0,0 +1,67 @@ +package com.mogo.module.common.hook; + + +import android.util.Pair; + +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + +/** + * 替换管理 + * Created by donghongyu on 12/29/20 1:34 PM + */ +public final class HookManager { + + private HookManager() { + } + + public static HookManager get() { + return InstanceHolder.sInstance; + } + + private static class InstanceHolder { + private static HookManager sInstance = new HookManager(); + } + + private Map, MethodHook> methodHookMap = new ConcurrentHashMap<>(); + + /** + * 替换方法 + * + * @param originMethod 原始方法 + * @param hookMethod 替换方法 + */ + public void hookMethod(Method originMethod, Method hookMethod) { + if (originMethod == null || hookMethod == null) { + throw new IllegalArgumentException("argument cannot be null"); + } + + Pair key = Pair.create(hookMethod.getDeclaringClass().getName(), hookMethod.getName()); + if (methodHookMap.containsKey(key)) { + MethodHook methodHook = methodHookMap.get(key); + methodHook.restore(); + } + MethodHook methodHook = new MethodHook(originMethod, hookMethod); + methodHookMap.put(key, methodHook); + methodHook.hook(); + } + + public void callOrigin(Object receiver, Object... args) { + StackTraceElement stackTrace = Thread.currentThread().getStackTrace()[3]; + String className = stackTrace.getClassName(); + String methodName = stackTrace.getMethodName(); + MethodHook methodHook = methodHookMap.get(Pair.create(className, methodName)); + if (methodHook != null) { + try { + methodHook.callOrigin(receiver, args); + } catch (InvocationTargetException e) { + e.printStackTrace(); + } catch (IllegalAccessException e) { + e.printStackTrace(); + } + } + } + +} diff --git a/modules/mogo-module-common/src/main/java/com/mogo/module/common/hook/MethodHook.java b/modules/mogo-module-common/src/main/java/com/mogo/module/common/hook/MethodHook.java new file mode 100644 index 0000000000..e63cf11392 --- /dev/null +++ b/modules/mogo-module-common/src/main/java/com/mogo/module/common/hook/MethodHook.java @@ -0,0 +1,64 @@ +package com.mogo.module.common.hook; + +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; + +/** + * 替换类与c++代码对应 + * Created by donghongyu on 12/29/20 1:34 PM + */ +public class MethodHook { + + public static void m1() { + } + + public static void m2() { + } + + // 目标方法 + private Method srcMethod; + // 要替换的方法 + private Method hookMethod; + + // 备份目标替换方法ID + private long backupMethodPtr; + + public MethodHook(Method src, Method dest) { + srcMethod = src; + hookMethod = dest; + srcMethod.setAccessible(true); + hookMethod.setAccessible(true); + } + + public void hook() { + if (backupMethodPtr == 0) { + backupMethodPtr = hook_native(srcMethod, hookMethod); + } + } + + public void restore() { + if (backupMethodPtr != 0) { + restore_native(srcMethod, backupMethodPtr); + backupMethodPtr = 0; + } + } + + public void callOrigin(Object receiver, Object... args) throws InvocationTargetException, IllegalAccessException { + if (backupMethodPtr != 0) { + restore(); + srcMethod.invoke(receiver, args); + hook(); + } else { + srcMethod.invoke(receiver, args); + } + } + + private static native long hook_native(Method src, Method dest); + + private static native Method restore_native(Method src, long methodPtr); + + static { + System.loadLibrary("method-hook-lib"); + } + +} diff --git a/modules/mogo-module-smp/src/main/AndroidManifest.xml b/modules/mogo-module-smp/src/main/AndroidManifest.xml index 32b078729c..33c6adff88 100644 --- a/modules/mogo-module-smp/src/main/AndroidManifest.xml +++ b/modules/mogo-module-smp/src/main/AndroidManifest.xml @@ -2,10 +2,10 @@ - + \ No newline at end of file diff --git a/modules/mogo-module-smp/src/main/java/com/amap/api/col/n3/le2.java b/modules/mogo-module-smp/src/main/java/com/amap/api/col/n3/le2.java new file mode 100644 index 0000000000..cd406be8a7 --- /dev/null +++ b/modules/mogo-module-smp/src/main/java/com/amap/api/col/n3/le2.java @@ -0,0 +1,186 @@ +// +// 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 a = new HashSet(); + public HashMap> b = new HashMap(); + + public a() { + } + } +} diff --git a/modules/mogo-module-smp/src/main/java/com/amap/api/col/n3/lg2.java b/modules/mogo-module-smp/src/main/java/com/amap/api/col/n3/lg2.java new file mode 100644 index 0000000000..347f98ddc6 --- /dev/null +++ b/modules/mogo-module-smp/src/main/java/com/amap/api/col/n3/lg2.java @@ -0,0 +1,40 @@ +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; + } + } +} diff --git a/modules/mogo-module-smp/src/main/java/com/android/internal/policy/MyPhoneLayoutInflater.java b/modules/mogo-module-smp/src/main/java/com/android/internal/policy/MyPhoneLayoutInflater.java new file mode 100644 index 0000000000..4a2d262764 --- /dev/null +++ b/modules/mogo-module-smp/src/main/java/com/android/internal/policy/MyPhoneLayoutInflater.java @@ -0,0 +1,60 @@ +package com.android.internal.policy; + +import android.content.Context; +import android.util.AttributeSet; +import android.view.LayoutInflater; +import android.view.View; + +/** + * @author donghongyu + * @date 12/25/20 5:12 PM + */ +public class MyPhoneLayoutInflater extends LayoutInflater { + private static final String[] sClassPrefixList = { + "android.widget.", + "android.webkit.", + "android.app." + }; + + /** + * Instead of instantiating directly, you should retrieve an instance + * through {@link Context#getSystemService} + * + * @param context The Context in which in which to find resources and other + * application-specific things. + * @see Context#getSystemService + */ + public MyPhoneLayoutInflater(Context context) { + super(context); + } + + protected MyPhoneLayoutInflater(LayoutInflater original, Context newContext) { + super(original, newContext); + } + + /** + * Override onCreateView to instantiate names that correspond to the + * widgets known to the Widget factory. If we don't find a match, + * call through to our super class. + */ + @Override + protected View onCreateView(String name, AttributeSet attrs) throws ClassNotFoundException { + for (String prefix : sClassPrefixList) { + try { + View view = createView(name, prefix, attrs); + if (view != null) { + return view; + } + } catch (ClassNotFoundException e) { + // In this case we want to let the base class take a crack + // at it. + } + } + + return super.onCreateView(name, attrs); + } + + public LayoutInflater cloneInContext(Context newContext) { + return new MyPhoneLayoutInflater(this, newContext); + } +} \ No newline at end of file diff --git a/modules/mogo-module-smp/src/main/java/com/mogo/module/small/map/SmallVisionProvider.java b/modules/mogo-module-smp/src/main/java/com/mogo/module/small/map/SmallVisionProvider.java index 10fb9139b9..258bce4688 100644 --- a/modules/mogo-module-smp/src/main/java/com/mogo/module/small/map/SmallVisionProvider.java +++ b/modules/mogo-module-smp/src/main/java/com/mogo/module/small/map/SmallVisionProvider.java @@ -1,22 +1,30 @@ package com.mogo.module.small.map; import android.content.Context; -import android.content.Intent; 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.mogo.commons.AbsMogoApplication; +import com.amap.api.col.n3.lg; +import com.amap.api.col.n3.lg2; import com.mogo.module.common.MogoApisHandler; +import com.mogo.module.common.hook.HookManager; +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 @@ -26,9 +34,11 @@ import com.mogo.service.statusmanager.StatusDescriptor; public class SmallVisionProvider implements IMogoSmallMapProvider, IMogoStatusChangedListener { private final String TAG = "SmallVisionProvider"; - private Intent mSmallMapServiceIntent; private Context mContext; + private WindowManagerView mWindowManagerView; + private SmallMapDirectionView mSmallMapDirectionView; + @Override public Fragment createFragment(Context context, Bundle data) { return null; @@ -55,6 +65,19 @@ public class SmallVisionProvider implements IMogoSmallMapProvider, IMogoStatusCh Log.d(TAG, "小地图模块初始化……"); mContext = context; + try { + 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); + } catch (NoSuchMethodException e) { + e.printStackTrace(); + } + } catch (Exception e) { + e.printStackTrace(); + } + MogoApisHandler.getInstance() .getApis() .getStatusManagerApi() @@ -76,22 +99,22 @@ public class SmallVisionProvider implements IMogoSmallMapProvider, IMogoStatusCh public void onDestroy() { Log.d(TAG, "小地图模块销毁……"); hidePanel(); + // 释放组件内存 + mSmallMapDirectionView = null; + mWindowManagerView = null; } @Override public void showPanel() { Log.d(TAG, "小地图模块触发展示……"); - if (MogoApisHandler.getInstance().getApis().getStatusManagerApi().isVrMode()) { - mSmallMapServiceIntent = new Intent(mContext, SmallMapService.class); - mContext.startService(mSmallMapServiceIntent); - } + addSmallMapView(); } @Override public void hidePanel() { Log.d(TAG, "小地图模块触发隐藏……"); - if (mSmallMapServiceIntent != null) { - AbsMogoApplication.getApp().stopService(mSmallMapServiceIntent); + if (mWindowManagerView != null && mWindowManagerView.isShowing()) { + mWindowManagerView.dismiss(); } } @@ -122,4 +145,33 @@ public class SmallVisionProvider implements IMogoSmallMapProvider, IMogoStatusCh } } } + + + /** + * 添加小地图View + */ + private void addSmallMapView() { + Logger.d(TAG, "addSmallMapView"); + // 初始化小地图控件 + 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(); + } + } From dff433ee65f9406ee2fec47ee55db3cae70c7703 Mon Sep 17 00:00:00 2001 From: tongchenfei Date: Tue, 29 Dec 2020 19:07:26 +0800 Subject: [PATCH 17/72] =?UTF-8?q?=E6=9B=BF=E6=8D=A2ViewUtils.fromView?= =?UTF-8?q?=E5=AE=9E=E7=8E=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/gradle.xml | 1 + .../src/main/java/com/mogo/utils/ViewUtils.java | 11 ++++++----- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/.idea/gradle.xml b/.idea/gradle.xml index 426ff6b360..8efbfa420e 100644 --- a/.idea/gradle.xml +++ b/.idea/gradle.xml @@ -85,6 +85,7 @@ diff --git a/foudations/mogo-utils/src/main/java/com/mogo/utils/ViewUtils.java b/foudations/mogo-utils/src/main/java/com/mogo/utils/ViewUtils.java index dfd92bd7e1..195de14f7c 100644 --- a/foudations/mogo-utils/src/main/java/com/mogo/utils/ViewUtils.java +++ b/foudations/mogo-utils/src/main/java/com/mogo/utils/ViewUtils.java @@ -20,11 +20,12 @@ public class ViewUtils { view.destroyDrawingCache(); view.measure(View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED), View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED)); view.layout(0, 0, view.getMeasuredWidth(), view.getMeasuredHeight()); - Bitmap bitmap = Bitmap.createBitmap(view.getWidth(), view.getHeight(), Bitmap.Config.ARGB_8888); - Canvas canvas = new Canvas( bitmap ); - view.draw( canvas ); - return bitmap; -// return (bitmap = view.getDrawingCache()) != null ? bitmap.copy(Bitmap.Config.ARGB_8888, false) : null; +// Bitmap bitmap = Bitmap.createBitmap(view.getWidth(), view.getHeight(), Bitmap.Config.ARGB_8888); +// Canvas canvas = new Canvas( bitmap ); +// view.draw( canvas ); +// return bitmap; + Bitmap bitmap = null; + return (bitmap = view.getDrawingCache()) != null ? bitmap.copy(Bitmap.Config.ARGB_8888, false) : null; } public static void processChildView(View view) { From 4d02918698d4421bb92c0b09c6b7b36492900289 Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 29 Dec 2020 19:20:49 +0800 Subject: [PATCH 18/72] fix UI bug and replace retrofit of callchat --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 02f2b63fe2..49db55f727 100644 --- a/gradle.properties +++ b/gradle.properties @@ -139,7 +139,7 @@ HTTPDNS_NOOP_VERSION = 2.0.12 ######## 外部依赖引用 # 车聊聊 -CARCHATTING_VERSION=2.2.42 +CARCHATTING_VERSION=2.2.50 # 车聊聊接口 CARCHATTINGPROVIDER_VERSION=1.1.8 # websocket From 1111e61f2faf8cce16a2d6f17c359de8f09bd45a Mon Sep 17 00:00:00 2001 From: lixiaopeng Date: Tue, 29 Dec 2020 19:27:16 +0800 Subject: [PATCH 19/72] opt --- .../java/com/zhidao/roadcondition/constant/HttpConstants.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/tanlulib/src/main/java/com/zhidao/roadcondition/constant/HttpConstants.kt b/libraries/tanlulib/src/main/java/com/zhidao/roadcondition/constant/HttpConstants.kt index 9778b0b1c2..dd539098ab 100644 --- a/libraries/tanlulib/src/main/java/com/zhidao/roadcondition/constant/HttpConstants.kt +++ b/libraries/tanlulib/src/main/java/com/zhidao/roadcondition/constant/HttpConstants.kt @@ -7,7 +7,7 @@ class HttpConstants { companion object { const val DEV_BASE_URL_OWNER = "http://dzt-test.zhidaozhixing.com/" - const val RELEASE_BASE_URL_OWNER = "http://dzt.zhidaohulian.com/" + const val RELEASE_BASE_URL_OWNER = "http://dzt.zhidaozhixing.com/" const val SHOW_BASE_URL_OWNER = "http://dzt-show.zhidaozhixing.com/" fun getBaseUrl(): String { From 01afc151d9c43109267d591c4d35ee52d25e24e4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=91=A3=E5=AE=8F=E5=AE=87?= Date: Tue, 29 Dec 2020 19:50:33 +0800 Subject: [PATCH 20/72] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E4=BA=86api=E8=AF=B4?= =?UTF-8?q?=E6=98=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/cpp/method-hook-lib.cpp | 21 ++++++++-- .../mogo/module/common/hook/MethodHook.java | 38 ++++++++++++++++++- 2 files changed, 55 insertions(+), 4 deletions(-) diff --git a/modules/mogo-module-common/src/main/cpp/method-hook-lib.cpp b/modules/mogo-module-common/src/main/cpp/method-hook-lib.cpp index 046981c7f2..dd5111ea23 100644 --- a/modules/mogo-module-common/src/main/cpp/method-hook-lib.cpp +++ b/modules/mogo-module-common/src/main/cpp/method-hook-lib.cpp @@ -17,37 +17,48 @@ static struct { /** * 替换指定类中的方法 * @param env - * @param type 要替换方法的目标 class + * @param type * @param srcMethodObj 目标方法对象 * @param destMethodObj 替换的方法对象 * @return */ static jlong methodHook(JNIEnv *env, jclass type, jobject srcMethodObj, jobject destMethodObj) { + // 反射:获取了Java对象的在native层的 ArtMethod指针 void *srcMethod = reinterpret_cast(env->FromReflectedMethod(srcMethodObj)); void *destMethod = reinterpret_cast(env->FromReflectedMethod(destMethodObj)); + // 定义存储方法ID的数组 int *backupMethod = new int[methodHookClassInfo.methodSize]; + // 使用的内存拷贝函数 + // 将旧方法ID拷贝到数组中 memcpy(backupMethod, srcMethod, methodHookClassInfo.methodSize); + // 将新方法替换到旧方法地址上 memcpy(srcMethod, destMethod, methodHookClassInfo.methodSize); + // 将旧方法ID返回给java层,用来做方法还原使用 return reinterpret_cast(backupMethod); } /** * 恢复指定类中的方法 * @param env - * @param type 要恢复方法的目标 class + * @param type * @param srcMethod 目标方法对象 * @param methodPtr * @return */ static jobject methodRestore(JNIEnv *env, jclass type, jobject srcMethod, jlong methodPtr) { + // 要还原的旧方法 指针 int *backupMethod = reinterpret_cast(methodPtr); + // 获取了Java对象的在native层的 ArtMethod指针 void *artMethodSrc = reinterpret_cast(env->FromReflectedMethod(srcMethod)); + // 将旧方法指针,替换到 artMethodSrc 中 memcpy(artMethodSrc, backupMethod, methodHookClassInfo.methodSize); + // 删除旧方法备份指针 delete[]backupMethod; + // 返回旧方法 return srcMethod; } - +// 定义要注册的方法 static JNINativeMethod gMethods[] = { { "hook_native", @@ -74,13 +85,17 @@ JNI_OnLoad(JavaVM *vm, void *reserved) { if (vm->GetEnv((void **) &env, JNI_VERSION_1_4) != JNI_OK) { return JNI_FALSE; } + // 加载指定java class jclass classEvaluateUtil = env->FindClass(kClassMethodHookChar); + // 注册 if (env->RegisterNatives(classEvaluateUtil, gMethods, sizeof(gMethods) / sizeof(gMethods[0])) < 0) { return JNI_FALSE; } + // 获取 MethodHook m1、m2 的方法ID methodHookClassInfo.m1 = env->GetStaticMethodID(classEvaluateUtil, "m1", "()V"); methodHookClassInfo.m2 = env->GetStaticMethodID(classEvaluateUtil, "m2", "()V"); + // 获取artMethod的大小, methodHookClassInfo.methodSize = reinterpret_cast(methodHookClassInfo.m2) - reinterpret_cast(methodHookClassInfo.m1); return JNI_VERSION_1_4; diff --git a/modules/mogo-module-common/src/main/java/com/mogo/module/common/hook/MethodHook.java b/modules/mogo-module-common/src/main/java/com/mogo/module/common/hook/MethodHook.java index e63cf11392..8586ac1adc 100644 --- a/modules/mogo-module-common/src/main/java/com/mogo/module/common/hook/MethodHook.java +++ b/modules/mogo-module-common/src/main/java/com/mogo/module/common/hook/MethodHook.java @@ -23,6 +23,12 @@ public class MethodHook { // 备份目标替换方法ID private long backupMethodPtr; + /** + * hook方法 + * + * @param src 要替换的方法对象 + * @param dest 被替换的方法对象 + */ public MethodHook(Method src, Method dest) { srcMethod = src; hookMethod = dest; @@ -30,12 +36,18 @@ public class MethodHook { hookMethod.setAccessible(true); } + /** + * 调用 native 层,完成替换 + */ public void hook() { if (backupMethodPtr == 0) { backupMethodPtr = hook_native(srcMethod, hookMethod); } } + /** + * 调用 native 层,完成方法还原 + */ public void restore() { if (backupMethodPtr != 0) { restore_native(srcMethod, backupMethodPtr); @@ -43,7 +55,16 @@ public class MethodHook { } } - public void callOrigin(Object receiver, Object... args) throws InvocationTargetException, IllegalAccessException { + /** + * 调用原来class 对象中的方法 + * + * @param receiver 接受对象 + * @param args 方法列表 + * @throws InvocationTargetException + * @throws IllegalAccessException + */ + public void callOrigin(Object receiver, Object... args) + throws InvocationTargetException, IllegalAccessException { if (backupMethodPtr != 0) { restore(); srcMethod.invoke(receiver, args); @@ -53,11 +74,26 @@ public class MethodHook { } } + /** + * 调用 native 方法完成 方法替换 + * + * @param src 旧方法 + * @param dest 新方法 + * @return 就方法ID + */ private static native long hook_native(Method src, Method dest); + /** + * 调用 native 方法完成 方法还原 + * + * @param src + * @param methodPtr + * @return + */ private static native Method restore_native(Method src, long methodPtr); static { + // 加载本地方法 so System.loadLibrary("method-hook-lib"); } From fb91d546218d590bd8c23f7a8a3f85088f9251ae Mon Sep 17 00:00:00 2001 From: wangcongtao Date: Wed, 30 Dec 2020 10:35:17 +0800 Subject: [PATCH 21/72] =?UTF-8?q?vr=E5=88=87=E6=8D=A2=E5=88=B02d=E6=97=B6?= =?UTF-8?q?=E4=BF=9D=E5=AD=98=E5=9C=B0=E5=9B=BE=E7=9A=84=E6=A0=B7=E5=BC=8F?= =?UTF-8?q?=E7=8A=B6=E6=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mogo/map/impl/custom/AMapViewWrapper.java | 20 ++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/libraries/map-custom/src/main/java/com/mogo/map/impl/custom/AMapViewWrapper.java b/libraries/map-custom/src/main/java/com/mogo/map/impl/custom/AMapViewWrapper.java index aec9e0f31a..8798ede32d 100644 --- a/libraries/map-custom/src/main/java/com/mogo/map/impl/custom/AMapViewWrapper.java +++ b/libraries/map-custom/src/main/java/com/mogo/map/impl/custom/AMapViewWrapper.java @@ -85,6 +85,7 @@ public class AMapViewWrapper implements IMogoMapView, private Location mLastDriveLocationShadow = null; private EnumMapUI mCurrentUI; + private boolean mIsLightStyle = false; public AMapViewWrapper( MapAutoView mMapView ) { startTime = System.currentTimeMillis(); @@ -326,10 +327,12 @@ public class AMapViewWrapper implements IMogoMapView, case Type_Light: mMapView.getMapAutoViewHelper().setAutoSwitchStyle( false ); mMapView.getMapAutoViewHelper().setMapStyle( MapAutoApi.MAP_STYLE_DAY ); + mIsLightStyle = true; break; case Type_Night: mMapView.getMapAutoViewHelper().setAutoSwitchStyle( false ); mMapView.getMapAutoViewHelper().setMapStyle( MapAutoApi.MAP_STYLE_NIGHT ); + mIsLightStyle = false; break; case Type_AUTO_LIGHT_Night: mMapView.getMapAutoViewHelper().setAutoSwitchStyle( true ); @@ -775,6 +778,9 @@ public class AMapViewWrapper implements IMogoMapView, @Override public void onChangeMapStyle( int i ) { + + EnumMapUI last = mCurrentUI; + if ( i == MapAutoApi.MAP_STYLE_DAY || i == MapAutoApi.MAP_STYLE_DAY_NAV ) { mCurrentUI = EnumMapUI.Type_Light; @@ -788,6 +794,14 @@ public class AMapViewWrapper implements IMogoMapView, } else if ( i == MapAutoApi.MAP_PERSPECTIVE_3D ) { mCurrentUI = EnumMapUI.CarUp_3D; } + + // vr 模式切换到普通模式下,保持之前的白天模式 wtf. + if ( last == EnumMapUI.Type_VR && mCurrentUI != last ) { + if ( mIsLightStyle ) { + changeMapMode( EnumMapUI.Type_Light ); + return; + } + } if ( mCurrentUI != null ) { UiThreadHandler.post( () -> { try { @@ -816,7 +830,11 @@ public class AMapViewWrapper implements IMogoMapView, } else { if ( mCurrentUI == EnumMapUI.Type_VR ) { changeZoom( 16 ); - changeMapMode( EnumMapUI.Type_Night ); + if ( mIsLightStyle ) { + changeMapMode( EnumMapUI.Type_Light ); + } else { + changeMapMode( EnumMapUI.Type_Night ); + } Logger.d( TAG, "自动切换为2D模式" ); } } From 6ac489f56162e6621a4210b7734c7d23723511bb Mon Sep 17 00:00:00 2001 From: liujing Date: Wed, 30 Dec 2020 13:06:55 +0800 Subject: [PATCH 22/72] [fix] UI --- .../src/main/res/layout/item_v2x_event_detail_vr.xml | 2 +- .../src/main/res/layout/item_v2x_fault_help_vr.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/mogo-module-v2x/src/main/res/layout/item_v2x_event_detail_vr.xml b/modules/mogo-module-v2x/src/main/res/layout/item_v2x_event_detail_vr.xml index c4f2fd14aa..d0d64e7d06 100644 --- a/modules/mogo-module-v2x/src/main/res/layout/item_v2x_event_detail_vr.xml +++ b/modules/mogo-module-v2x/src/main/res/layout/item_v2x_event_detail_vr.xml @@ -36,7 +36,7 @@ Date: Wed, 30 Dec 2020 14:12:28 +0800 Subject: [PATCH 23/72] bugfix --- libraries/map-custom/build.gradle | 2 +- .../drawer/marker/MapMarkerAdapter.java | 10 +- .../drawer/marker/MapMarkerInfoView.java | 154 +++++++++--------- .../common/drawer/marker/MapMarkerView.java | 57 ++++--- .../module_services_marker_vr_bkg_checked.png | Bin 0 -> 4561 bytes .../com/mogo/module/service/MogoServices.java | 14 +- 6 files changed, 123 insertions(+), 114 deletions(-) create mode 100644 modules/mogo-module-common/src/main/res/drawable-xhdpi/module_services_marker_vr_bkg_checked.png diff --git a/libraries/map-custom/build.gradle b/libraries/map-custom/build.gradle index f355e8380f..e6d6a83127 100644 --- a/libraries/map-custom/build.gradle +++ b/libraries/map-custom/build.gradle @@ -67,7 +67,7 @@ dependencies { implementation project(':foudations:mogo-commons') } - implementation 'com.zhidaoauto.machine:map:1.0.0-vr-7.5.4' + implementation 'com.zhidaoauto.machine:map:1.0.0-vr-7.5.5' // implementation 'com.zhidaoauto.machine:map:1.0.0-vr-7.4.5-log-1' } diff --git a/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/marker/MapMarkerAdapter.java b/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/marker/MapMarkerAdapter.java index 8a130a1f59..7ec3052510 100644 --- a/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/marker/MapMarkerAdapter.java +++ b/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/marker/MapMarkerAdapter.java @@ -50,10 +50,10 @@ public class MapMarkerAdapter { * @return MarkerView */ public static IMarkerView getMarkerInfoWindowView( Context context, MarkerShowEntity markerShowEntity, MogoMarkerOptions options ) { - if ( markerShowEntity.isChecked() ) { - return new MapMarkerInfoView( context, markerShowEntity, options ); - } else { - return new MapMarkerView( context, markerShowEntity, options ); - } +// if ( markerShowEntity.isChecked() ) { +// return new MapMarkerInfoView( context, markerShowEntity, options ); +// } else { +// } + return new MapMarkerView( context, markerShowEntity, options ); } } diff --git a/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/marker/MapMarkerInfoView.java b/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/marker/MapMarkerInfoView.java index 2bacde6a7e..627b15f3a9 100644 --- a/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/marker/MapMarkerInfoView.java +++ b/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/marker/MapMarkerInfoView.java @@ -52,7 +52,11 @@ public class MapMarkerInfoView extends MapMarkerBaseView { public MapMarkerInfoView( Context context, MarkerShowEntity markerShowEntity, MogoMarkerOptions options ) { super( context ); mOptions = options; - updateView( markerShowEntity ); + try { + updateView( markerShowEntity ); + } catch ( Exception e ) { + e.printStackTrace(); + } } @Override @@ -60,7 +64,7 @@ public class MapMarkerInfoView extends MapMarkerBaseView { LayoutInflater.from( context ).inflate( R.layout.modudle_services_marker_layout_info, this ); ivUserHead = findViewById( R.id.ivUserHead ); // ivIcon = findViewById( R.id.ivIcon ); - ivIcon = findViewById(R.id.ivIcon); + ivIcon = findViewById( R.id.ivIcon ); clMarkerContent = findViewById( R.id.clMarkerContent ); ivReverseTriangle = findViewById( R.id.ivReverseTriangle ); ivCar = findViewById( R.id.ivCar ); @@ -69,84 +73,80 @@ public class MapMarkerInfoView extends MapMarkerBaseView { @Override public void updateView( MarkerShowEntity markerShowEntity ) { - try { - Object bindObj = markerShowEntity.getBindObj(); + Object bindObj = markerShowEntity.getBindObj(); - if ( MogoApisHandler.getInstance().getApis().getStatusManagerApi().isVrMode() ) { - ivCar.setImageResource( R.drawable.icon_map_marker_location_yellow_vr ); - } else { - ivCar.setImageResource( R.drawable.icon_map_marker_location_yellow ); - } - clMarkerContent.setBackgroundResource( R.drawable.bg_map_marker_yellow_info ); - ivReverseTriangle.setImageResource( R.drawable.bg_shape_reverse_yellow ); - switch ( markerShowEntity.getMarkerType() ) { - case ModuleNames.CARD_TYPE_CARS_CHATTING: - case ModuleNames.CARD_TYPE_USER_DATA: - ivUserHead.setVisibility( View.VISIBLE ); - ivIcon.setVisibility( View.INVISIBLE ); - loadImageWithMarker( markerShowEntity ); - ivCar.setImageResource( R.drawable.icon_map_marker_car_gray ); - //ivCar.setRotation(new Random().nextInt(360)); - ivCar.setRotation( ( float ) markerShowEntity.getMarkerLocation().getAngle() ); - break; - case ModuleNames.CARD_TYPE_ROAD_CONDITION: - case ModuleNames.CARD_TYPE_NOVELTY: - ivUserHead.setVisibility( View.INVISIBLE ); - ivIcon.setVisibility( View.VISIBLE ); - - if ( bindObj instanceof MarkerExploreWay && ( ( MarkerExploreWay ) bindObj ).getPoiType() != null ) { - // 根据poiType获取对应的图片 - String poiType = ((MarkerExploreWay) bindObj).getPoiType(); - PoiWrapper poiWrapper = - CloudPoiManager.getInstance().getWrapperByPoiType(poiType); - if (poiWrapper != null) { - // 加载图片 - loadPoiTypeIcon(poiWrapper.getIconInfoUrl(),poiWrapper.getIconInfoRes()); - }else{ - Logger.e(TAG, "未能根据poiType获取对应poi信息,无法渲染info marker====" + poiType); - } - } - break; - case ModuleNames.CARD_TYPE_SHARE_MUSIC: - ivUserHead.setVisibility( View.INVISIBLE ); - ivIcon.setVisibility( View.VISIBLE ); - - if ( bindObj instanceof MarkerShareMusic ) { - // 2 为书籍听书,3 为新闻,1 为qq音乐,int - switch ( ( ( MarkerShareMusic ) bindObj ).getShareType() ) { - case 1: - ivIcon.setImageResource( R.drawable.icon_map_marker_misic ); - break; - case 2: - ivIcon.setImageResource( R.drawable.icon_map_marker_book ); - break; - case 3: - ivIcon.setImageResource( R.drawable.icon_map_marker_news ); - break; - default: - ivIcon.setImageResource( R.drawable.icon_map_marker_misic ); - break; - } - } - - break; - default: - break; - } - if ( !TextUtils.isEmpty( markerShowEntity.getTextContent() ) ) { - String content; - if ( markerShowEntity.getTextContent().length() > 8 ) { - content = markerShowEntity.getTextContent().substring( 0, 7 ) + "..."; - } else { - content = markerShowEntity.getTextContent(); - } - tvMarkerContent.setText( content ); - } - - } catch ( Exception e ) { - e.printStackTrace(); + if ( MogoApisHandler.getInstance().getApis().getStatusManagerApi().isVrMode() ) { + ivCar.setImageResource( R.drawable.icon_map_marker_location_yellow_vr ); + } else { + ivCar.setImageResource( R.drawable.icon_map_marker_location_yellow ); } + clMarkerContent.setBackgroundResource( R.drawable.bg_map_marker_yellow_info ); + ivReverseTriangle.setImageResource( R.drawable.bg_shape_reverse_yellow ); + switch ( markerShowEntity.getMarkerType() ) { + case ModuleNames.CARD_TYPE_CARS_CHATTING: + case ModuleNames.CARD_TYPE_USER_DATA: + ivUserHead.setVisibility( View.VISIBLE ); + ivIcon.setVisibility( View.INVISIBLE ); + loadImageWithMarker( markerShowEntity ); + ivCar.setImageResource( R.drawable.icon_map_marker_car_gray ); + //ivCar.setRotation(new Random().nextInt(360)); + ivCar.setRotation( ( float ) markerShowEntity.getMarkerLocation().getAngle() ); + break; + case ModuleNames.CARD_TYPE_ROAD_CONDITION: + case ModuleNames.CARD_TYPE_NOVELTY: + ivUserHead.setVisibility( View.INVISIBLE ); + ivIcon.setVisibility( View.VISIBLE ); + + if ( bindObj instanceof MarkerExploreWay && ( ( MarkerExploreWay ) bindObj ).getPoiType() != null ) { + // 根据poiType获取对应的图片 + String poiType = ( ( MarkerExploreWay ) bindObj ).getPoiType(); + PoiWrapper poiWrapper = + CloudPoiManager.getInstance().getWrapperByPoiType( poiType ); + if ( poiWrapper != null ) { + // 加载图片 + loadPoiTypeIcon( poiWrapper.getIconInfoUrl(), poiWrapper.getIconInfoRes() ); + } else { + Logger.e( TAG, "未能根据poiType获取对应poi信息,无法渲染info marker====" + poiType ); + } + } + break; + case ModuleNames.CARD_TYPE_SHARE_MUSIC: + ivUserHead.setVisibility( View.INVISIBLE ); + ivIcon.setVisibility( View.VISIBLE ); + + if ( bindObj instanceof MarkerShareMusic ) { + // 2 为书籍听书,3 为新闻,1 为qq音乐,int + switch ( ( ( MarkerShareMusic ) bindObj ).getShareType() ) { + case 1: + ivIcon.setImageResource( R.drawable.icon_map_marker_misic ); + break; + case 2: + ivIcon.setImageResource( R.drawable.icon_map_marker_book ); + break; + case 3: + ivIcon.setImageResource( R.drawable.icon_map_marker_news ); + break; + default: + ivIcon.setImageResource( R.drawable.icon_map_marker_misic ); + break; + } + } + + break; + default: + break; + } + if ( !TextUtils.isEmpty( markerShowEntity.getTextContent() ) ) { + String content; + if ( markerShowEntity.getTextContent().length() > 8 ) { + content = markerShowEntity.getTextContent().substring( 0, 7 ) + "..."; + } else { + content = markerShowEntity.getTextContent(); + } + tvMarkerContent.setText( content ); + } + } } diff --git a/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/marker/MapMarkerView.java b/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/marker/MapMarkerView.java index 694414bf7b..9201252762 100644 --- a/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/marker/MapMarkerView.java +++ b/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/marker/MapMarkerView.java @@ -24,11 +24,11 @@ import com.mogo.utils.logger.Logger; * desc : 地图Marker图标 * version: 1.0 */ -public class -MapMarkerView extends MapMarkerBaseView { +public class MapMarkerView extends MapMarkerBaseView { private String TAG = "MapMarkerView"; private FrameLayout clMarkerTopView; + private MarkerShowEntity mMarkerShowEntity; public MapMarkerView( Context context ) { super( context ); @@ -45,7 +45,12 @@ MapMarkerView extends MapMarkerBaseView { public MapMarkerView( Context context, MarkerShowEntity markerShowEntity, MogoMarkerOptions options ) { super( context ); mOptions = options; - updateView( markerShowEntity ); + mMarkerShowEntity = markerShowEntity; + try { + updateView( markerShowEntity ); + } catch ( Exception e ) { + e.printStackTrace(); + } } @Override @@ -55,37 +60,35 @@ MapMarkerView extends MapMarkerBaseView { } else { LayoutInflater.from( context ).inflate( R.layout.modudle_services_marker_layout, this ); } - ivIcon = findViewById( R.id.ivIcon ); clMarkerTopView = findViewById( R.id.clMarkerTopView ); + ivIcon = findViewById( R.id.ivIcon ); ivCar = findViewById( R.id.ivCar ); } @Override public void updateView( MarkerShowEntity markerShowEntity ) { - try { - Object bindObj = markerShowEntity.getBindObj(); - switch ( markerShowEntity.getMarkerType() ) { - case ModuleNames.CARD_TYPE_ROAD_CONDITION: - case ModuleNames.CARD_TYPE_NOVELTY: - if ( bindObj instanceof MarkerExploreWay && ( ( MarkerExploreWay ) bindObj ).getPoiType() != null ) { - // 根据poiType获取对应的图片 - String poiType = ( ( MarkerExploreWay ) bindObj ).getPoiType(); - PoiWrapper poiWrapper = - CloudPoiManager.getInstance().getWrapperByPoiType( poiType ); - if ( poiWrapper != null ) { - // 加载图片 - loadPoiTypeIcon( poiWrapper.getIconUrl(), poiWrapper.getIconRes() ); - } else { - Logger.e( TAG, "未能根据poiType获取对应poi信息,无法渲染marker====" + poiType ); - } + Object bindObj = markerShowEntity.getBindObj(); + switch ( markerShowEntity.getMarkerType() ) { + case ModuleNames.CARD_TYPE_ROAD_CONDITION: + case ModuleNames.CARD_TYPE_NOVELTY: + if ( mMarkerShowEntity != null && mMarkerShowEntity.isChecked() ) { + clMarkerTopView.setBackgroundResource( R.drawable.module_services_marker_vr_bkg_checked ); + } + if ( bindObj instanceof MarkerExploreWay && ( ( MarkerExploreWay ) bindObj ).getPoiType() != null ) { + // 根据poiType获取对应的图片 + String poiType = ( ( MarkerExploreWay ) bindObj ).getPoiType(); + PoiWrapper poiWrapper = + CloudPoiManager.getInstance().getWrapperByPoiType( poiType ); + if ( poiWrapper != null ) { + // 加载图片 + loadPoiTypeIcon( poiWrapper.getIconUrl(), poiWrapper.getIconRes() ); + } else { + Logger.e( TAG, "未能根据poiType获取对应poi信息,无法渲染marker====" + poiType ); } - break; - default: - break; - } - - } catch ( Exception e ) { - e.printStackTrace(); + } + break; + default: + break; } } diff --git a/modules/mogo-module-common/src/main/res/drawable-xhdpi/module_services_marker_vr_bkg_checked.png b/modules/mogo-module-common/src/main/res/drawable-xhdpi/module_services_marker_vr_bkg_checked.png new file mode 100644 index 0000000000000000000000000000000000000000..b82a2b5226459271ed843ca6a2c4b19685f22bdf GIT binary patch literal 4561 zcmV;?5iahDP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91H=qLm1ONa40RR91MgRZ+0F5^VC;$KvJ4r-ARA>e5TWOG8MHT+;n>R}` znS_u`G7QOtfDi~oMHCfF6jzWEN~&-}$|^0(DlJzK6kMj1QUW5BhznRoq!0>mDO5!N z2)K(25rqIEVKE^PmLy~{^S0~vo!h6U-ISefqi2Ey!GIu9r=n>72SHjA-N>;eE8%X+*E9d3Zxe1G z-PjqR`wZ^tw_s6q0&mPSyeDtqSmYQ0y;V3w6@n5yryuBJ?(PN3arMoy^Yy6BTv;s*HnHbz%OZ zGP*d=vJwS(9eJZ<(=g8&CR5HinQ>SwaWR(Ykn4_m0$n1|8t&bYW5YcJ`yXKE1RmiO z|HAw+Ts`_PaD4YX?GZROpIvh*KEPPM&{e|1agLNg4IY?b)iEUuAKZgEbIS~lYel=rfE~N=<3=ye`TAZ= z)fvIvd=h%M_22@wc^2c&IGZ>+z>&vwV+BX6T<+qgz^#FJ*!MAb+d4QxG~vGn0W?Sx zfQ=fPl?{6ahqk;|!2x0}pWJ-FiE4--Fm#tKx%K+=-j1JY!;4?mh|F_HJC- z)rF7L>qQ42ye7lT-qekuk!}m5!Re&nGTQTfQSG3IPThgoE4lPSUJMAJ&axg zJaOe5Jo)#>@z-F{w%9GWAD)JHa#mczYgJd@JmA<9%UE%EkM(AQ7cTZMQ?XtM)#|y8 zp!kYXk!jkA^m@VOZ{QbosTe>L6tqZNixM(%+1hn-(f+_8Bj|bhDZF}Vj{DYc1y^MI z)E3+gr(;d2fomDl{J9GYU`s|y9IYCIA~2hZYLP+Pnz02(nE(~p3bpBkf(+TQs?KFs zfbcTWo1#yhI%m-UJNvMe=-K`(PT(&3hkrf|Zaq`e6mSIAQ>tSf1uy8Klb4)S!r}wC zX$Y7FP-dIO0xZCgNdPfmw&6Wq=##;Ko9G0TutX3Jj4myyF1lzUP6z?)<&r;a1^T&* z9#`IiAKyEM9fi^4?-X$FScNk<9nUV6ffv3OSh}20xV~&xv$>;|{pw!)ELg~sr6zFSe+L$q z8(7Cc79V;naL^HKhrMJYBz5gxHVs8HdmtnYH%n`nd;=8ZVz>6b+gm5lm)XlFvv}44 zftF8AU*k(hewlSv?dPdz!91*446MKXL2RHTrY3M_uEzVh*3Q^}nXY4nGYi%>4gsTG z$SN#3j}>1(7MLrrv{8^e==!Kg-@(K(@#h_2ZCYcKAUzHp9F{IbiBt9Pv2D0N|lFTiIEEZ_p=Nk9e$L=8FZ!6Xeh=m;R_t5FAHfzw8TTb54n z)z035I(Ws>q^I_k$ye!dR(KX2S&RctSdI5kVwYh9cl5h(D0N>xNX)%+=}f_CT7;|~ zv>QzYrN&yb_`AtdMwY%TpwIy}ILjOZfi>X z5U}|V`sQE0RhO@j#TPAI$+VP~?1uxNH;lKD%iBRF3SK!lh*JLm$WM{8Z0aAqKVYGFMIGaGB}RhX29Cl;T@m>c)tk+svOk7fX70lu^)XT!73O ze|#!zXv+?vts7{;MiK?q@xg;G1Gj?oK2fJOO=P~-o@o~+(>a%!B znLmT`hR|&a98(*WBv=KZq+YRzoDrP210Yp3q}1xqc#<)DCrZ}=waQhuJM-?0Opc~CdSes!j`x#qmmMC|S zUiW}oOKoUzw5_)Tw%{XpG&5dKUQlMsbM#zMf$8CCOm4t3CZ|=V@`P_>sM}N{9o>rW zS!B=?FOIYtb3P4YX9PRju~QxL4K#buXNg9RgEdmtvobwSw1$F%Cg;JCdf)j`*Lk#a zo?LjKE|#6k#dAMtDZ3^;H7IZ_;%J#t&=Wt%&5re$s7HVc%UwCPSumP5Vd{9JX+TEH znubREaHt-=7BbZxpmaqm*3_R&OeP`(>GdgkraY@ zn7}cab0bs{!6Z+GQ7l^>r@@JqX;ZI@k@#q$r7N*?lvKv(C;29JouFpA!A2taVY|1 zZnEjRPuZk;s#7MheynZxFJ_RNj@R9Wb?c;{pT=dkI>4Vxdbz+?QCC%}7?X3|ZkS>M zDuSV0JCqvr6TVI5U?W?Tv2;I8y5cKHsi|Z(-)u{P8XZcDK|1o;Qd*lKzSPF_sLo4T zows+twdu?{p12sd@z`>_y)b0mN6>ml3QB53MOp^h_-rsvpM+l+1@pl7si&$1LBd4( zVUB*xv3Upzg*I!2`-3jRmPv5HZG5}AgVSI@ z7CvnX6aI>)N*gfNK-!9EW*=b#6nJuBNpcb%pzF4Rc3ms27maFSJ4Z*zi8^7-c9$GK7K94Ox&26oTP^Lj!AU@KH)M=LP!$u;hOGh%3t8~!8-m4Z?Q$>Lp zcd`ssFLcu4db_8*6TcKMf;(~)&l1FS1Yxh+1jaHQrU7_hwt0lcooC=YAeOrIw~-E| z0h64dEYLtZP;!e6i+pQS4CyGR$wx4ik>(qz1_55V?NNaSG5sJMX{Fq+h(p?vb(!iY#HU>&O)msz! zt{y}+j@(y=iNRHyz=_FCJ%^}hMnk1SO;MyMwI zAZ~VCm=rx8>{`3u8fX{QZuB`?+C(<-)%J-)YnxvsPZ>EyGju<0;m&y_?_p~iDPJeP z?xf=*Xu+^yA0^Y3+=KB_MobpBcp_RswCGCT{YU*oC-~aM*KOyw0+VT5aM=$~-^Fh~ z_({esz5D{hM@UoD=upZ*Q}Td4cnPNikOUh2wCblm6MtfJwD?sPF8R#^xF*^sM60Vr z1U&Ew9LmQl*K;R&Az%78cSH&xweo;d&#v2Ax?Re5UTQC1;#Z=c5~|}3e7m|8A7A<1 z_TP#%2keeRdC0}MpXB>^GrPWrZ;qS9t&O{|mG6N|?lLdk#!K<1lSxcDJG(NG<7$3F z^~v1@%m`1vs;1q0!Esount?1UJqP=Pu3q@sUF> z$M)%5&InG%%P+-U^$OljkhgFIC)%|=r4gS-F7SFq9-zLqjH zOg~QpsKjk!iUVLIL zuPJ~e=q7$Uht%cw(K-!1RL$|W zKPr)M;Np?yhX(?-gJY+@#|gVcss9QPqg*1 z7tD@~oZ4IVa{QK{uHor{-*zV{9UTeMy3~TQF3{YR9_FW<=XL^^Tz3py_EtVCtl~1> z$=|DI88JESpu8RxLJ<6Rn;ZWHgL`ouOI)-iI|fePS6+sV{6uMOsf4lUxD}M@&SNR8 zT&wy^k#8UHQmm7oPNf(_ryS<Jm{?)f-Jut@1>1(phJ`_y}opVytc;8Hx5h&n=g^Br;KPL_Qcf9B@$HI815 z*Q_{FE>~$MeEzur|LW!Z125zsEX_ii6>ywxIp4Ei#ZmbO&xb|Q928I{0p>G(TW8C^ zf*T5M=YMAfoWflCMLw&~a3RT^u@M3kMjpBw6Aj#&Rq!Qsg!E@4#dc@I`QUQg#CyP- zI7$(K)*&Ck{f7^4&pDt27wYNao>g$!hxr(^go`*z|JCf&I^#9)>1u}0Ec*)9PZwAx zWU~rR0j|6lcXBRX&b3$L22;j!~@REOOC-_8F3kWd)bA=ti400000NkvXXu0mjfNPCc_ literal 0 HcmV?d00001 diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/MogoServices.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/MogoServices.java index 59406a8a9a..fb0db8e17d 100644 --- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/MogoServices.java +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/MogoServices.java @@ -927,6 +927,8 @@ public class MogoServices implements IMogoMapListener, return mLastCarLocation; } + private boolean mLastStatusIsVr = false; + @Override public void onMapModeChanged( EnumMapUI ui ) { if ( ui == EnumMapUI.Type_VR ) { @@ -934,11 +936,15 @@ public class MogoServices implements IMogoMapListener, MapCenterPointStrategy.resetByChangeMode(); MapMarkerManager.getInstance().redrawMarkerByStyleChanged(); AIAssist.getInstance( mContext ).speakTTSVoice( "你已进入鹰眼模式" ); + mLastStatusIsVr = true; } else { - MogoApisHandler.getInstance().getApis().getStatusManagerApi().setVrMode( TAG, false ); - MapCenterPointStrategy.resetByChangeMode(); - MapMarkerManager.getInstance().redrawMarkerByStyleChanged(); - AIAssist.getInstance( mContext ).speakTTSVoice( "你已离开鹰眼模式" ); + if ( mLastStatusIsVr ) { + mLastStatusIsVr = false; + MogoApisHandler.getInstance().getApis().getStatusManagerApi().setVrMode( TAG, false ); + MapCenterPointStrategy.resetByChangeMode(); + MapMarkerManager.getInstance().redrawMarkerByStyleChanged(); + AIAssist.getInstance( mContext ).speakTTSVoice( "你已离开鹰眼模式" ); + } } } } From eff01b24fb4d3b2da3e1b3f1deb85ffd2fbf9254 Mon Sep 17 00:00:00 2001 From: liujing Date: Wed, 30 Dec 2020 11:24:46 +0800 Subject: [PATCH 24/72] =?UTF-8?q?[add]=20=E8=B4=9D=E5=A1=9E=E5=B0=94?= =?UTF-8?q?=E6=9B=B2=E7=BA=BF=E5=8A=A8=E7=94=BBwindow=E5=B1=82=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/animation/BezierAnimationView.java | 18 +++++- .../layout/module_common_bezier_layout.xml | 13 +++++ .../v2x/adapter/holder/V2XRoadEventVH.java | 55 ++++++++++++++++++- .../src/main/res/values-xhdpi/dimens.xml | 3 + 4 files changed, 86 insertions(+), 3 deletions(-) create mode 100644 modules/mogo-module-common/src/main/res/layout/module_common_bezier_layout.xml diff --git a/modules/mogo-module-common/src/main/java/com/mogo/module/common/animation/BezierAnimationView.java b/modules/mogo-module-common/src/main/java/com/mogo/module/common/animation/BezierAnimationView.java index 2bed0dae80..2e3b93492d 100644 --- a/modules/mogo-module-common/src/main/java/com/mogo/module/common/animation/BezierAnimationView.java +++ b/modules/mogo-module-common/src/main/java/com/mogo/module/common/animation/BezierAnimationView.java @@ -73,11 +73,27 @@ public class BezierAnimationView extends RelativeLayout implements View.OnClickL runnable.run(); } + public void bezierAnimationStart(){ + runnable = new Runnable() { + @Override + public void run() { + try { + Log.d("点赞--", ""); + bezierAnimation(resource); + handler.postDelayed(this, 500); + } catch (Exception e) { + e.printStackTrace(); + } + } + }; + runnable.run(); + } + private void bezierAnimation(int resource) { final ImageView imageView = new ImageView(context); imageView.setBackgroundResource(animation_drawable[resource]); RelativeLayout.LayoutParams params = new LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT); - params.addRule(ALIGN_BOTTOM); +// params.addRule(ALIGN_BOTTOM); params.addRule(CENTER_HORIZONTAL); imageView.setLayoutParams(params); addView(imageView); diff --git a/modules/mogo-module-common/src/main/res/layout/module_common_bezier_layout.xml b/modules/mogo-module-common/src/main/res/layout/module_common_bezier_layout.xml new file mode 100644 index 0000000000..f5838417a5 --- /dev/null +++ b/modules/mogo-module-common/src/main/res/layout/module_common_bezier_layout.xml @@ -0,0 +1,13 @@ + + + + + + \ No newline at end of file diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/adapter/holder/V2XRoadEventVH.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/adapter/holder/V2XRoadEventVH.java index f269856f7b..d94f0c7d15 100644 --- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/adapter/holder/V2XRoadEventVH.java +++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/adapter/holder/V2XRoadEventVH.java @@ -3,6 +3,7 @@ package com.mogo.module.v2x.adapter.holder; import android.content.Context; import android.content.Intent; import android.graphics.drawable.Drawable; +import android.os.Handler; import android.text.TextUtils; import android.util.Log; import android.view.Gravity; @@ -10,11 +11,13 @@ import android.view.LayoutInflater; import android.view.MotionEvent; import android.view.View; import android.view.ViewGroup; +import android.view.WindowManager; import android.widget.ImageView; import android.widget.TextView; import com.bumptech.glide.Glide; import com.bumptech.glide.request.RequestOptions; +import com.mogo.commons.AbsMogoApplication; import com.mogo.commons.debug.DebugConfig; import com.mogo.module.common.animation.BezierAnimationView; import com.mogo.module.common.entity.MarkerExploreWay; @@ -23,6 +26,7 @@ import com.mogo.module.common.entity.V2XEventShowEntity; import com.mogo.module.common.entity.V2XLiveCarInfoEntity; import com.mogo.module.common.entity.V2XMessageEntity; import com.mogo.module.common.entity.V2XRoadEventEntity; +import com.mogo.module.common.wm.WindowManagerView; import com.mogo.module.v2x.R; import com.mogo.module.v2x.V2XServiceManager; import com.mogo.module.v2x.entity.net.V2XUserInfoRes; @@ -81,7 +85,7 @@ public class V2XRoadEventVH extends V2XBaseViewHolder { private HeartLikeView ivEventZan; private ViewGroup mViewGroup; - + private WindowManagerView mWindowManagerView; // 上传事件的用户信息 private MarkerUserInfo mUserInfo; @@ -312,7 +316,7 @@ public class V2XRoadEventVH extends V2XBaseViewHolder { e.printStackTrace(); } } - + /* * 展示事件的图片/视频资源 * */ @@ -364,6 +368,53 @@ public class V2XRoadEventVH extends V2XBaseViewHolder { } } + private void bezierAnimation(int[] loc) { + if (mWindowManagerView == null) { + Log.d(TAG, "bezierAnimation:null"); + mWindowManagerView = new WindowManagerView.Builder(mContext.getApplicationContext()) + .contentView(R.layout.module_common_bezier_layout) + .size(WindowManager.LayoutParams.WRAP_CONTENT, + WindowManager.LayoutParams.WRAP_CONTENT) + .position(loc[0], loc[1]) + .gravity(Gravity.TOP | Gravity.LEFT) + .showInWindowManager(); + } + try { + if (mWindowManagerView.isShowing()) { + return; + } + mWindowManagerView.show(); + } catch (Exception e) { + e.printStackTrace(); + } + BezierAnimationView bezierAnimationView = mWindowManagerView.findViewById(R.id.bezier_view); + bezierAnimationView.bezierAnimationStart(); + new Handler().postDelayed(new Runnable() { + @Override + public void run() { +// mWindowManagerView.dismiss(); + } + }, 2000); + + } + + public int[] getLocation(View v) { + int[] loc = new int[4]; + int[] location = new int[2]; + v.getLocationOnScreen(location); + loc[0] = location[0]; + loc[1] = location[1]; + int w = View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED); + int h = View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED); + v.measure(w, h); + + loc[2] = v.getMeasuredWidth(); + loc[3] = v.getMeasuredHeight(); + + //base = computeWH(); + return loc; + } + /** * 为了给车聊聊更多的信息需要重新查询一次 * diff --git a/modules/mogo-module-v2x/src/main/res/values-xhdpi/dimens.xml b/modules/mogo-module-v2x/src/main/res/values-xhdpi/dimens.xml index 4fb423afdc..5e05de0f6b 100644 --- a/modules/mogo-module-v2x/src/main/res/values-xhdpi/dimens.xml +++ b/modules/mogo-module-v2x/src/main/res/values-xhdpi/dimens.xml @@ -120,5 +120,8 @@ 46px 26px + + 1281px + From f5941daf94b0bc7c24e8fdae84ec81e4019962a4 Mon Sep 17 00:00:00 2001 From: wangcongtao Date: Wed, 30 Dec 2020 14:37:14 +0800 Subject: [PATCH 25/72] bugfix --- .../main/java/com/mogo/map/impl/custom/AMapViewWrapper.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/libraries/map-custom/src/main/java/com/mogo/map/impl/custom/AMapViewWrapper.java b/libraries/map-custom/src/main/java/com/mogo/map/impl/custom/AMapViewWrapper.java index 8798ede32d..4d02492947 100644 --- a/libraries/map-custom/src/main/java/com/mogo/map/impl/custom/AMapViewWrapper.java +++ b/libraries/map-custom/src/main/java/com/mogo/map/impl/custom/AMapViewWrapper.java @@ -575,6 +575,9 @@ public class AMapViewWrapper implements IMogoMapView, if ( !checkAMapView() ) { return; } + if ( mCurrentUI == EnumMapUI.Type_VR ) { + return; + } Logger.i( TAG, "showBounds:%s -%s-%s- %b ", tag, carPosition.toString(), bound.toShortString(), lockCarPosition ); try { if ( DebugConfig.isDebug() ) { From b5e2ee25a4fd449156a7db75b383ac52fde32a75 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=91=A3=E5=AE=8F=E5=AE=87?= Date: Wed, 30 Dec 2020 14:43:23 +0800 Subject: [PATCH 26/72] opt --- .../mogo/module/small/map/SmallVisionProvider.java | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/modules/mogo-module-smp/src/main/java/com/mogo/module/small/map/SmallVisionProvider.java b/modules/mogo-module-smp/src/main/java/com/mogo/module/small/map/SmallVisionProvider.java index 258bce4688..42503d9055 100644 --- a/modules/mogo-module-smp/src/main/java/com/mogo/module/small/map/SmallVisionProvider.java +++ b/modules/mogo-module-smp/src/main/java/com/mogo/module/small/map/SmallVisionProvider.java @@ -66,14 +66,10 @@ public class SmallVisionProvider implements IMogoSmallMapProvider, IMogoStatusCh mContext = context; try { - 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); - } catch (NoSuchMethodException e) { - e.printStackTrace(); - } + // 替换高德地图的方法,解决因为加入换肤框架导致地图初始化失败 + 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); } catch (Exception e) { e.printStackTrace(); } From a329707c089f7620c5060e53f106c8ac4f7366d0 Mon Sep 17 00:00:00 2001 From: wangcongtao Date: Wed, 30 Dec 2020 14:51:08 +0800 Subject: [PATCH 27/72] =?UTF-8?q?vr=E6=A8=A1=E5=BC=8F=E4=B8=8B=E6=8B=A6?= =?UTF-8?q?=E6=88=AA=E6=9F=90=E4=BA=9B=E6=93=8D=E4=BD=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/mogo/map/impl/custom/AMapViewWrapper.java | 1 + .../com/mogo/module/common/map/MapCenterPointStrategy.java | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/libraries/map-custom/src/main/java/com/mogo/map/impl/custom/AMapViewWrapper.java b/libraries/map-custom/src/main/java/com/mogo/map/impl/custom/AMapViewWrapper.java index 4d02492947..13f8f5a4d5 100644 --- a/libraries/map-custom/src/main/java/com/mogo/map/impl/custom/AMapViewWrapper.java +++ b/libraries/map-custom/src/main/java/com/mogo/map/impl/custom/AMapViewWrapper.java @@ -576,6 +576,7 @@ public class AMapViewWrapper implements IMogoMapView, return; } if ( mCurrentUI == EnumMapUI.Type_VR ) { + Logger.w( TAG, "vr 模式下忽略该设置" ); return; } Logger.i( TAG, "showBounds:%s -%s-%s- %b ", tag, carPosition.toString(), bound.toShortString(), lockCarPosition ); diff --git a/modules/mogo-module-common/src/main/java/com/mogo/module/common/map/MapCenterPointStrategy.java b/modules/mogo-module-common/src/main/java/com/mogo/module/common/map/MapCenterPointStrategy.java index 7e8a557f30..4e86f84941 100644 --- a/modules/mogo-module-common/src/main/java/com/mogo/module/common/map/MapCenterPointStrategy.java +++ b/modules/mogo-module-common/src/main/java/com/mogo/module/common/map/MapCenterPointStrategy.java @@ -270,6 +270,10 @@ public class MapCenterPointStrategy { if ( controller == null ) { return; } + if ( MogoApisHandler.getInstance().getApis().getStatusManagerApi().isVrMode() ) { + Logger.w( TAG, "vr 模式下忽略该设置" ); + return; + } Logger.e( TAG, "scene"+scene ); Map< Integer, Map< String, MapCenterPoint > > strategies = sCommonStrategies; if ( MogoApisHandler.getInstance().getApis().getStatusManagerApi().isVrMode() ) { From d159c8c27619911ef864cde589c8f1b7bbb57537 Mon Sep 17 00:00:00 2001 From: wangcongtao Date: Wed, 30 Dec 2020 15:25:32 +0800 Subject: [PATCH 28/72] =?UTF-8?q?=E5=9C=B0=E5=9B=BE=E5=88=9D=E5=A7=8B?= =?UTF-8?q?=E5=8C=96=E5=AE=8C=E6=88=90=E5=90=8E=E5=9C=A8=E5=B0=9D=E8=AF=95?= =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=9C=B0=E5=9B=BE=E6=A0=B7=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/mogo/map/impl/custom/AMapViewWrapper.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/libraries/map-custom/src/main/java/com/mogo/map/impl/custom/AMapViewWrapper.java b/libraries/map-custom/src/main/java/com/mogo/map/impl/custom/AMapViewWrapper.java index 13f8f5a4d5..61a8b483b0 100644 --- a/libraries/map-custom/src/main/java/com/mogo/map/impl/custom/AMapViewWrapper.java +++ b/libraries/map-custom/src/main/java/com/mogo/map/impl/custom/AMapViewWrapper.java @@ -697,7 +697,9 @@ public class AMapViewWrapper implements IMogoMapView, } NaviClient.getInstance( getContext() ).syncCarLocation( sysLocation ); - MapStyleController.getInstance().onLocationChanged( location, this ); + if ( checkAMapView() ) { + MapStyleController.getInstance().onLocationChanged( location, this ); + } } @Override From 3ae09925b9955336e6ffda8dcb8d99efde5b2043 Mon Sep 17 00:00:00 2001 From: wangcongtao Date: Wed, 30 Dec 2020 16:08:33 +0800 Subject: [PATCH 29/72] opt --- app/functions/httpdns.gradle | 16 ++++++++-------- .../map/impl/custom/CustomMapApiBuilder.java | 3 ++- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/app/functions/httpdns.gradle b/app/functions/httpdns.gradle index 176938bc92..0da084c406 100644 --- a/app/functions/httpdns.gradle +++ b/app/functions/httpdns.gradle @@ -8,10 +8,10 @@ project.dependencies { d8xxImplementation rootProject.ext.dependencies.httpdnsnoop d80xImplementation rootProject.ext.dependencies.httpdnsnoop em4Implementation rootProject.ext.dependencies.httpdnsnoop - e8xxImplementation rootProject.ext.dependencies.httpdnstencent - f8xxImplementation rootProject.ext.dependencies.httpdnstencent - f80xImplementation rootProject.ext.dependencies.httpdnstencent - f8AmapImplementation rootProject.ext.dependencies.httpdnstencent + e8xxImplementation rootProject.ext.dependencies.httpdnsnoop + f8xxImplementation rootProject.ext.dependencies.httpdnsnoop + f80xImplementation rootProject.ext.dependencies.httpdnsnoop + f8AmapImplementation rootProject.ext.dependencies.httpdnsnoop em3Implementation rootProject.ext.dependencies.httpdnsnoop } else { bydautoImplementation project(':foudations:httpdns-noop') @@ -20,10 +20,10 @@ project.dependencies { d8xxImplementation project(':foudations:httpdns-noop') d80xImplementation project(':foudations:httpdns-noop') em4Implementation project(':foudations:httpdns-noop') - e8xxImplementation project(':foudations:httpdns-tencent') - f8xxImplementation project(':foudations:httpdns-tencent') - f80xImplementation project(':foudations:httpdns-tencent') - f8AmapImplementation project(':foudations:httpdns-tencent') + e8xxImplementation project(':foudations:httpdns-noop') + f8xxImplementation project(':foudations:httpdns-noop') + f80xImplementation project(':foudations:httpdns-noop') + f8AmapImplementation project(':foudations:httpdns-noop') em3Implementation project(':foudations:httpdns-noop') } } \ No newline at end of file diff --git a/libraries/map-custom/src/main/java/com/mogo/map/impl/custom/CustomMapApiBuilder.java b/libraries/map-custom/src/main/java/com/mogo/map/impl/custom/CustomMapApiBuilder.java index 2dd9320480..4656d28323 100644 --- a/libraries/map-custom/src/main/java/com/mogo/map/impl/custom/CustomMapApiBuilder.java +++ b/libraries/map-custom/src/main/java/com/mogo/map/impl/custom/CustomMapApiBuilder.java @@ -3,6 +3,7 @@ package com.mogo.map.impl.custom; import android.content.Context; import com.alibaba.android.arouter.facade.annotation.Route; +import com.mogo.commons.debug.DebugConfig; import com.mogo.map.CoordinatesTransformer; import com.mogo.map.IMogoMapApiBuilder; import com.mogo.map.IMogoMapView; @@ -92,7 +93,7 @@ class CustomMapApiBuilder implements IMogoMapApiBuilder { @Override public IMogoMapView getMapView( Context context ) { NavAutoApi.INSTANCE.init( context, MapParams.Companion.init() - .setDebugMode( true ) + .setDebugMode( DebugConfig.isDebug() ) .setCoordinateType( MapParams.COORDINATETYPE_GCJ02 ) .setPerspectiveMode( MapParams.MAP_PERSPECTIVE_2D ) .setZoom( 16 ) From 61bc8475967634f2655420ceb8c3c406bb1b6185 Mon Sep 17 00:00:00 2001 From: liujing Date: Wed, 30 Dec 2020 16:21:05 +0800 Subject: [PATCH 30/72] =?UTF-8?q?vr=E6=A8=A1=E5=BC=8F=E9=9A=90=E8=97=8Fugc?= =?UTF-8?q?=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mogo/module/v2x/scenario/impl/V2XScenarioManager.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/impl/V2XScenarioManager.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/impl/V2XScenarioManager.java index 41e131b359..666cbca23a 100644 --- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/impl/V2XScenarioManager.java +++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/impl/V2XScenarioManager.java @@ -1,6 +1,7 @@ package com.mogo.module.v2x.scenario.impl; import android.content.Intent; +import android.util.Log; import androidx.localbroadcastmanager.content.LocalBroadcastManager; @@ -91,7 +92,11 @@ public class V2XScenarioManager implements IV2XScenarioManager { mV2XScenario = new V2XIllegalParkScenario(); break; case V2XMessageEntity.V2XTypeEnum.ALERT_EVENT_UGC_WARNING: - mV2XScenario = new V2XEventUgcScenario(); + if (V2XServiceManager.getMoGoStatusManager().isVrMode() == false) { + mV2XScenario = new V2XEventUgcScenario(); + } else { + mV2XScenario = null; + } break; case V2XMessageEntity.V2XTypeEnum.ALERT_VOICE_CALL_FOR_LIVECAR_SHOW: mV2XScenario = new V2XVoiceCallLiveScenario(); From e5c88cce3f12fc4134e28972c60cd644e13a79dc Mon Sep 17 00:00:00 2001 From: liujing Date: Wed, 30 Dec 2020 16:23:46 +0800 Subject: [PATCH 31/72] no message --- .../mogo/module/v2x/scenario/impl/V2XScenarioManager.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/impl/V2XScenarioManager.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/impl/V2XScenarioManager.java index 666cbca23a..05ace32d78 100644 --- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/impl/V2XScenarioManager.java +++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/impl/V2XScenarioManager.java @@ -92,10 +92,10 @@ public class V2XScenarioManager implements IV2XScenarioManager { mV2XScenario = new V2XIllegalParkScenario(); break; case V2XMessageEntity.V2XTypeEnum.ALERT_EVENT_UGC_WARNING: - if (V2XServiceManager.getMoGoStatusManager().isVrMode() == false) { - mV2XScenario = new V2XEventUgcScenario(); - } else { + if (V2XServiceManager.getMoGoStatusManager().isVrMode()) { mV2XScenario = null; + } else { + mV2XScenario = new V2XEventUgcScenario(); } break; case V2XMessageEntity.V2XTypeEnum.ALERT_VOICE_CALL_FOR_LIVECAR_SHOW: From c34291d4cf5ebd955d8d53e2e33668d9c5c094f1 Mon Sep 17 00:00:00 2001 From: liujing Date: Wed, 30 Dec 2020 16:30:26 +0800 Subject: [PATCH 32/72] =?UTF-8?q?vr=E6=A8=A1=E5=BC=8F=E9=9A=90=E8=97=8Fugc?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mogo/module/v2x/scenario/impl/V2XScenarioManager.java | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/impl/V2XScenarioManager.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/impl/V2XScenarioManager.java index 05ace32d78..154e90da24 100644 --- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/impl/V2XScenarioManager.java +++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/impl/V2XScenarioManager.java @@ -92,11 +92,7 @@ public class V2XScenarioManager implements IV2XScenarioManager { mV2XScenario = new V2XIllegalParkScenario(); break; case V2XMessageEntity.V2XTypeEnum.ALERT_EVENT_UGC_WARNING: - if (V2XServiceManager.getMoGoStatusManager().isVrMode()) { - mV2XScenario = null; - } else { - mV2XScenario = new V2XEventUgcScenario(); - } + mV2XScenario = V2XServiceManager.getMoGoStatusManager().isVrMode() ? null : new V2XEventUgcScenario(); break; case V2XMessageEntity.V2XTypeEnum.ALERT_VOICE_CALL_FOR_LIVECAR_SHOW: mV2XScenario = new V2XVoiceCallLiveScenario(); From be237dd3237ded70fad66f8dcaecb718eed683d6 Mon Sep 17 00:00:00 2001 From: tongchenfei Date: Wed, 30 Dec 2020 16:35:39 +0800 Subject: [PATCH 33/72] =?UTF-8?q?=E5=B0=86http=20dns=E6=9B=BF=E6=8D=A2?= =?UTF-8?q?=E6=88=90noop=E5=AE=9E=E7=8E=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/build.gradle | 4 +++- .../java/com/mogo/base/websocket/WebSocketConstant.java | 8 ++++---- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 87bfe5dff1..35ae13fe20 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -484,6 +484,7 @@ dependencies { implementation rootProject.ext.dependencies.moduleextensions implementation rootProject.ext.dependencies.modulemap implementation rootProject.ext.dependencies.moduleSmallMap + implementation rootProject.ext.dependencies.httpdnsnoop } else { implementation project(':foudations:mogo-commons') implementation project(':foudations:mogo-base-websocket-sdk') @@ -501,6 +502,7 @@ dependencies { implementation project(':modules:mogo-module-extensions') implementation project(':modules:mogo-module-map') implementation project(':modules:mogo-module-smp') + implementation project(':foudations:httpdns-noop') } apply from: "./functions/basedmap.gradle" @@ -513,7 +515,7 @@ dependencies { apply from: "./functions/crashreport.gradle" apply from: "./functions/widgets.gradle" apply from: "./functions/tts.gradle" - apply from: "./functions/httpdns.gradle" +// apply from: "./functions/httpdns.gradle" apply from: "./functions/backwidget.gradle" apply from: "./functions/mediaui.gradle" apply from: "./functions/bizguide.gradle" diff --git a/foudations/mogo-base-websocket-sdk/src/main/java/com/mogo/base/websocket/WebSocketConstant.java b/foudations/mogo-base-websocket-sdk/src/main/java/com/mogo/base/websocket/WebSocketConstant.java index f0e5ec13b7..df1706b0c5 100644 --- a/foudations/mogo-base-websocket-sdk/src/main/java/com/mogo/base/websocket/WebSocketConstant.java +++ b/foudations/mogo-base-websocket-sdk/src/main/java/com/mogo/base/websocket/WebSocketConstant.java @@ -8,11 +8,11 @@ import com.mogo.commons.debug.DebugConfig; @Keep public class WebSocketConstant { - private static final String HOST_DEV = "ws://62.234.196.121"; - private static final String HOST_QA = "ws://62.234.196.121"; - private static final String HOST_DEMO = "ws://62.234.196.121"; + private static final String HOST_DEV = "ws://119.45.249.167"; + private static final String HOST_QA = "ws://119.45.249.167"; + private static final String HOST_DEMO = "ws://119.45.249.167"; @Keep - private static final String HOST_RELEASE = "ws://62.234.196.121"; + private static final String HOST_RELEASE = "ws://119.45.249.167"; // private static final String PORT = ":14001/ws"; @Keep public static final String PATH = "/ws"; From 63002f1bd668cad2676bfa34532816c08570bd2b Mon Sep 17 00:00:00 2001 From: wangcongtao Date: Wed, 30 Dec 2020 16:08:33 +0800 Subject: [PATCH 34/72] bugfix --- .../java/com/mogo/module/service/MogoServices.java | 12 +++++++----- .../mogo/service/impl/adas/MogoADASController.java | 4 ++++ 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/MogoServices.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/MogoServices.java index fb0db8e17d..dcb08560b4 100644 --- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/MogoServices.java +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/MogoServices.java @@ -932,11 +932,13 @@ public class MogoServices implements IMogoMapListener, @Override public void onMapModeChanged( EnumMapUI ui ) { if ( ui == EnumMapUI.Type_VR ) { - MogoApisHandler.getInstance().getApis().getStatusManagerApi().setVrMode( TAG, true ); - MapCenterPointStrategy.resetByChangeMode(); - MapMarkerManager.getInstance().redrawMarkerByStyleChanged(); - AIAssist.getInstance( mContext ).speakTTSVoice( "你已进入鹰眼模式" ); - mLastStatusIsVr = true; + if ( !mLastStatusIsVr ) { + MogoApisHandler.getInstance().getApis().getStatusManagerApi().setVrMode( TAG, true ); + MapCenterPointStrategy.resetByChangeMode(); + MapMarkerManager.getInstance().redrawMarkerByStyleChanged(); + AIAssist.getInstance( mContext ).speakTTSVoice( "你已进入鹰眼模式" ); + mLastStatusIsVr = true; + } } else { if ( mLastStatusIsVr ) { mLastStatusIsVr = false; diff --git a/services/mogo-service/src/main/java/com/mogo/service/impl/adas/MogoADASController.java b/services/mogo-service/src/main/java/com/mogo/service/impl/adas/MogoADASController.java index f82bf29011..f828ef9ab8 100644 --- a/services/mogo-service/src/main/java/com/mogo/service/impl/adas/MogoADASController.java +++ b/services/mogo-service/src/main/java/com/mogo/service/impl/adas/MogoADASController.java @@ -323,6 +323,10 @@ public class MogoADASController implements IMogoADASController { return; } + if ( MogoApisHandler.getInstance().getApis().getStatusManagerApi().isVrMode() ) { + return; + } + try { AutopilotServiceManage.getInstance().showAdas(); } catch ( Exception e ) { From 80ecc411fb04b0a9d4c979fcfe5676aeaabba3f2 Mon Sep 17 00:00:00 2001 From: tongchenfei Date: Wed, 30 Dec 2020 17:10:09 +0800 Subject: [PATCH 35/72] =?UTF-8?q?http=20dns=20noop=20=E7=9B=B4=E6=8E=A5?= =?UTF-8?q?=E8=BF=94=E5=9B=9E=E4=BC=A0=E5=85=A5=E7=9A=84host?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/gradle.xml | 1 + .../src/main/java/com/mogo/httpdns/noop/HttpDnsNoop.java | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/.idea/gradle.xml b/.idea/gradle.xml index 426ff6b360..8efbfa420e 100644 --- a/.idea/gradle.xml +++ b/.idea/gradle.xml @@ -85,6 +85,7 @@ diff --git a/foudations/httpdns-noop/src/main/java/com/mogo/httpdns/noop/HttpDnsNoop.java b/foudations/httpdns-noop/src/main/java/com/mogo/httpdns/noop/HttpDnsNoop.java index fdf50007aa..5cd0e7df49 100644 --- a/foudations/httpdns-noop/src/main/java/com/mogo/httpdns/noop/HttpDnsNoop.java +++ b/foudations/httpdns-noop/src/main/java/com/mogo/httpdns/noop/HttpDnsNoop.java @@ -26,13 +26,13 @@ class HttpDnsNoop implements IMogoHttpDns { @Override public String getCachedHttpDnsIps( String host,int type ) { - return null; + return host; } @Override public void getHttpDnsIp( String host,int type, boolean useCache, IHttpDnsCallback callback ) { if ( callback != null ) { - callback.onParsed( null ); + callback.onParsed( host ); } } From eb3fd2eea8cadabf1c48fd792065f8778ea1dc3b Mon Sep 17 00:00:00 2001 From: wangcongtao Date: Wed, 30 Dec 2020 17:59:03 +0800 Subject: [PATCH 36/72] =?UTF-8?q?=E5=B0=86=E8=87=AA=E5=8A=A8=E8=BF=9B?= =?UTF-8?q?=E5=85=A5=E9=B9=B0=E7=9C=BC=E6=A8=A1=E5=BC=8F=E7=9A=84=E6=97=B6?= =?UTF-8?q?=E9=97=B4=E8=BF=9B=E8=A1=8C=E5=BB=B6=E6=97=B6=EF=BC=8C=E9=81=BF?= =?UTF-8?q?=E5=85=8D=E5=92=8C=E5=88=9D=E5=A7=8B=E5=8C=96=E7=9A=84=E8=AE=BE?= =?UTF-8?q?=E7=BD=AE=E5=86=B2=E7=AA=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/mogo/map/impl/custom/AMapViewWrapper.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/libraries/map-custom/src/main/java/com/mogo/map/impl/custom/AMapViewWrapper.java b/libraries/map-custom/src/main/java/com/mogo/map/impl/custom/AMapViewWrapper.java index 61a8b483b0..ca6c432960 100644 --- a/libraries/map-custom/src/main/java/com/mogo/map/impl/custom/AMapViewWrapper.java +++ b/libraries/map-custom/src/main/java/com/mogo/map/impl/custom/AMapViewWrapper.java @@ -698,7 +698,10 @@ public class AMapViewWrapper implements IMogoMapView, NaviClient.getInstance( getContext() ).syncCarLocation( sysLocation ); if ( checkAMapView() ) { - MapStyleController.getInstance().onLocationChanged( location, this ); + // 避免设置之后被其他初始化给重置为其他模式 + UiThreadHandler.postDelayed( () -> { + MapStyleController.getInstance().onLocationChanged( location, this ); + }, 5_000L ); } } From a588c7f22bebc31680aa85a367b05abf0e346460 Mon Sep 17 00:00:00 2001 From: wangcongtao Date: Wed, 30 Dec 2020 18:04:55 +0800 Subject: [PATCH 37/72] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E8=87=AA=E7=A0=94?= =?UTF-8?q?=E5=9C=B0=E5=9B=BE=E7=89=88=E6=9C=AC=E4=B8=BA1.0.0-vr-7.5.7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- libraries/map-custom/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/map-custom/build.gradle b/libraries/map-custom/build.gradle index e6d6a83127..b7408bfcc7 100644 --- a/libraries/map-custom/build.gradle +++ b/libraries/map-custom/build.gradle @@ -67,7 +67,7 @@ dependencies { implementation project(':foudations:mogo-commons') } - implementation 'com.zhidaoauto.machine:map:1.0.0-vr-7.5.5' + implementation 'com.zhidaoauto.machine:map:1.0.0-vr-7.5.7' // implementation 'com.zhidaoauto.machine:map:1.0.0-vr-7.4.5-log-1' } From 90c95f632437c6461f6f179fc17fefdf3a0b7a51 Mon Sep 17 00:00:00 2001 From: wangcongtao Date: Thu, 31 Dec 2020 10:59:19 +0800 Subject: [PATCH 38/72] =?UTF-8?q?=E4=BC=98=E5=8C=96=E5=9C=B0=E5=9B=BE?= =?UTF-8?q?=E5=8A=A0=E8=BD=BD=E6=97=B6=E6=9C=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/mogo/map/impl/custom/AMapViewWrapper.java | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/libraries/map-custom/src/main/java/com/mogo/map/impl/custom/AMapViewWrapper.java b/libraries/map-custom/src/main/java/com/mogo/map/impl/custom/AMapViewWrapper.java index ca6c432960..e8672f9503 100644 --- a/libraries/map-custom/src/main/java/com/mogo/map/impl/custom/AMapViewWrapper.java +++ b/libraries/map-custom/src/main/java/com/mogo/map/impl/custom/AMapViewWrapper.java @@ -86,6 +86,7 @@ public class AMapViewWrapper implements IMogoMapView, private Location mLastDriveLocationShadow = null; private EnumMapUI mCurrentUI; private boolean mIsLightStyle = false; + private boolean mMapLoaded = false; public AMapViewWrapper( MapAutoView mMapView ) { startTime = System.currentTimeMillis(); @@ -344,7 +345,7 @@ public class AMapViewWrapper implements IMogoMapView, @Override public void moveToCenter( MogoLatLng latLng ) { - + moveToCenter( latLng, true ); } private void setUIMode( EnumMapUI ui ) { @@ -697,7 +698,7 @@ public class AMapViewWrapper implements IMogoMapView, } NaviClient.getInstance( getContext() ).syncCarLocation( sysLocation ); - if ( checkAMapView() ) { + if ( checkAMapView() && mMapLoaded ) { // 避免设置之后被其他初始化给重置为其他模式 UiThreadHandler.postDelayed( () -> { MapStyleController.getInstance().onLocationChanged( location, this ); @@ -717,6 +718,7 @@ public class AMapViewWrapper implements IMogoMapView, public void onMapLoaded() { Logger.i( TAG, "autoop--onMapLoaded: " ); MogoMapListenerHandler.getInstance().onMapLoaded(); + mMapLoaded = true; CameraPosition cameraPosition = mMapView.getMapAutoViewHelper().getCameraPosition(); if ( cameraPosition != null ) { Trace.beginSection( "timer.onCameraChangeFinish" ); @@ -726,9 +728,6 @@ public class AMapViewWrapper implements IMogoMapView, cameraPosition.getBearing() ); Trace.endSection(); } - - getMap().getUIController().setAnchorRate( 0.01f ); - getMap().getUIController().setAnchorScale( 1.2f, 2.7f ); } @Override From 789d983021a74119afdd5713af9acd45ef201078 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=91=A3=E5=AE=8F=E5=AE=87?= Date: Thu, 31 Dec 2020 11:41:19 +0800 Subject: [PATCH 39/72] =?UTF-8?q?=E6=95=B4=E7=90=86hook=E7=9A=84=E6=B3=A8?= =?UTF-8?q?=E9=87=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- modules/mogo-module-common/CMakeLists.txt | 65 ++++++++----------- modules/mogo-module-common/build.gradle | 2 +- modules/mogo-module-common/src/main/cpp/Api.h | 16 +++++ .../src/main/cpp/method-hook-lib.cpp | 12 +++- 4 files changed, 53 insertions(+), 42 deletions(-) create mode 100644 modules/mogo-module-common/src/main/cpp/Api.h diff --git a/modules/mogo-module-common/CMakeLists.txt b/modules/mogo-module-common/CMakeLists.txt index e66e013af7..33493ce303 100644 --- a/modules/mogo-module-common/CMakeLists.txt +++ b/modules/mogo-module-common/CMakeLists.txt @@ -1,44 +1,33 @@ -# For more information about using CMake with Android Studio, read the -# documentation: https://d.android.com/studio/projects/add-native-code.html - -# Sets the minimum version of CMake required to build the native library. +# 更多关于在Android Studio中使用CMake的信息,请阅读文档 +# https://d.android.com/studio/projects/add-native-code.html +# 设置构建本机库所需的CMake的最小版本。 cmake_minimum_required(VERSION 3.4.1) -# Creates and names a library, sets it as either STATIC -# or SHARED, and provides the relative paths to its source code. -# You can define multiple libraries, and CMake builds them for you. -# Gradle automatically packages shared libraries with your APK. +set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -frtti -fexceptions") -add_library( # Sets the name of the library. - method-hook-lib +# 指定的源文件生成链接文件,然后添加到工程中去 +add_library( + # 设置库的名称。对应 System.loadLibrary("native-lib"); 使用的名称 + method-hook-lib + # 将库设置为共享库。 + SHARED + # 提供了到源文件的相对路径。 + src/main/cpp/method-hook-lib.cpp) - # Sets the library as a shared library. - SHARED +# 搜索指定的预构建库并将路径存储为变量。 +# 因为CMake在搜索路径中默认包含系统库, +# 所以你只需要指定你想要添加的公共NDK库的名称, +# CMake在完成它的构建之前会验证这个库是否存在。 +find_library( + # 设置path变量的名称。 + log-lib + # 指定你想要CMake定位的NDK库的名称。 + log) - # Provides a relative path to your source file(s). - src/main/cpp/method-hook-lib.cpp ) - -# Searches for a specified prebuilt library and stores the path as a -# variable. Because CMake includes system libraries in the search path by -# default, you only need to specify the name of the public NDK library -# you want to add. CMake verifies that the library exists before -# completing its build. - -find_library( # Sets the name of the path variable. - log-lib - - # Specifies the name of the NDK library that - # you want CMake to locate. - log ) - -# Specifies libraries CMake should link to your target library. You -# can link multiple libraries, such as libraries you define in this -# build script, prebuilt third-party libraries, or system libraries. - -target_link_libraries( # Specifies the target library. - method-hook-lib - - # Links the target library to the log library - # included in the NDK. - ${log-lib} ) \ No newline at end of file +# 为native-lib添加ffmpeg编译连接库 +target_link_libraries( + # 指定目标库。 + method-hook-lib + # 将目标库链接到包含在NDK中的日志库。 + ${log-lib}) \ No newline at end of file diff --git a/modules/mogo-module-common/build.gradle b/modules/mogo-module-common/build.gradle index 783a180702..23ea152ed1 100644 --- a/modules/mogo-module-common/build.gradle +++ b/modules/mogo-module-common/build.gradle @@ -14,7 +14,7 @@ android { externalNativeBuild { cmake { - cppFlags "-std=c++11 -frtti -fexceptions" + cppFlags "" } } } diff --git a/modules/mogo-module-common/src/main/cpp/Api.h b/modules/mogo-module-common/src/main/cpp/Api.h new file mode 100644 index 0000000000..e61958e771 --- /dev/null +++ b/modules/mogo-module-common/src/main/cpp/Api.h @@ -0,0 +1,16 @@ +// +// Created by on 2020-05-08. +// + +#ifndef API_H +#define API_H + +#include + +#define LOGI(...) __android_log_print(ANDROID_LOG_INFO,"Native_RtmpPusher",__VA_ARGS__) +#define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG,"Native_RtmpPusher",__VA_ARGS__) +#define LOGW(...) __android_log_print(ANDROID_LOG_WARN,"Native_RtmpPusher",__VA_ARGS__) +#define LOGE(...) __android_log_print(ANDROID_LOG_ERROR,"Native_RtmpPusher",__VA_ARGS__) + + +#endif //API_H diff --git a/modules/mogo-module-common/src/main/cpp/method-hook-lib.cpp b/modules/mogo-module-common/src/main/cpp/method-hook-lib.cpp index dd5111ea23..477a2c1a3f 100644 --- a/modules/mogo-module-common/src/main/cpp/method-hook-lib.cpp +++ b/modules/mogo-module-common/src/main/cpp/method-hook-lib.cpp @@ -1,7 +1,7 @@ #include #include +#include "Api.h" -// // Created by donghongyu on 12/10/20 1:34 PM. // 源码地址 https://github.com/pqpo/methodhook // 方法hook jni类 @@ -22,7 +22,10 @@ static struct { * @param destMethodObj 替换的方法对象 * @return */ -static jlong methodHook(JNIEnv *env, jclass type, jobject srcMethodObj, jobject destMethodObj) { +static jlong methodHook(JNIEnv *env, + jclass type, + jobject srcMethodObj, + jobject destMethodObj) { // 反射:获取了Java对象的在native层的 ArtMethod指针 void *srcMethod = reinterpret_cast(env->FromReflectedMethod(srcMethodObj)); void *destMethod = reinterpret_cast(env->FromReflectedMethod(destMethodObj)); @@ -45,7 +48,10 @@ static jlong methodHook(JNIEnv *env, jclass type, jobject srcMethodObj, jobject * @param methodPtr * @return */ -static jobject methodRestore(JNIEnv *env, jclass type, jobject srcMethod, jlong methodPtr) { +static jobject methodRestore(JNIEnv *env, + jclass type, + jobject srcMethod, + jlong methodPtr) { // 要还原的旧方法 指针 int *backupMethod = reinterpret_cast(methodPtr); // 获取了Java对象的在native层的 ArtMethod指针 From d582bc3c4172278e9457dd49c45f8a7792c13dbd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=91=A3=E5=AE=8F=E5=AE=87?= Date: Thu, 31 Dec 2020 16:43:05 +0800 Subject: [PATCH 40/72] =?UTF-8?q?=E5=B0=86hook=E5=8D=95=E7=8B=AC=E4=BD=9C?= =?UTF-8?q?=E4=B8=BA=E5=BA=93=E5=BC=95=E5=85=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/gradle.xml | 1 - .../map/impl/custom/CustomMapApiBuilder.java | 10 +- modules/mogo-module-common/CMakeLists.txt | 33 ------ modules/mogo-module-common/build.gradle | 12 +- modules/mogo-module-common/src/main/cpp/Api.h | 16 --- .../src/main/cpp/method-hook-lib.cpp | 108 ------------------ .../mogo/module/common/hook/HookManager.java | 67 ----------- .../mogo/module/common/hook/MethodHook.java | 100 ---------------- .../module/small/map/SmallVisionProvider.java | 2 +- 9 files changed, 10 insertions(+), 339 deletions(-) delete mode 100644 modules/mogo-module-common/CMakeLists.txt delete mode 100644 modules/mogo-module-common/src/main/cpp/Api.h delete mode 100644 modules/mogo-module-common/src/main/cpp/method-hook-lib.cpp delete mode 100644 modules/mogo-module-common/src/main/java/com/mogo/module/common/hook/HookManager.java delete mode 100644 modules/mogo-module-common/src/main/java/com/mogo/module/common/hook/MethodHook.java diff --git a/.idea/gradle.xml b/.idea/gradle.xml index 8efbfa420e..426ff6b360 100644 --- a/.idea/gradle.xml +++ b/.idea/gradle.xml @@ -85,7 +85,6 @@ diff --git a/libraries/map-custom/src/main/java/com/mogo/map/impl/custom/CustomMapApiBuilder.java b/libraries/map-custom/src/main/java/com/mogo/map/impl/custom/CustomMapApiBuilder.java index 4656d28323..5660221fb5 100644 --- a/libraries/map-custom/src/main/java/com/mogo/map/impl/custom/CustomMapApiBuilder.java +++ b/libraries/map-custom/src/main/java/com/mogo/map/impl/custom/CustomMapApiBuilder.java @@ -99,8 +99,14 @@ class CustomMapApiBuilder implements IMogoMapApiBuilder { .setZoom( 16 ) .setPointToCenter( 0.734375f, 0.5f ) .setStyleMode( MapParams.MAP_STYLE_NIGHT ), NavParams.Companion.init() ); - MapAutoView mapAutoView = new MapAutoView( context ); - IMogoMapView mapView = new AMapViewWrapper( mapAutoView ); + MapAutoView mapAutoView = new MapAutoView(context); + Logger.w(TAG, "mapAutoView==" + mapAutoView); + try { + Thread.sleep(1000); + } catch (InterruptedException e) { + e.printStackTrace(); + } + IMogoMapView mapView = new AMapViewWrapper(mapAutoView); return mapView; } diff --git a/modules/mogo-module-common/CMakeLists.txt b/modules/mogo-module-common/CMakeLists.txt deleted file mode 100644 index 33493ce303..0000000000 --- a/modules/mogo-module-common/CMakeLists.txt +++ /dev/null @@ -1,33 +0,0 @@ -# 更多关于在Android Studio中使用CMake的信息,请阅读文档 -# https://d.android.com/studio/projects/add-native-code.html - -# 设置构建本机库所需的CMake的最小版本。 -cmake_minimum_required(VERSION 3.4.1) - -set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -frtti -fexceptions") - -# 指定的源文件生成链接文件,然后添加到工程中去 -add_library( - # 设置库的名称。对应 System.loadLibrary("native-lib"); 使用的名称 - method-hook-lib - # 将库设置为共享库。 - SHARED - # 提供了到源文件的相对路径。 - src/main/cpp/method-hook-lib.cpp) - -# 搜索指定的预构建库并将路径存储为变量。 -# 因为CMake在搜索路径中默认包含系统库, -# 所以你只需要指定你想要添加的公共NDK库的名称, -# CMake在完成它的构建之前会验证这个库是否存在。 -find_library( - # 设置path变量的名称。 - log-lib - # 指定你想要CMake定位的NDK库的名称。 - log) - -# 为native-lib添加ffmpeg编译连接库 -target_link_libraries( - # 指定目标库。 - method-hook-lib - # 将目标库链接到包含在NDK中的日志库。 - ${log-lib}) \ No newline at end of file diff --git a/modules/mogo-module-common/build.gradle b/modules/mogo-module-common/build.gradle index 23ea152ed1..e6efc88b0b 100644 --- a/modules/mogo-module-common/build.gradle +++ b/modules/mogo-module-common/build.gradle @@ -11,17 +11,6 @@ android { testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" consumerProguardFiles 'consumer-rules.pro' - - externalNativeBuild { - cmake { - cppFlags "" - } - } - } - externalNativeBuild { - cmake { - path "CMakeLists.txt" - } } buildTypes { release { @@ -44,6 +33,7 @@ dependencies { implementation rootProject.ext.dependencies.androidxconstraintlayout implementation rootProject.ext.dependencies.arouter implementation rootProject.ext.dependencies.callchatprovider + api "com.mogo.libs:hook:1.0" if (Boolean.valueOf(RELEASE)) { api rootProject.ext.dependencies.mogomap api rootProject.ext.dependencies.mogomapapi diff --git a/modules/mogo-module-common/src/main/cpp/Api.h b/modules/mogo-module-common/src/main/cpp/Api.h deleted file mode 100644 index e61958e771..0000000000 --- a/modules/mogo-module-common/src/main/cpp/Api.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// Created by on 2020-05-08. -// - -#ifndef API_H -#define API_H - -#include - -#define LOGI(...) __android_log_print(ANDROID_LOG_INFO,"Native_RtmpPusher",__VA_ARGS__) -#define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG,"Native_RtmpPusher",__VA_ARGS__) -#define LOGW(...) __android_log_print(ANDROID_LOG_WARN,"Native_RtmpPusher",__VA_ARGS__) -#define LOGE(...) __android_log_print(ANDROID_LOG_ERROR,"Native_RtmpPusher",__VA_ARGS__) - - -#endif //API_H diff --git a/modules/mogo-module-common/src/main/cpp/method-hook-lib.cpp b/modules/mogo-module-common/src/main/cpp/method-hook-lib.cpp deleted file mode 100644 index 477a2c1a3f..0000000000 --- a/modules/mogo-module-common/src/main/cpp/method-hook-lib.cpp +++ /dev/null @@ -1,108 +0,0 @@ -#include -#include -#include "Api.h" - -// Created by donghongyu on 12/10/20 1:34 PM. -// 源码地址 https://github.com/pqpo/methodhook -// 方法hook jni类 -static const char *kClassMethodHookChar = "com/mogo/module/common/hook/MethodHook"; - -static struct { - jmethodID m1; - jmethodID m2; - size_t methodSize; -} methodHookClassInfo; - - -/** - * 替换指定类中的方法 - * @param env - * @param type - * @param srcMethodObj 目标方法对象 - * @param destMethodObj 替换的方法对象 - * @return - */ -static jlong methodHook(JNIEnv *env, - jclass type, - jobject srcMethodObj, - jobject destMethodObj) { - // 反射:获取了Java对象的在native层的 ArtMethod指针 - void *srcMethod = reinterpret_cast(env->FromReflectedMethod(srcMethodObj)); - void *destMethod = reinterpret_cast(env->FromReflectedMethod(destMethodObj)); - // 定义存储方法ID的数组 - int *backupMethod = new int[methodHookClassInfo.methodSize]; - // 使用的内存拷贝函数 - // 将旧方法ID拷贝到数组中 - memcpy(backupMethod, srcMethod, methodHookClassInfo.methodSize); - // 将新方法替换到旧方法地址上 - memcpy(srcMethod, destMethod, methodHookClassInfo.methodSize); - // 将旧方法ID返回给java层,用来做方法还原使用 - return reinterpret_cast(backupMethod); -} - -/** - * 恢复指定类中的方法 - * @param env - * @param type - * @param srcMethod 目标方法对象 - * @param methodPtr - * @return - */ -static jobject methodRestore(JNIEnv *env, - jclass type, - jobject srcMethod, - jlong methodPtr) { - // 要还原的旧方法 指针 - int *backupMethod = reinterpret_cast(methodPtr); - // 获取了Java对象的在native层的 ArtMethod指针 - void *artMethodSrc = reinterpret_cast(env->FromReflectedMethod(srcMethod)); - // 将旧方法指针,替换到 artMethodSrc 中 - memcpy(artMethodSrc, backupMethod, methodHookClassInfo.methodSize); - // 删除旧方法备份指针 - delete[]backupMethod; - // 返回旧方法 - return srcMethod; -} - -// 定义要注册的方法 -static JNINativeMethod gMethods[] = { - { - "hook_native", - "(Ljava/lang/reflect/Method;Ljava/lang/reflect/Method;)J", - (void *) methodHook - }, - { - "restore_native", - "(Ljava/lang/reflect/Method;J)Ljava/lang/reflect/Method;", - (void *) methodRestore - } -}; - -extern "C" -JNIEXPORT jint JNICALL -/** - * 在jni加载的时候进行方法参数获取 - * @param vm - * @param reserved - * @return - */ -JNI_OnLoad(JavaVM *vm, void *reserved) { - JNIEnv *env = nullptr; - if (vm->GetEnv((void **) &env, JNI_VERSION_1_4) != JNI_OK) { - return JNI_FALSE; - } - // 加载指定java class - jclass classEvaluateUtil = env->FindClass(kClassMethodHookChar); - // 注册 - if (env->RegisterNatives(classEvaluateUtil, gMethods, sizeof(gMethods) / sizeof(gMethods[0])) < - 0) { - return JNI_FALSE; - } - // 获取 MethodHook m1、m2 的方法ID - methodHookClassInfo.m1 = env->GetStaticMethodID(classEvaluateUtil, "m1", "()V"); - methodHookClassInfo.m2 = env->GetStaticMethodID(classEvaluateUtil, "m2", "()V"); - // 获取artMethod的大小, - methodHookClassInfo.methodSize = reinterpret_cast(methodHookClassInfo.m2) - - reinterpret_cast(methodHookClassInfo.m1); - return JNI_VERSION_1_4; -} diff --git a/modules/mogo-module-common/src/main/java/com/mogo/module/common/hook/HookManager.java b/modules/mogo-module-common/src/main/java/com/mogo/module/common/hook/HookManager.java deleted file mode 100644 index 6dc15753b1..0000000000 --- a/modules/mogo-module-common/src/main/java/com/mogo/module/common/hook/HookManager.java +++ /dev/null @@ -1,67 +0,0 @@ -package com.mogo.module.common.hook; - - -import android.util.Pair; - -import java.lang.reflect.InvocationTargetException; -import java.lang.reflect.Method; -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; - -/** - * 替换管理 - * Created by donghongyu on 12/29/20 1:34 PM - */ -public final class HookManager { - - private HookManager() { - } - - public static HookManager get() { - return InstanceHolder.sInstance; - } - - private static class InstanceHolder { - private static HookManager sInstance = new HookManager(); - } - - private Map, MethodHook> methodHookMap = new ConcurrentHashMap<>(); - - /** - * 替换方法 - * - * @param originMethod 原始方法 - * @param hookMethod 替换方法 - */ - public void hookMethod(Method originMethod, Method hookMethod) { - if (originMethod == null || hookMethod == null) { - throw new IllegalArgumentException("argument cannot be null"); - } - - Pair key = Pair.create(hookMethod.getDeclaringClass().getName(), hookMethod.getName()); - if (methodHookMap.containsKey(key)) { - MethodHook methodHook = methodHookMap.get(key); - methodHook.restore(); - } - MethodHook methodHook = new MethodHook(originMethod, hookMethod); - methodHookMap.put(key, methodHook); - methodHook.hook(); - } - - public void callOrigin(Object receiver, Object... args) { - StackTraceElement stackTrace = Thread.currentThread().getStackTrace()[3]; - String className = stackTrace.getClassName(); - String methodName = stackTrace.getMethodName(); - MethodHook methodHook = methodHookMap.get(Pair.create(className, methodName)); - if (methodHook != null) { - try { - methodHook.callOrigin(receiver, args); - } catch (InvocationTargetException e) { - e.printStackTrace(); - } catch (IllegalAccessException e) { - e.printStackTrace(); - } - } - } - -} diff --git a/modules/mogo-module-common/src/main/java/com/mogo/module/common/hook/MethodHook.java b/modules/mogo-module-common/src/main/java/com/mogo/module/common/hook/MethodHook.java deleted file mode 100644 index 8586ac1adc..0000000000 --- a/modules/mogo-module-common/src/main/java/com/mogo/module/common/hook/MethodHook.java +++ /dev/null @@ -1,100 +0,0 @@ -package com.mogo.module.common.hook; - -import java.lang.reflect.InvocationTargetException; -import java.lang.reflect.Method; - -/** - * 替换类与c++代码对应 - * Created by donghongyu on 12/29/20 1:34 PM - */ -public class MethodHook { - - public static void m1() { - } - - public static void m2() { - } - - // 目标方法 - private Method srcMethod; - // 要替换的方法 - private Method hookMethod; - - // 备份目标替换方法ID - private long backupMethodPtr; - - /** - * hook方法 - * - * @param src 要替换的方法对象 - * @param dest 被替换的方法对象 - */ - public MethodHook(Method src, Method dest) { - srcMethod = src; - hookMethod = dest; - srcMethod.setAccessible(true); - hookMethod.setAccessible(true); - } - - /** - * 调用 native 层,完成替换 - */ - public void hook() { - if (backupMethodPtr == 0) { - backupMethodPtr = hook_native(srcMethod, hookMethod); - } - } - - /** - * 调用 native 层,完成方法还原 - */ - public void restore() { - if (backupMethodPtr != 0) { - restore_native(srcMethod, backupMethodPtr); - backupMethodPtr = 0; - } - } - - /** - * 调用原来class 对象中的方法 - * - * @param receiver 接受对象 - * @param args 方法列表 - * @throws InvocationTargetException - * @throws IllegalAccessException - */ - public void callOrigin(Object receiver, Object... args) - throws InvocationTargetException, IllegalAccessException { - if (backupMethodPtr != 0) { - restore(); - srcMethod.invoke(receiver, args); - hook(); - } else { - srcMethod.invoke(receiver, args); - } - } - - /** - * 调用 native 方法完成 方法替换 - * - * @param src 旧方法 - * @param dest 新方法 - * @return 就方法ID - */ - private static native long hook_native(Method src, Method dest); - - /** - * 调用 native 方法完成 方法还原 - * - * @param src - * @param methodPtr - * @return - */ - private static native Method restore_native(Method src, long methodPtr); - - static { - // 加载本地方法 so - System.loadLibrary("method-hook-lib"); - } - -} diff --git a/modules/mogo-module-smp/src/main/java/com/mogo/module/small/map/SmallVisionProvider.java b/modules/mogo-module-smp/src/main/java/com/mogo/module/small/map/SmallVisionProvider.java index 42503d9055..98e6bef0a9 100644 --- a/modules/mogo-module-smp/src/main/java/com/mogo/module/small/map/SmallVisionProvider.java +++ b/modules/mogo-module-smp/src/main/java/com/mogo/module/small/map/SmallVisionProvider.java @@ -14,8 +14,8 @@ 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.hook.HookManager; import com.mogo.module.common.wm.WindowManagerView; import com.mogo.service.MogoServicePaths; import com.mogo.service.map.IMogoSmallMapProvider; From e270366602a39452e50b988a2b5997177e1583e6 Mon Sep 17 00:00:00 2001 From: tongchenfei Date: Thu, 31 Dec 2020 17:13:24 +0800 Subject: [PATCH 41/72] 1. opt ui 2. opt MapMarkerBaseView --- .../module/common/drawer/marker/MapMarkerBaseView.java | 4 +++- .../src/main/res/layout/include_navi_in_vr.xml | 10 ++++++++-- .../res/layout/merge_vertical_traffic_light_in_vr.xml | 3 ++- .../src/main/res/values/dimens.xml | 9 ++++++--- .../main/java/com/zhidao/mogo/module/obu/MockUtil.kt | 2 +- 5 files changed, 20 insertions(+), 8 deletions(-) diff --git a/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/marker/MapMarkerBaseView.java b/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/marker/MapMarkerBaseView.java index c3cbc4149e..f01929b1e5 100644 --- a/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/marker/MapMarkerBaseView.java +++ b/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/marker/MapMarkerBaseView.java @@ -90,7 +90,9 @@ public abstract class MapMarkerBaseView extends LinearLayout implements IMarkerV } private void loadPoiTypeIconInUiThread(String url,int res) { - + if (mMarker != null) { + mMarker.setIcon( ViewUtils.fromView(MapMarkerBaseView.this)); + } if (!url.isEmpty()) { ivIcon.setPlaceHolder(res); ivIcon.setFailureHolder(res); diff --git a/modules/mogo-module-extensions/src/main/res/layout/include_navi_in_vr.xml b/modules/mogo-module-extensions/src/main/res/layout/include_navi_in_vr.xml index 507d0730b8..7f0e64e2f8 100644 --- a/modules/mogo-module-extensions/src/main/res/layout/include_navi_in_vr.xml +++ b/modules/mogo-module-extensions/src/main/res/layout/include_navi_in_vr.xml @@ -29,6 +29,7 @@ android:id="@+id/module_ext_id_tv_speed" android:layout_width="wrap_content" android:layout_height="wrap_content" + android:layout_marginTop="@dimen/module_ext_navi_in_vr_nav_common_margin_top" android:layout_marginStart="@dimen/module_ext_navi_in_vr_speed_margin_start" android:text="--" android:textColor="#fff" @@ -53,6 +54,8 @@ android:id="@+id/module_map_id_navi_next_info_road_turn_icon_in_vr_mode" android:layout_width="@dimen/module_ext_navi_in_vr_navi_icon_size" android:layout_height="@dimen/module_ext_navi_in_vr_navi_icon_size" + android:layout_marginTop="@dimen/module_ext_navi_in_vr_nav_common_margin_top" + android:layout_marginStart="@dimen/module_ext_navi_in_vr_limit_speed_margin_start" android:src="@drawable/tc_11" app:layout_constraintBottom_toTopOf="@id/module_ext_id_navi_in_vr_traffic_bg" app:layout_constraintLeft_toLeftOf="@id/module_ext_id_navi_in_vr_traffic_bg" @@ -65,6 +68,7 @@ android:text="200" android:textColor="#f1f1f1" android:textSize="@dimen/module_ext_navi_in_vr_next_info_txt_size" + app:layout_constraintBottom_toTopOf="@id/module_map_id_navi_next_info_road_in_vr_mode" app:layout_constraintLeft_toRightOf="@id/module_map_id_navi_next_info_road_turn_icon_in_vr_mode" app:layout_constraintTop_toTopOf="@id/module_map_id_navi_next_info_road_turn_icon_in_vr_mode" /> @@ -85,6 +89,7 @@ android:text="北三环东路辅路" android:textColor="#f1f1f1" android:textSize="@dimen/module_ext_navi_in_vr_next_info_road_txt_size" + app:layout_constraintBottom_toBottomOf="@+id/module_map_id_navi_next_info_road_turn_icon_in_vr_mode" app:layout_constraintLeft_toLeftOf="@id/module_map_id_navi_next_info_distance_in_vr_mode" app:layout_constraintTop_toBottomOf="@id/module_map_id_navi_next_info_distance_in_vr_mode" /> @@ -94,6 +99,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginEnd="@dimen/module_ext_navi_in_vr_limit_speed_margin_end" + android:layout_marginTop="@dimen/module_ext_navi_in_vr_limit_speed_margin_top" android:background="@drawable/module_ext_vr_mode_limit_speed_bg" android:gravity="center" android:text="80" @@ -148,14 +154,14 @@ android:layout_height="wrap_content" app:constraint_referenced_ids="module_ext_id_tv_speed,module_ext_id_tv_speed_unit" android:visibility="gone" - tools:visibility="gone" /> + tools:visibility="visible" /> diff --git a/modules/mogo-module-extensions/src/main/res/layout/merge_vertical_traffic_light_in_vr.xml b/modules/mogo-module-extensions/src/main/res/layout/merge_vertical_traffic_light_in_vr.xml index 9c14f81fb8..4dacff9734 100644 --- a/modules/mogo-module-extensions/src/main/res/layout/merge_vertical_traffic_light_in_vr.xml +++ b/modules/mogo-module-extensions/src/main/res/layout/merge_vertical_traffic_light_in_vr.xml @@ -23,12 +23,13 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="12" + android:layout_marginTop="@dimen/module_ext_navi_in_vr_traffic_light_left_time_margin_top" android:textColor="#fff" app:layout_constraintHorizontal_chainStyle="packed" android:textSize="@dimen/module_ext_navi_in_vr_traffic_light_left_time_txt_size" app:layout_constraintLeft_toLeftOf="@id/module_ext_id_traffic_light_icon" app:layout_constraintRight_toLeftOf="@id/module_ext_id_traffic_light_left_time_unit" - app:layout_constraintTop_toBottomOf="@id/module_ext_id_traffic_light_icon" /> + app:layout_constraintTop_toTopOf="@id/module_ext_id_traffic_light_icon" /> 60px 100px 30px - 30px + 15px 70px 22px 78px 66px - 43px + 23px + 30px + 20px 40px 20px 17px 36px + 60px 21px - 21px + 11px 400px 300px diff --git a/modules/mogo-module-obu/src/main/java/com/zhidao/mogo/module/obu/MockUtil.kt b/modules/mogo-module-obu/src/main/java/com/zhidao/mogo/module/obu/MockUtil.kt index b67be3a6fe..ff4743d73e 100644 --- a/modules/mogo-module-obu/src/main/java/com/zhidao/mogo/module/obu/MockUtil.kt +++ b/modules/mogo-module-obu/src/main/java/com/zhidao/mogo/module/obu/MockUtil.kt @@ -45,7 +45,7 @@ class MockUtil:Handler.Callback { if (msg.what == 1001) { Logger.d(TAG,"准备添加调试view") val api = ARouter.getInstance().build(MogoServicePaths.PATH_SERVICE_APIS).navigation(context) as IMogoServiceApis - api.windowManagerApi.addView(view, 500, 300, false) + api.windowManagerApi.addView(view, 800, 300, false) } return false } From b84c1c1c06f6f8472b8e57f35ac2a743455efcd2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=91=A3=E5=AE=8F=E5=AE=87?= Date: Thu, 31 Dec 2020 17:50:52 +0800 Subject: [PATCH 42/72] =?UTF-8?q?=E9=99=8D=E4=BD=8E=E4=BA=86=E5=B0=8F?= =?UTF-8?q?=E5=9C=B0=E5=9B=BE=E8=A7=86=E8=A7=92=E9=AB=98=E5=BA=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mogo/module/small/map/SmallMapDirectionView.java | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/modules/mogo-module-smp/src/main/java/com/mogo/module/small/map/SmallMapDirectionView.java b/modules/mogo-module-smp/src/main/java/com/mogo/module/small/map/SmallMapDirectionView.java index dec53d8d38..237cb22f81 100644 --- a/modules/mogo-module-smp/src/main/java/com/mogo/module/small/map/SmallMapDirectionView.java +++ b/modules/mogo-module-smp/src/main/java/com/mogo/module/small/map/SmallMapDirectionView.java @@ -37,6 +37,7 @@ public class SmallMapDirectionView extends RelativeLayout { private AMapNaviView mAMapNaviView; private DirectionRotateAnimation mRotateAnimation; private int lastAngle = 0; + private int zoomLevel = 17; public SmallMapDirectionView(Context context) { this(context, null); @@ -133,19 +134,19 @@ public class SmallMapDirectionView extends RelativeLayout { options.setNaviArrowVisible(false); // 通过路线是否自动置灰,仅支持驾车导航 options.setAfterRouteAutoGray(false); - options.setZoom(((int) 9)); + //options.setZoom(((int) 9)); //options.setPointToCenter(0.7D, 0.5D); // 2D模式 options.setTilt(0); // 黑夜模式 -// options.setNaviNight(true); + // options.setNaviNight(true); // 自定义地图样式 options.setCustomMapStylePath(styleFilePath); mAMapNaviView.setViewOptions(options); } //设置希望展示的地图缩放级别 - CameraUpdate cameraUpdate = CameraUpdateFactory.zoomTo(12); + CameraUpdate cameraUpdate = CameraUpdateFactory.zoomTo(zoomLevel); aMap.moveCamera(cameraUpdate); aMap.setOnCameraChangeListener(new AMap.OnCameraChangeListener() { @@ -175,7 +176,7 @@ public class SmallMapDirectionView extends RelativeLayout { } //设置希望展示的地图缩放级别 - CameraUpdate cameraUpdate = CameraUpdateFactory.zoomTo(12); + CameraUpdate cameraUpdate = CameraUpdateFactory.zoomTo(zoomLevel); aMap.moveCamera(cameraUpdate); } }); @@ -218,7 +219,7 @@ public class SmallMapDirectionView extends RelativeLayout { } //设置希望展示的地图缩放级别 - CameraUpdate cameraUpdate = CameraUpdateFactory.zoomTo(12); + CameraUpdate cameraUpdate = CameraUpdateFactory.zoomTo(zoomLevel); aMap.moveCamera(cameraUpdate); } } From 52c96e68732e977d0bb3f651c0a196ea2b7058ae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=91=A3=E5=AE=8F=E5=AE=87?= Date: Thu, 31 Dec 2020 18:17:48 +0800 Subject: [PATCH 43/72] =?UTF-8?q?=E9=99=8D=E4=BD=8E=E4=BA=86=E5=B0=8F?= =?UTF-8?q?=E5=9C=B0=E5=9B=BE=E8=A7=86=E8=A7=92=E9=AB=98=E5=BA=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/mogo/module/small/map/SmallMapDirectionView.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/mogo-module-smp/src/main/java/com/mogo/module/small/map/SmallMapDirectionView.java b/modules/mogo-module-smp/src/main/java/com/mogo/module/small/map/SmallMapDirectionView.java index 237cb22f81..64e56eb087 100644 --- a/modules/mogo-module-smp/src/main/java/com/mogo/module/small/map/SmallMapDirectionView.java +++ b/modules/mogo-module-smp/src/main/java/com/mogo/module/small/map/SmallMapDirectionView.java @@ -37,7 +37,7 @@ public class SmallMapDirectionView extends RelativeLayout { private AMapNaviView mAMapNaviView; private DirectionRotateAnimation mRotateAnimation; private int lastAngle = 0; - private int zoomLevel = 17; + private int zoomLevel = 15; public SmallMapDirectionView(Context context) { this(context, null); From 4fc4f39c41393fc84bb016208adc9f0e9f422c2c Mon Sep 17 00:00:00 2001 From: tongchenfei Date: Thu, 31 Dec 2020 18:22:33 +0800 Subject: [PATCH 44/72] opt topview in vr mode --- .idea/gradle.xml | 1 + .../com/mogo/module/extensions/utils/TopViewAnimHelper.java | 2 ++ 2 files changed, 3 insertions(+) diff --git a/.idea/gradle.xml b/.idea/gradle.xml index 426ff6b360..8efbfa420e 100644 --- a/.idea/gradle.xml +++ b/.idea/gradle.xml @@ -85,6 +85,7 @@ diff --git a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/utils/TopViewAnimHelper.java b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/utils/TopViewAnimHelper.java index ad8f008f79..5871641bde 100644 --- a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/utils/TopViewAnimHelper.java +++ b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/utils/TopViewAnimHelper.java @@ -389,6 +389,7 @@ public class TopViewAnimHelper { } Logger.d("TopViewAnimHelper", "hideNaviView====="); + animNavInfoView.setTranslationY(0); animNavInfoView.setVisibility(View.GONE); vrModeNavInfoView.stopNav(); int scene = 0; @@ -441,6 +442,7 @@ public class TopViewAnimHelper { listener.onViewRemoved(child); } } + topContainer.setTranslationY(0); topContainer.removeAllViews(); hideNaviView(); MapCenterPointStrategy.setMapCenterPointByScene(mogoMapUIController, Scene.AIMLESS); From 5c005e6db9d1ff69df3a6b5a2538c4e1abb15235 Mon Sep 17 00:00:00 2001 From: liujing Date: Thu, 31 Dec 2020 19:10:23 +0800 Subject: [PATCH 45/72] =?UTF-8?q?=E5=88=A0=E9=99=A4=E6=B5=8B=E8=AF=95?= =?UTF-8?q?=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../scene/road/V2XRoadVideoCarScenario.java | 2 +- .../src/main/res/layout/window_test_console.xml | 14 -------------- .../src/main/res/values-xhdpi/dimens.xml | 4 ---- 3 files changed, 1 insertion(+), 19 deletions(-) diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/road/V2XRoadVideoCarScenario.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/road/V2XRoadVideoCarScenario.java index 853faca1d0..def8a1c7ac 100644 --- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/road/V2XRoadVideoCarScenario.java +++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/road/V2XRoadVideoCarScenario.java @@ -59,7 +59,7 @@ public class V2XRoadVideoCarScenario extends AbsV2XScenario new ViewGroup.LayoutParams( ViewGroup.LayoutParams.MATCH_PARENT, (int) V2XUtils.getApp().getResources() - .getDimension(R.dimen.v2x_video_window_height)); + .getDimension(V2XServiceManager.getMoGoStatusManager().isVrMode()? R.dimen.dp_394:R.dimen.v2x_video_window_height)); V2XServiceManager .getMogoTopViewManager() .addViewNoLinkage(getV2XWindow().getView(), layoutParams, this); diff --git a/modules/mogo-module-v2x/src/main/res/layout/window_test_console.xml b/modules/mogo-module-v2x/src/main/res/layout/window_test_console.xml index a7876cce9d..80497ce2ef 100644 --- a/modules/mogo-module-v2x/src/main/res/layout/window_test_console.xml +++ b/modules/mogo-module-v2x/src/main/res/layout/window_test_console.xml @@ -140,20 +140,6 @@ app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintStart_toStartOf="parent" /> -