From 76f0095dd7fd4d357070f6eb4fef4ab242de8c11 Mon Sep 17 00:00:00 2001 From: wangcongtao Date: Mon, 8 Mar 2021 15:24:30 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E6=98=BE=E7=A4=BA=E9=80=BB?= =?UTF-8?q?=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../map/impl/custom/CustomMapApiBuilder.java | 2 +- .../drawer/AdasRecognizedResultDrawer.java | 46 ++++++-- .../mogo/module/common/drawer/BaseDrawer.java | 18 ++++ .../src/main/res/drawable/blue.png | Bin 0 -> 719 bytes .../mogo/service/impl/adas/AdasLogWriter.java | 98 ++++++++++++++++++ .../com/mogo/service/impl/adas/LogWriter.java | 2 +- .../service/impl/adas/MogoADASController.java | 76 ++++++++++++-- .../impl/adas/OnAdasListenerAdapter.java | 1 - 8 files changed, 226 insertions(+), 17 deletions(-) create mode 100644 modules/mogo-module-common/src/main/res/drawable/blue.png create mode 100644 services/mogo-service/src/main/java/com/mogo/service/impl/adas/AdasLogWriter.java 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 01893c2629..96a7bc6ef7 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 @@ -93,7 +93,7 @@ class CustomMapApiBuilder implements IMogoMapApiBuilder { @Override public IMogoMapView getMapView( Context context ) { NavAutoApi.INSTANCE.init( context, MapParams.Companion.init() - .setDebugMode( true ) + .setDebugMode( false ) .setCoordinateType( MapParams.COORDINATETYPE_GCJ02 ) .setPerspectiveMode( MapParams.MAP_PERSPECTIVE_2D ) .setZoom( 20 ) 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 476074c453..968bc4a9f6 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 @@ -1,10 +1,12 @@ package com.mogo.module.common.drawer; import android.content.Context; +import android.graphics.BitmapFactory; import android.os.Handler; import android.os.Message; import android.text.TextUtils; import android.util.ArrayMap; +import android.util.Log; import com.mogo.commons.AbsMogoApplication; import com.mogo.map.MogoLatLng; @@ -39,6 +41,7 @@ class AdasRecognizedResultDrawer extends BaseDrawer { private Handler pointSettingHandler = null; public static final int MSG_POINTS_SETTING = 9; public static final int MSG_SET_POINT = 10; + public static final int MSG_SET_SPEED = 11; private AdasRecognizedResultDrawer() { super(); @@ -59,6 +62,14 @@ class AdasRecognizedResultDrawer extends BaseDrawer { if ( msg.obj instanceof PointData ) { moveMarker( ( ( PointData ) msg.obj ) ); } + } else if( msg.what == MSG_SET_SPEED ){ + if ( msg.obj instanceof SpeedData ) { + try { + ( ( SpeedData ) msg.obj ).showSpeed(); + } catch ( Exception e ) { + e.printStackTrace(); + } + } } } }; @@ -79,6 +90,8 @@ class AdasRecognizedResultDrawer extends BaseDrawer { } } + private String markerRes; + /** * 设置 marker 的点到新的位置 * @@ -88,7 +101,25 @@ class AdasRecognizedResultDrawer extends BaseDrawer { if ( pointData == null ) { return; } - pointData.move(); + try { + pointData.move(); +// MogoMarkerOptions options = new MogoMarkerOptions(); +// options.gps( true ) +// .position( pointData.point) +// .anchor( 0.5f, 0.5f ) +// .rotate( pointData.angle); +// if ( TextUtils.isEmpty( markerRes ) ) { +// options.icon( BitmapFactory.decodeResource( mContext.getResources(), R.drawable.blue ) ); +// }else { +// options.resName( markerRes ); +// } +// IMogoMarker marker = MogoApisHandler.getInstance().getApis().getMapServiceApi().getMarkerManager( mContext ).addMarker( TAG, options ); +// if ( TextUtils.isEmpty( markerRes ) ) { +// markerRes = marker.getMarkerResName(); +// } + } catch ( Exception e ) { + e.printStackTrace(); + } } private final Map< String, ADASRecognizedResult > mLastPositions = new ConcurrentHashMap<>(); @@ -221,11 +252,14 @@ class AdasRecognizedResultDrawer extends BaseDrawer { marker.setRotateAngle( ( ( float ) recognizedListResult.heading ) ); marker.setPosition( recognizedListResult.lat, recognizedListResult.lon ); } - showSelfSpeed( mContext, - marker, - recognizedListResult.speed, - MogoApisHandler.getInstance().getApis().getStatusManagerApi().isVrMode() - ); + Message msg = new Message(); + SpeedData obj = new SpeedData(); + obj.context = mContext; + obj.marker = marker; + obj.speed = recognizedListResult.speed; + msg.obj = obj; + msg.what = MSG_SET_SPEED; + pointSettingHandler.sendMessage( msg ); } /** diff --git a/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/BaseDrawer.java b/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/BaseDrawer.java index 16fe1e7a4f..6df6d8fec1 100644 --- a/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/BaseDrawer.java +++ b/modules/mogo-module-common/src/main/java/com/mogo/module/common/drawer/BaseDrawer.java @@ -276,4 +276,22 @@ class BaseDrawer { public static class SettingData { public List< PointData > points; } + + public class SpeedData { + + public IMogoMarker marker; + public Context context; + double speed; + + public void showSpeed() { + try { + showSelfSpeed( context, + marker, + speed, + MogoApisHandler.getInstance().getApis().getStatusManagerApi().isVrMode() ); + } catch ( Exception e ) { + e.printStackTrace(); + } + } + } } diff --git a/modules/mogo-module-common/src/main/res/drawable/blue.png b/modules/mogo-module-common/src/main/res/drawable/blue.png new file mode 100644 index 0000000000000000000000000000000000000000..a2357a6be6417209bda7465d3e57a631418b5fc8 GIT binary patch literal 719 zcmeAS@N?(olHy`uVBq!ia0vp^96-#;!3HGxgLCzO6id3JuOkD)#(wTUiL5}rLb6AY zF9SoB8UsT^3j@P1pisjL28L1t28LG&3=CE?7#PG0=Ijcz0ZMQdctjR6FmMZlFeAgP zIT8#EjFFik5hW46K32*3xq68y`AMmI6}bgK)eHl#hD=EpgRf_NpP;kyKN>wn`Gto0pvg1-vP_QXVNwW%aaf50H@@$ndN=gc> z^!3Zj%k|2Q_413-^$jg8E%gnI^o@*kfhu&1EAvVcD|GXUl_7?}%yCIAPAT^vIsByIgR`Y}0* z%-P=UzGKDS`3|m*860zadCOS#9}eT@;hNbX zT%!E logLine = new LinkedBlockingQueue<>(); + + public void write(String log) { + if (!isWritting) { + start(); + } + logLine.offer(log == null ? System.currentTimeMillis() + ",null\r\n" : System.currentTimeMillis() + "," + log + "\r\n"); + } + + public void write(Object object){ + if (!isWritting) { + start(); + } + String json = GsonUtil.jsonFromObject( object ); + if ( json != null ) { + logLine.offer( json ); + } + } + + private volatile boolean isWritting = false; + + @Override + public synchronized void start() { + if(!isWritting) { + isWritting = true; + SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd-HH-mm-ss", Locale.CHINA); + path = dir + "/log_" + format.format(new Date()); + super.start(); + } + } + + public synchronized void stopLog() { + isWritting = false; + interrupt(); + } + + @Override + public void run() { + super.run(); + File fileDir = new File(dir); + File logFile = new File(path); + if (!fileDir.exists()) { + fileDir.mkdirs(); + } + try (FileOutputStream outputStream = new FileOutputStream(logFile)) { + while (isWritting) { + if (isInterrupted()) { + break; + } + String log = logLine.take(); + outputStream.write(log.getBytes()); + } + } catch (InterruptedException e) { + Logger.w(TAG, "writter interrupt: " + e.getMessage()); + e.printStackTrace(); + } catch (IOException e) { + Logger.w(TAG, "writter io exp: " + e.getMessage()); + 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 652f39ea53..faea27080a 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 @@ -43,7 +43,7 @@ class LogWriter { public void handleMessage( Message msg ) { super.handleMessage( msg ); if ( msg.what == 100 ) { - writeImpl( ( ( String ) msg.obj ) ); + writeImpl( msg.obj ); } } }; 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 952a0e198c..139a85d722 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 @@ -55,7 +55,9 @@ 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.Date; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -111,6 +113,42 @@ public class MogoADASController implements IMogoADASController { private final OnAdasListener mOnAdasListener = new OnAdasListenerAdapter() { + @Override + public void onRectData( RectInfo rectInfo ) { + List< AdasAIDLOwnerCarRectModel > data = new ArrayList<>(); + if ( rectInfo != null && rectInfo.getModels() != null && !rectInfo.getModels().isEmpty() ) { + List< RectInfo.RectBean > beans = rectInfo.getModels(); + for ( RectInfo.RectBean bean : beans ) { + if ( bean == null ) { + continue; + } + AdasAIDLOwnerCarRectModel model = new AdasAIDLOwnerCarRectModel(); + model.setId( bean.getId() ); + model.setXl( bean.getXl() ); + model.setXr( bean.getXr() ); + model.setYb( bean.getYb() ); + model.setYt( bean.getYt() ); + model.setDistance_x( bean.getDistance_x() ); + model.setDistance_y( bean.getDistance_y() ); + model.setType( bean.getType() ); + model.setLat( bean.getLat() ); + model.setLon( bean.getLon() ); + model.setHeading( bean.getHeading() ); + model.setSystemTime( bean.getSystemTime() ); + model.setSatelliteTime( bean.getSatelliteTime() ); + model.setAlt( bean.getAlt() ); + model.setCarId( bean.getCarId() ); + model.setUuid( bean.getUuid() ); + model.setColor( bean.getColor() ); + model.setSpeed( bean.getSpeed() ); + model.setDataAccuracy( bean.getDataAccuracy() ); + model.setDistance( bean.getDistance() ); + data.add( model ); + } + } + mAutopolitDataCallBack.notifyOwnerCarRect( data ); + } + @Override public void onWarnMessage( WarnMessageInfo warnMessageInfo ) { if ( warnMessageInfo == null ) { @@ -126,9 +164,9 @@ public class MogoADASController implements IMogoADASController { return; } UiThreadHandler.post( () -> { - for (IMogoAdasWarnMessageCallback callback : mMogoAdasWarnMessageCallbackList) { - if (callback != null) { - callback.onReceiveData(warnMessage); + for ( IMogoAdasWarnMessageCallback callback : mMogoAdasWarnMessageCallbackList ) { + if ( callback != null ) { + callback.onReceiveData( warnMessage ); } } } ); @@ -139,6 +177,7 @@ public class MogoADASController implements IMogoADASController { /** * 处理数据 + * * @param models */ private void handleAdasRecognizedData( List< AdasAIDLOwnerCarRectModel > models ) { @@ -151,7 +190,7 @@ public class MogoADASController implements IMogoADASController { } private void invokeCallbackPerSecond( List< AdasAIDLOwnerCarRectModel > models ) { - List recognizedListResults = AdasObjectUtils.regroupData(models); + List< ADASRecognizedResult > recognizedListResults = AdasObjectUtils.regroupData( models ); if ( !mMogoAdasRecognizedDataCallbacks.isEmpty() ) { for ( IMogoAdasRecognizedDataCallback callback : mMogoAdasRecognizedDataCallbacks ) { if ( callback == null ) { @@ -221,6 +260,7 @@ public class MogoADASController implements IMogoADASController { @Override public void cameraEyeDetectResult( String detectResult ) { + try { JSONObject jsonObjectWs = new JSONObject( detectResult ); String action = jsonObjectWs.optString( "action" ); @@ -289,11 +329,21 @@ public class MogoADASController implements IMogoADASController { @Override @Deprecated public void ownerCarStateInfo( String ownerCarStateInfo ) { + final long start = System.currentTimeMillis(); + ADASCarStateInfo stateInfo = GsonUtil.objectFromJson( ownerCarStateInfo, ADASCarStateInfo.class ); + if ( stateInfo == null || stateInfo.getValues() == null ) { + return; + } + mLastLon = stateInfo.getValues().getLon(); + mLastLat = stateInfo.getValues().getLat(); + if ( mMogoAdasCarDataCallback != null ) { + mMogoAdasCarDataCallback.onAdasCarDataCallback( stateInfo ); + } + Logger.i( "ADAS-LOC-timer", "cost " + ( System.currentTimeMillis() - start ) + "ms" ); } @Override public void notifyOwnerCarState( AdasAIDLOwnerCarStateModel ownerCarStateModel ) { - final long start = System.currentTimeMillis(); ADASCarStateInfo stateInf = new ADASCarStateInfo(); stateInf.setAction( "state" ); ADASCarStateInfo.ValuesBean bean = new ADASCarStateInfo.ValuesBean(); @@ -313,7 +363,6 @@ public class MogoADASController implements IMogoADASController { if ( mMogoAdasCarDataCallback != null ) { mMogoAdasCarDataCallback.onAdasCarDataCallback( stateInf ); } - Logger.i("ADAS-LOC-timer", "cost " + (System.currentTimeMillis() - start) + "ms"); } @Override @@ -324,10 +373,21 @@ public class MogoADASController implements IMogoADASController { } } + private LogWriter logWriter; + @Override public void notifyOwnerCarRect( List< AdasAIDLOwnerCarRectModel > ownerCarStateRectList ) { + + 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( ownerCarStateRectList ); // 物体识别返回 - Logger.d( TAG, "ADAS-REC-received data: size = %s", ownerCarStateRectList==null?0:ownerCarStateRectList.size() ); + Logger.d( TAG, "ADAS-REC-received data: size = %s", ownerCarStateRectList == null ? 0 : ownerCarStateRectList.size() ); final long start = System.currentTimeMillis(); if ( mLastFrameData == null ) { mLastFrameData = new ArrayList<>(); @@ -349,7 +409,7 @@ public class MogoADASController implements IMogoADASController { } catch ( Exception e ) { e.printStackTrace(); } - Logger.i("ADAS-REC-timer", "cost " + (System.currentTimeMillis() - start) + "ms"); + Logger.i( "ADAS-REC-timer", "cost " + ( System.currentTimeMillis() - start ) + "ms" ); } }; AutopilotServiceManage.getInstance().registerAutopilotDataListener( mAutopolitDataCallBack ); diff --git a/services/mogo-service/src/main/java/com/mogo/service/impl/adas/OnAdasListenerAdapter.java b/services/mogo-service/src/main/java/com/mogo/service/impl/adas/OnAdasListenerAdapter.java index a59b38b850..9e878c3d5d 100644 --- a/services/mogo-service/src/main/java/com/mogo/service/impl/adas/OnAdasListenerAdapter.java +++ b/services/mogo-service/src/main/java/com/mogo/service/impl/adas/OnAdasListenerAdapter.java @@ -30,7 +30,6 @@ abstract class OnAdasListenerAdapter implements OnAdasListener { } @Override - @Deprecated public void onRectData( RectInfo rectInfo ) { }