优化显示逻辑

This commit is contained in:
wangcongtao
2021-03-08 15:24:30 +08:00
parent 781c13ff7e
commit 76f0095dd7
8 changed files with 226 additions and 17 deletions

View File

@@ -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 )

View File

@@ -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 );
}
/**

View File

@@ -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();
}
}
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 719 B

View File

@@ -0,0 +1,98 @@
package com.mogo.service.impl.adas;
import android.content.Context;
import android.os.Environment;
import com.mogo.utils.logger.Logger;
import com.mogo.utils.network.utils.GsonUtil;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;
import java.util.concurrent.BlockingQueue;
import java.util.concurrent.LinkedBlockingQueue;
/**
* Adas上报日志本地保存帮助类
*
* @author tongchenfei
*/
public class AdasLogWriter extends Thread {
private static final String TAG = "AdasLogWritter";
private String path;
private final String dir;
public AdasLogWriter( Context context) {
if (Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState()) || !Environment.isExternalStorageRemovable()) {
dir = context.getExternalCacheDir().getPath()+"/mogoAdasLog";
} else {
dir = context.getCacheDir().getPath()+"/mogoAdasLog";
}
Logger.d(TAG, "log dir: " + dir);
}
private final BlockingQueue<String> 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();
}
}
}

View File

@@ -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 );
}
}
};

View File

@@ -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<ADASRecognizedResult> 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 );

View File

@@ -30,7 +30,6 @@ abstract class OnAdasListenerAdapter implements OnAdasListener {
}
@Override
@Deprecated
public void onRectData( RectInfo rectInfo ) {
}