优化显示逻辑
This commit is contained in:
@@ -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 )
|
||||
|
||||
@@ -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 );
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
BIN
modules/mogo-module-common/src/main/res/drawable/blue.png
Normal file
BIN
modules/mogo-module-common/src/main/res/drawable/blue.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 719 B |
@@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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 );
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
@@ -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 );
|
||||
|
||||
@@ -30,7 +30,6 @@ abstract class OnAdasListenerAdapter implements OnAdasListener {
|
||||
}
|
||||
|
||||
@Override
|
||||
@Deprecated
|
||||
public void onRectData( RectInfo rectInfo ) {
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user