diff --git a/libraries/map-custom/build.gradle b/libraries/map-custom/build.gradle index 753ea5e853..fa504e51c5 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-8.0.4' + implementation 'com.zhidaoauto.machine:map:1.0.0-vr-8.0.5' // implementation 'com.zhidaoauto.machine:map:1.0.0-vr-test-3.4' } diff --git a/libraries/map-custom/src/main/java/com/mogo/map/impl/custom/utils/ObjectUtils.java b/libraries/map-custom/src/main/java/com/mogo/map/impl/custom/utils/ObjectUtils.java index 9bc315a7b6..a385a74ebc 100644 --- a/libraries/map-custom/src/main/java/com/mogo/map/impl/custom/utils/ObjectUtils.java +++ b/libraries/map-custom/src/main/java/com/mogo/map/impl/custom/utils/ObjectUtils.java @@ -75,6 +75,7 @@ public class ObjectUtils { .anchor(opt.getU(), opt.getV()) .icons( descriptors ) .period( opt.getPeriod() ) + .controlAngle( opt.isControlAngle() ) .rotateAngle(opt.getRotate()) .setFlat(opt.isFlat()) .visible(opt.isVisible()) diff --git a/libraries/mogo-map-api/src/main/java/com/mogo/map/marker/MogoMarkerOptions.java b/libraries/mogo-map-api/src/main/java/com/mogo/map/marker/MogoMarkerOptions.java index aba47f247f..0ad77d7a28 100644 --- a/libraries/mogo-map-api/src/main/java/com/mogo/map/marker/MogoMarkerOptions.java +++ b/libraries/mogo-map-api/src/main/java/com/mogo/map/marker/MogoMarkerOptions.java @@ -79,6 +79,17 @@ public class MogoMarkerOptions extends Observable { private boolean mIs3DMode = false; + private boolean mIsControlAngle = false; + + public MogoMarkerOptions controlAngle( boolean controlAngle ) { + this.mIsControlAngle = controlAngle; + return this; + } + + public boolean isControlAngle() { + return mIsControlAngle; + } + public MogoMarkerOptions set3DMode( boolean is3DMode ) { mIs3DMode = is3DMode; return this; diff --git a/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/AdasRecognizedResultDrawer.java b/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/AdasRecognizedResultDrawer.java index 8bf6860e48..b68ec2476b 100644 --- a/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/AdasRecognizedResultDrawer.java +++ b/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/AdasRecognizedResultDrawer.java @@ -107,6 +107,10 @@ class AdasRecognizedResultDrawer extends BaseDrawer { marker.setPosition( recognizedListResult.lat, recognizedListResult.lon ); } else { long interval = recognizedListResult.systemTime - lastPosition.systemTime; + if ( interval < 45 ) { + interval = 45; + } + interval -= 25; marker.startSmoothInMs( points, interval ); } } else { @@ -169,6 +173,7 @@ class AdasRecognizedResultDrawer extends BaseDrawer { .owner( DataTypes.TYPE_MARKER_ADAS ) .anchor( 0.5f, 0.5f ) .set3DMode( true ) + .controlAngle( true ) .icon3DRes( getVrModel() ) .rotate( ( float ) recognizedListResult.heading ) .position( new MogoLatLng( recognizedListResult.lat, recognizedListResult.lon ) ); 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 1cfed0d463..5544ee36a2 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 @@ -214,7 +214,10 @@ class SnapshotSetDataDrawer extends BaseDrawer implements IMogoMarkerClickListen long interval = cloudRoadData.getSystemTime() - lastPosition.getSystemTime(); long interval2 = cloudRoadData.getSatelliteTime() - lastPosition.getSatelliteTime(); interval2 = interval < interval2 || interval2 == 0 ? interval : interval2; -// interval2 = interval2 > 1_000L ? 1_000L : interval2; + if ( interval2 < 45 ) { + interval2 = 45; + } + interval2 -= 25; marker.startSmoothInMs( points, interval2 ); Logger.d( TAG, "平滑移动 - %s duration = %s", uniqueKey, interval2 ); } @@ -328,6 +331,7 @@ class SnapshotSetDataDrawer extends BaseDrawer implements IMogoMarkerClickListen .anchor( 0.5f, 0.5f ) .rotate( ( float ) data.getHeading() ) .object( data ) + .controlAngle( true ) .position( new MogoLatLng( data.getLat(), data.getLon() ) ); if ( MogoApisHandler.getInstance().getApis().getStatusManagerApi().isVrMode() ) { options.set3DMode( true ); @@ -350,7 +354,7 @@ class SnapshotSetDataDrawer extends BaseDrawer implements IMogoMarkerClickListen // return R.raw.bus; case CloudRoadData.FROM_MY_LOCATION: default: - return R.raw.carred; + return R.raw.carblue; } } diff --git a/modules/mogo-module-common/src/main/res/raw/carblue.n3d b/modules/mogo-module-common/src/main/res/raw/carblue.n3d new file mode 100644 index 0000000000..7c9212f7b0 Binary files /dev/null and b/modules/mogo-module-common/src/main/res/raw/carblue.n3d differ diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/intent/MockIntentHandler.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/intent/MockIntentHandler.java index 96d1cb0069..c356854908 100644 --- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/intent/MockIntentHandler.java +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/intent/MockIntentHandler.java @@ -27,6 +27,8 @@ import com.mogo.module.common.MogoApisHandler; import com.mogo.module.common.dialog.WMDialog; import com.mogo.module.service.MarkerServiceHandler; import com.mogo.module.service.R; +import com.mogo.module.service.uploadintime.SnapshotUploadInTime; +import com.mogo.service.adas.entity.ADASCarStateInfo; import com.mogo.service.entrance.ButtonIndex; import com.mogo.utils.CoordinateUtils; import com.mogo.utils.TipToast; @@ -35,6 +37,11 @@ import com.mogo.utils.logger.Logger; import com.mogo.utils.network.utils.GsonUtil; import com.mogo.utils.storage.SharedPrefsMgr; +import org.json.JSONObject; + +import java.io.BufferedReader; +import java.io.InputStream; +import java.io.InputStreamReader; import java.util.ArrayList; import java.util.List; @@ -479,6 +486,58 @@ public class MockIntentHandler implements IntentHandler { // adb shell am broadcast -a com.mogo.mock --ei oper 41 --ei type 1 直接打点 DebugConfig.setNotSmooth( intent.getIntExtra( "type", 0 ) == 1 ); break; + case 42: + WorkThreadHandler.getInstance().post( () -> { + try { + InputStream is = context.getAssets().open( "coors.json" ); + BufferedReader br = new BufferedReader( new InputStreamReader( is ) ); + String line = ""; + List< ADASCarStateInfo > vals = new ArrayList<>(); + while ( ( line = br.readLine() ) != null ) { + String[] json = line.split( " - " ); + long time = Long.valueOf( json[0] ); + ADASCarStateInfo si = GsonUtil.objectFromJson( json[1], ADASCarStateInfo.class ); +// si.getValues().setSatelliteTime( time + "" ); + vals.add( si ); + } + long interval = -1; + ADASCarStateInfo last = null; + for ( ADASCarStateInfo val : vals ) { + if ( last == null ) { + interval = 0; + } else { + interval = Long.valueOf( val.getValues().getSatelliteTime() ) - Long.valueOf( last.getValues().getSatelliteTime() ); + } + last = val; + WorkThreadHandler.getInstance().postDelayed( () -> { + onAdasCarDataCallback( val ); + }, interval ); + } + } catch ( Exception e ) { + e.printStackTrace(); + } + } ); + break; + } + } + + public void onAdasCarDataCallback( ADASCarStateInfo stateInfo ) { + if ( stateInfo != null && stateInfo.getValues() != null ) { + JSONObject data = new JSONObject(); + try { + data.putOpt( "lon", stateInfo.getValues().getLon() ); + data.putOpt( "lat", stateInfo.getValues().getLat() ); + data.putOpt( "alt", stateInfo.getValues().getAlt() ); + data.putOpt( "speed", stateInfo.getValues().getGnss_speed() ); + data.putOpt( "satelliteTime", stateInfo.getValues().getSatelliteTime() ); + data.putOpt( "heading", stateInfo.getValues().getHeading() ); + data.putOpt( "acceleration", stateInfo.getValues().getAcceleration() ); + data.putOpt( "yawRate", stateInfo.getValues().getYaw_rate() ); + MarkerServiceHandler.getApis().getMapServiceApi().getMapUIController().syncLocation2Map( data ); +// SnapshotUploadInTime.getInstance().syncAdasLocationInfo( data ); + } catch ( Exception e ) { + e.printStackTrace(); + } } } diff --git a/services/mogo-service/src/main/java/com/mogo/service/impl/adas/LogWriter.java b/services/mogo-service/src/main/java/com/mogo/service/impl/adas/LogWriter.java index 66a0944c30..5f13ae7ed5 100644 --- a/services/mogo-service/src/main/java/com/mogo/service/impl/adas/LogWriter.java +++ b/services/mogo-service/src/main/java/com/mogo/service/impl/adas/LogWriter.java @@ -53,7 +53,11 @@ class LogWriter { try { FileWriter fw = new FileWriter( path, true ); fw.append( System.currentTimeMillis() + " - " ); - fw.append( GsonUtil.jsonFromObject( log ) ); + if ( log instanceof CharSequence ) { + fw.append( ( ( CharSequence ) log ) ); + } else { + fw.append( GsonUtil.jsonFromObject( log ) ); + } fw.append( "\n" ); fw.flush(); fw.close(); 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 9186b1fe16..e42d6f897a 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 @@ -54,8 +54,10 @@ import com.zhidao.support.adas.high.msg.MyMessageFactory; import org.json.JSONException; import org.json.JSONObject; +import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Arrays; +import java.util.Date; import java.util.HashMap; import java.util.Iterator; import java.util.List; @@ -123,7 +125,9 @@ public class MogoADASController implements IMogoADASController { // 物体识别返回 Logger.d( TAG, "onRectData = %s", rectInfo.toString() ); if ( logWriter == null ) { - String path = context.getExternalCacheDir().getAbsolutePath() + "/adaslog/log.txt"; + SimpleDateFormat sdf = new SimpleDateFormat( "yyyyMMddhhmmss" ); + String date = sdf.format( new Date() ); + String path = context.getExternalCacheDir().getAbsolutePath() + "/adaslog/" + date + "/log.txt"; Logger.d( TAG, path ); logWriter = new LogWriter( path ); } @@ -310,8 +314,18 @@ public class MogoADASController implements IMogoADASController { } + LogWriter logWriter; + @Override public void ownerCarStateInfo( String ownerCarStateInfo ) { + if ( logWriter == null ) { + SimpleDateFormat sdf = new SimpleDateFormat( "yyyyMMddhhmmss" ); + String date = sdf.format( new Date() ); + String path = context.getExternalCacheDir().getAbsolutePath() + "/adaslog/" + date + "/ownerCarStateInfo.txt"; + Logger.d( TAG, path ); + logWriter = new LogWriter( path ); + } + logWriter.write( ownerCarStateInfo ); ADASCarStateInfo stateInfo = GsonUtil.objectFromJson( ownerCarStateInfo, ADASCarStateInfo.class ); if ( mMogoAdasCarDataCallback != null ) { mMogoAdasCarDataCallback.onAdasCarDataCallback( stateInfo );