add adas aidl new interface

This commit is contained in:
wangcongtao
2021-02-04 13:34:56 +08:00
parent 95f3ba981d
commit 1f6618920a
8 changed files with 84 additions and 197 deletions

View File

@@ -1,19 +1,14 @@
package com.mogo.service.impl.adas;
import android.text.TextUtils;
import com.mogo.commons.utils.MortonCode;
import com.mogo.service.adas.entity.ADASRecognizedListResult;
import com.mogo.service.adas.entity.ADASRecognizedResult;
import com.mogo.service.adas.entity.ADASWarnMessage;
import com.mogo.utils.CoordinateUtils;
import com.zhidao.support.adas.high.bean.RectInfo;
import com.zhidao.autopilotservice.model.AdasAIDLOwnerCarRectModel;
import com.zhidao.support.adas.high.bean.WarnMessageInfo;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public
/**
@@ -40,89 +35,47 @@ class AdasObjectUtils {
return warnMessage;
}
public static List< ADASRecognizedResult > fromAdasObject( RectInfo rectInfo ) {
if ( rectInfo == null
|| rectInfo.getModels() == null
|| rectInfo.getModels().isEmpty() ) {
return null;
}
List< ADASRecognizedResult > recognizedResults = new ArrayList<>();
for ( RectInfo.RectBean model : rectInfo.getModels() ) {
try {
ADASRecognizedResult result = fromAdasObject( model );
if ( result != null ) {
recognizedResults.add( result );
}
} catch ( Exception e ) {
}
}
return recognizedResults;
}
public static ADASRecognizedResult fromAdasObject( RectInfo.RectBean rectBean ) {
if ( rectBean == null ) {
return null;
}
if ( rectBean.getLat() < 1 ) {
return null;
}
ADASRecognizedResult result = new ADASRecognizedResult();
result.uuid = rectBean.getUuid();
double amapCoord[] = CoordinateUtils.transformWgsToGcj( rectBean.getLat(), rectBean.getLon() );
if ( amapCoord != null ) {
result.lat = amapCoord[1];
result.lon = amapCoord[0];
} else {
result.lat = rectBean.getLat();
result.lon = rectBean.getLon();
}
result.type = Integer.valueOf( rectBean.getType() );
result.heading = rectBean.getHeading();
result.systemTime = Long.valueOf( rectBean.getSystemTime() );
result.satelliteTime = Long.valueOf( rectBean.getSatelliteTime() );
result.alt = rectBean.getAlt();
result.color = rectBean.getColor();
result.speed = rectBean.getSpeed();
result.carId = rectBean.getCarId();
result.mortonCode = MortonCode.wrapEncodeMorton( result.lon, result.lat );
return result;
}
public static List< ADASRecognizedListResult > regroupData( List< RectInfo > datums ) {
public static List< ADASRecognizedResult > regroupData( List< AdasAIDLOwnerCarRectModel > datums ) {
if ( datums == null || datums.isEmpty() ) {
return null;
}
List< ADASRecognizedListResult > recognizedListResults = new ArrayList<>();
for ( RectInfo rectInfo : datums ) {
if ( rectInfo == null || rectInfo.getModels() == null || rectInfo.getModels().isEmpty() ) {
List< ADASRecognizedResult > recognizedListResults = new ArrayList<>();
for ( AdasAIDLOwnerCarRectModel model : datums ) {
if ( model == null ) {
continue;
}
for ( RectInfo.RectBean model : rectInfo.getModels() ) {
if ( model == null || TextUtils.isEmpty( model.getUuid() ) ) {
continue;
}
ADASRecognizedListResult recognizedListResult = new ADASRecognizedListResult();
recognizedListResult.heading = model.getHeading();
recognizedListResult.speed = model.getSpeed();
recognizedListResult.type = Integer.valueOf( model.getType() );
recognizedListResult.uuid = model.getUuid();
recognizedListResult.distanceX = model.getDistance_x();
recognizedListResult.distanceY = model.getDistance_y();
double amapCoord[] = CoordinateUtils.transformWgsToGcj( model.getLat(), model.getLon() );
recognizedListResult.lat = amapCoord[1];
recognizedListResult.lon = amapCoord[0];
try {
recognizedListResult.systemTime = Long.valueOf( model.getSystemTime() );
} catch ( Exception e ) {
recognizedListResult.systemTime = System.currentTimeMillis();
}
ADASRecognizedResult recognizedListResult = fromAdasObject( model );
if ( recognizedListResult != null ) {
recognizedListResults.add( recognizedListResult );
}
}
return recognizedListResults;
}
public static ADASRecognizedResult fromAdasObject( AdasAIDLOwnerCarRectModel model ) {
if ( model == null ) {
return null;
}
ADASRecognizedResult result = new ADASRecognizedResult();
result.uuid = model.getUuid();
double amapCoord[] = CoordinateUtils.transformWgsToGcj( model.getLat(), model.getLon() );
if ( amapCoord != null ) {
result.lat = amapCoord[1];
result.lon = amapCoord[0];
} else {
result.lat = model.getLat();
result.lon = model.getLon();
}
result.type = Integer.valueOf( model.getType() );
result.heading = model.getHeading();
result.systemTime = Long.valueOf( model.getSystemTime() );
result.satelliteTime = Long.valueOf( model.getSatelliteTime() );
result.alt = model.getAlt();
result.color = model.getColor();
result.speed = model.getSpeed();
result.carId = model.getCarId();
result.mortonCode = MortonCode.wrapEncodeMorton( result.lon, result.lat );
return result;
}
}

View File

@@ -8,14 +8,11 @@ import android.util.Log;
import com.alibaba.android.arouter.facade.annotation.Route;
import com.mogo.commons.AbsMogoApplication;
import com.mogo.commons.context.ContextHolderUtil;
import com.mogo.commons.debug.DebugConfig;
import com.mogo.commons.network.SubscribeImpl;
import com.mogo.commons.network.Utils;
import com.mogo.map.uicontroller.EnumMapUI;
import com.mogo.module.common.MogoApisHandler;
import com.mogo.module.common.MogoModule;
import com.mogo.module.common.MogoModulePaths;
import com.mogo.module.common.map.MyLocationUtil;
import com.mogo.module.common.utils.CarSeries;
import com.mogo.service.MogoServicePaths;
@@ -26,7 +23,6 @@ import com.mogo.service.adas.IMogoAdasRecognizedDataCallback;
import com.mogo.service.adas.IMogoAdasWarnMessageCallback;
import com.mogo.service.adas.RemoteControlAutoPilotParameters;
import com.mogo.service.adas.entity.ADASCarStateInfo;
import com.mogo.service.adas.entity.ADASRecognizedListResult;
import com.mogo.service.adas.entity.ADASRecognizedResult;
import com.mogo.service.adas.entity.ADASWarnMessage;
import com.mogo.service.impl.singleton.SingletonsHolder;
@@ -46,9 +42,9 @@ import com.zhidao.autopilot.support.api.IAutopilotServiceStatusListener;
import com.zhidao.autopilot.support.api.IAutopolitDataCallBack;
import com.zhidao.autopilotservice.model.AdasAIDLAutopilotArriveModel;
import com.zhidao.autopilotservice.model.AdasAIDLAutopilotStateModel;
import com.zhidao.autopilotservice.model.AdasAIDLOwnerCarRectModel;
import com.zhidao.autopilotservice.model.AdasAIDLOwnerCarStateModel;
import com.zhidao.support.adas.high.OnAdasListener;
import com.zhidao.support.adas.high.bean.CarStateInfo;
import com.zhidao.support.adas.high.bean.RectInfo;
import com.zhidao.support.adas.high.bean.WarnMessageInfo;
import com.zhidao.support.adas.high.msg.MyMessageFactory;
@@ -56,19 +52,15 @@ 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.Arrays;
import java.util.Date;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.concurrent.CopyOnWriteArrayList;
import io.reactivex.schedulers.Schedulers;
import java.util.concurrent.CopyOnWriteArrayList;
import static com.mogo.module.common.utils.SPConst.getSpGuide;
/**
@@ -116,33 +108,12 @@ public class MogoADASController implements IMogoADASController {
private IMogoAdasCarDataCallback mMogoAdasCarDataCallback;
private RectInfo mLastFrameData;
private List< AdasAIDLOwnerCarRectModel > mLastFrameData;
private OnAdasListener mOnAdasListener = new OnAdasListenerAdapter() {
LogWriter logWriter = null;
@Override
public void onRectData( RectInfo rectInfo ) {
// 物体识别返回
Logger.d( TAG, "onRectData = %s", rectInfo.toString() );
if ( logWriter == null ) {
SimpleDateFormat sdf = new SimpleDateFormat( "yyyyMMddhhmmss" );
String date = sdf.format( new Date() );
String path = context.getExternalCacheDir().getAbsolutePath() + "/adaslog/" + date + "/log.txt";
Logger.d( TAG, path );
logWriter = new LogWriter( path );
}
mLastFrameData = rectInfo;
logWriter.write( GsonUtil.jsonFromObject( rectInfo ) );
// 仅在 vr 模式下显示 adas 识别车辆
if ( !MogoApisHandler.getInstance().getApis().getStatusManagerApi().isVrMode() ) {
return;
}
if ( !MogoApisHandler.getInstance().getApis().getStatusManagerApi().isMainPageLaunched() ) {
return;
}
handleAdasRecognizedData( rectInfo );
}
@Override
@@ -175,21 +146,20 @@ public class MogoADASController implements IMogoADASController {
* 处理数据将识别到的物体分组然后每1s进行一次回调
* 时间:系统时间
*
* @param rectInfo
* @param models
*/
private void handleAdasRecognizedData( RectInfo rectInfo ) {
if ( rectInfo == null
|| rectInfo.getModels() == null
|| rectInfo.getModels().isEmpty() ) {
private void handleAdasRecognizedData( List< AdasAIDLOwnerCarRectModel > models ) {
if ( models == null
|| models.isEmpty() ) {
invokeCallbackPerSecond( null );
return;
}
invokeCallbackPerSecond( Arrays.asList( rectInfo ) );
invokeCallbackPerSecond( models );
}
private void invokeCallbackPerSecond( List< RectInfo > data ) {
List< RectInfo > newRef = data;
List< ADASRecognizedListResult > recognizedListResults = AdasObjectUtils.regroupData( newRef );
private void invokeCallbackPerSecond( List< AdasAIDLOwnerCarRectModel > models ) {
List< AdasAIDLOwnerCarRectModel > newRef = models;
List< ADASRecognizedResult > recognizedListResults = AdasObjectUtils.regroupData( newRef );
if ( !mMogoAdasRecognizedDataCallbacks.isEmpty() ) {
for ( IMogoAdasRecognizedDataCallback callback : mMogoAdasRecognizedDataCallbacks ) {
if ( callback == null ) {
@@ -316,22 +286,9 @@ public class MogoADASController implements IMogoADASController {
}
// LogWriter logWriter;
@Override
@Deprecated
public void ownerCarStateInfo( String ownerCarStateInfo ) {
// 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( ownerCarStateInfo );
// ADASCarStateInfo stateInfo = GsonUtil.objectFromJson( ownerCarStateInfo, ADASCarStateInfo.class );
// if ( mMogoAdasCarDataCallback != null ) {
// mMogoAdasCarDataCallback.onAdasCarDataCallback( stateInfo );
// }
}
@Override
@@ -359,6 +316,21 @@ public class MogoADASController implements IMogoADASController {
mMogoAdasCarDataCallback.onAdasCarDataCallback( stateInf );
}
}
@Override
public void notifyOwnerCarRect( List< AdasAIDLOwnerCarRectModel > ownerCarStateRectList ) {
// 物体识别返回
Logger.d( TAG, "onRectData = %s", ownerCarStateRectList.toString() );
mLastFrameData = ownerCarStateRectList;
// 仅在 vr 模式下显示 adas 识别车辆
if ( !MogoApisHandler.getInstance().getApis().getStatusManagerApi().isVrMode() ) {
return;
}
if ( !MogoApisHandler.getInstance().getApis().getStatusManagerApi().isMainPageLaunched() ) {
return;
}
handleAdasRecognizedData( ownerCarStateRectList );
}
};
AutopilotServiceManage.getInstance().registerAutopilotDataListener( mAutopolitDataCallBack );
}
@@ -611,10 +583,10 @@ public class MogoADASController implements IMogoADASController {
@Override
public List< ADASRecognizedResult > getLastADASRecognizedResult() {
RectInfo rectInfo = mLastFrameData;
List< AdasAIDLOwnerCarRectModel > data = mLastFrameData;
List< ADASRecognizedResult > recognizedResultList = null;
try {
recognizedResultList = AdasObjectUtils.fromAdasObject( rectInfo );
recognizedResultList = AdasObjectUtils.regroupData( data );
return recognizedResultList;
} catch ( Exception e ) {
return null;

View File

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