优化显示逻辑

This commit is contained in:
wangcongtao
2021-03-17 14:03:34 +08:00
parent 610e7d56cf
commit 16145c5586
8 changed files with 173 additions and 93 deletions

View File

@@ -3,6 +3,8 @@ package com.mogo.service.impl.adas;
import android.app.Application;
import android.content.Context;
import android.content.Intent;
import android.os.Handler;
import android.os.Message;
import android.os.RemoteException;
import android.text.TextUtils;
import android.util.Log;
@@ -32,6 +34,7 @@ import com.mogo.service.network.IMogoNetwork;
import com.mogo.service.statusmanager.IMogoStatusManager;
import com.mogo.utils.TipToast;
import com.mogo.utils.UiThreadHandler;
import com.mogo.utils.WorkThreadHandler;
import com.mogo.utils.logger.Logger;
import com.mogo.utils.network.RequestOptions;
import com.mogo.utils.network.utils.GsonUtil;
@@ -111,42 +114,80 @@ public class MogoADASController implements IMogoADASController {
private List< AdasAIDLOwnerCarRectModel > mLastFrameData;
/**
* 接收 adas 识别数据线程
*/
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 );
}
}
};
/**
* 接收 adas 定位数据线程
*/
private Handler mAdasLocationRecHandler = new Handler( WorkThreadHandler.newInstance( "AdasLocationRecThread" ).getLooper() ){
@Override
public void handleMessage( Message msg ) {
super.handleMessage( msg );
final long start = System.currentTimeMillis();
ADASCarStateInfo stateInfo = GsonUtil.objectFromJson( ( ( String ) msg.obj ), ADASCarStateInfo.class );
Logger.d( "ADAS-LOC-timer", "upd 到 aidl 传输耗时:%s", start - Long.valueOf( stateInfo.getValues().getStartReceiverDataTime() ) );
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" );
}
};
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 );
Message message = mAdasRecognizedRecHandler.obtainMessage();
message.obj = rectInfo;
message.sendToTarget();
}
@Override
@@ -328,18 +369,9 @@ public class MogoADASController implements IMogoADASController {
@Override
public void ownerCarStateInfo( String ownerCarStateInfo ) {
final long start = System.currentTimeMillis();
ADASCarStateInfo stateInfo = GsonUtil.objectFromJson( ownerCarStateInfo, ADASCarStateInfo.class );
Logger.d( "ADAS-LOC-timer", "upd 到 aidl 传输耗时:%s", start - Long.valueOf( stateInfo.getValues().getStartReceiverDataTime() ) );
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" );
Message message = mAdasLocationRecHandler.obtainMessage();
message.obj = ownerCarStateInfo;
message.sendToTarget();
}
@Override