优化显示逻辑

This commit is contained in:
wangcongtao
2021-03-17 18:41:24 +08:00
parent 16145c5586
commit 9654a8d5a1
11 changed files with 267 additions and 53 deletions

View File

@@ -112,49 +112,17 @@ public class MogoADASController implements IMogoADASController {
private IMogoAdasCarDataCallback mMogoAdasCarDataCallback;
private List< AdasAIDLOwnerCarRectModel > mLastFrameData;
private List< AdasAIDLOwnerCarRectModel > mLastFrameDatums;
/**
* 接收 adas 识别数据线程
*/
private Handler mAdasRecognizedRecHandler = new Handler( WorkThreadHandler.newInstance( "AdasRecognizedRecThread" ).getLooper() ){
private Handler mAdasRecognizedRecHandler = new Handler( WorkThreadHandler.newInstance( "AdasRecognizedRecThread" ).getLooper() ) {
@Override
public void handleMessage( Message msg ) {
super.handleMessage( msg );
if ( msg.obj instanceof RectInfo ) {
RectInfo rectInfo = ( ( RectInfo ) msg.obj );
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 );
if ( msg.obj instanceof List ) {
mAutopolitDataCallBack.notifyOwnerCarRect( ( List< AdasAIDLOwnerCarRectModel > ) msg.obj );
}
}
};
@@ -162,7 +130,7 @@ public class MogoADASController implements IMogoADASController {
/**
* 接收 adas 定位数据线程
*/
private Handler mAdasLocationRecHandler = new Handler( WorkThreadHandler.newInstance( "AdasLocationRecThread" ).getLooper() ){
private Handler mAdasLocationRecHandler = new Handler( WorkThreadHandler.newInstance( "AdasLocationRecThread" ).getLooper() ) {
@Override
public void handleMessage( Message msg ) {
super.handleMessage( msg );
@@ -185,9 +153,52 @@ public class MogoADASController implements IMogoADASController {
@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 );
}
}
if ( mLastFrameDatums == null ) {
mLastFrameDatums = new ArrayList<>();
}
try {
mLastFrameDatums.addAll( data );
} catch ( Exception e ) {
}
Message message = mAdasRecognizedRecHandler.obtainMessage();
message.obj = rectInfo;
message.obj = data;
message.sendToTarget();
DebugConfig.setStatus( DebugConfig.sAdasRecognized, true );
}
@Override
@@ -400,6 +411,7 @@ public class MogoADASController implements IMogoADASController {
@Override
public void notifyAutopilotState( AdasAIDLAutopilotStateModel autopilotStateModel ) {
Logger.d( TAG, "notifyAutopilotState: " + autopilotStateModel );
DebugConfig.setAutoPilotStatus( autopilotStateModel.getState() + "" );
if ( mAdasOCHCallback != null ) {
mAdasOCHCallback.onStateChanged( autopilotStateModel.getState(), autopilotStateModel.getReason() );
}
@@ -421,14 +433,6 @@ public class MogoADASController implements IMogoADASController {
// 物体识别返回
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<>();
}
try {
mLastFrameData.addAll( ownerCarStateRectList );
} catch ( Exception e ) {
}
// 仅在 vr 模式下显示 adas 识别车辆
if ( !SingletonsHolder.get( IMogoStatusManager.class ).isVrMode() ) {
return;
@@ -706,12 +710,12 @@ public class MogoADASController implements IMogoADASController {
@Override
public List< ADASRecognizedResult > getLastADASRecognizedResult() {
if ( mLastFrameData == null ) {
if ( mLastFrameDatums == null ) {
return null;
}
try {
List< AdasAIDLOwnerCarRectModel > data = new ArrayList<>( mLastFrameData );
mLastFrameData = null;
List< AdasAIDLOwnerCarRectModel > data = mLastFrameDatums;
mLastFrameDatums = null;
List< ADASRecognizedResult > recognizedResultList;
recognizedResultList = AdasObjectUtils.regroupData( data );
return recognizedResultList;