优化显示逻辑

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

@@ -765,7 +765,7 @@ public class AMapViewWrapper implements IMogoMapView,
}
private TextView mSpeedView = null;
private int mLastYOffset = 40;
private int mLastYOffset = 10;
private void showSelfSpeed(float speed) {
@@ -789,9 +789,9 @@ public class AMapViewWrapper implements IMogoMapView,
String speedVal = String.valueOf(speedIntVal);
String infoResName = ResIdCache.getVal(speedVal);
int offset = 40;
int offset = 10;
if ( !mMapView.getMapAutoViewHelper().getLockMode() ) {
offset = 10;
offset = 30;
}
if ( offset != mLastYOffset ) {
mLastYOffset = offset;
@@ -909,6 +909,8 @@ public class AMapViewWrapper implements IMogoMapView,
mCurrentUI = EnumMapUI.Type_Night;
} else if (i == MapAutoApi.MAP_STYLE_VR) {
mCurrentUI = EnumMapUI.Type_VR;
// 进入vr模式的时候自动切换到车头朝上
change2CarUp();
}
// else if ( i == MapAutoApi.MAP_PERSPECTIVE_2D ) {
// mCurrentUI = EnumMapUI.CarUp_2D;
@@ -947,6 +949,13 @@ public class AMapViewWrapper implements IMogoMapView,
}
}
/**
* 切换到车头朝上
*/
private void change2CarUp(){
mMapView.getMapAutoViewHelper().setMapViewPerspective(MapAutoApi.MAP_PERSPECTIVE_UP_CAR);
}
@Override
public void testGpsData() {
GpsTester.getInstance().testGpsData();

View File

@@ -84,7 +84,7 @@ public class AnimCircleImageView extends ImageView implements IMogoSkinCompatSup
@Override
public void setImageResource(int resId) {
super.setImageResource(resId);
Log.d("AnimCircle", "setImageResource: " + MogoSkinCompatHelperDelegate.isSupport());
// Log.d("AnimCircle", "setImageResource: " + MogoSkinCompatHelperDelegate.isSupport());
imageHelper.setImageResource(resId);
mDrawbleSrc = getDrawable();
output = null;

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -557,10 +557,12 @@ public class MockIntentHandler implements IntentHandler {
SnapshotSetDataDrawer.getInstance().renderSnapshotData( GsonUtil.objectFromJson( json, MogoSnapshotSetData.class ) );
break;
case 47:
mLocationMockHandler.sendEmptyMessageDelayed( 1, 4000L );
// mLocationMockHandler1.sendEmptyMessageDelayed( 1, 4000L );
// mLocationMockHandler.sendEmptyMessageDelayed( 2, 0 );
// mLocationMockHandler.sendEmptyMessageDelayed( 21, 200 );
mLocationMockHandler.sendEmptyMessageDelayed( 3, 0L );
// mLocationMockHandler.sendEmptyMessageDelayed( 3, 0L );
mTimeTickHandler.sendEmptyMessageDelayed( 1, 0L );
// mLocationMockHandler.sendEmptyMessageDelayed( 31, 2000L );
// mLocationMockHandler.sendEmptyMessageDelayed( 5, 0L );
break;
@@ -569,16 +571,16 @@ public class MockIntentHandler implements IntentHandler {
.owner( DataTypes.TYPE_MARKER_ADAS )
.anchor( 0.5f, 0.5f )
.set3DMode( true )
.position( new MogoLatLng( 39.981971055705,116.41150648393 ) )
.position( new MogoLatLng( 39.981971055705, 116.41150648393 ) )
.gps( true )
.controlAngle( true )
.icon3DRes( R.raw.othercar )
.rotate( ( float ) 358.526123 );
IMogoMarker marker = MogoApisHandler.getInstance().getApis().getMapServiceApi().getMarkerManager( context ).addMarker( DataTypes.TYPE_MARKER_ADAS, options );
List<MogoLatLng> latLngs = new ArrayList<>( );
latLngs.add( new MogoLatLng( 39.981971055705,116.41150648393 ) );
latLngs.add( new MogoLatLng( 39.981990561932,116.412893641626 ) );
marker.startSmoothInMs(latLngs, 20_000L );
List< MogoLatLng > latLngs = new ArrayList<>();
latLngs.add( new MogoLatLng( 39.981971055705, 116.41150648393 ) );
latLngs.add( new MogoLatLng( 39.981990561932, 116.412893641626 ) );
marker.startSmoothInMs( latLngs, 20_000L );
break;
case 49:
// 39.96741320378243, 116.41045709250723
@@ -590,27 +592,27 @@ public class MockIntentHandler implements IntentHandler {
.position( new MogoLatLng( 39.96741320378243, 116.41045709250723 ) )
.gps( true )
.controlAngle( false )
.icon(BitmapFactory.decodeResource( context.getResources(), R.drawable.sy ) )
.icon( BitmapFactory.decodeResource( context.getResources(), R.drawable.sy ) )
.rotate( ( float ) 358.526123 );
IMogoMarker marker1 = MogoApisHandler.getInstance().getApis().getMapServiceApi().getMarkerManager( context ).addMarker( DataTypes.TYPE_MARKER_ADAS, options1 );
MogoMarkerOptions options2 = new MogoMarkerOptions()
.owner( DataTypes.TYPE_MARKER_ADAS )
.anchor( 0.5f, 0.5f )
.set3DMode( false )
.position( new MogoLatLng( 39.98232698552779,116.41879656379113 ) )
.position( new MogoLatLng( 39.98232698552779, 116.41879656379113 ) )
.gps( true )
.controlAngle( false )
.icon(BitmapFactory.decodeResource( context.getResources(), R.drawable.sr ) )
.icon( BitmapFactory.decodeResource( context.getResources(), R.drawable.sr ) )
.rotate( ( float ) 358.526123 );
IMogoMarker marker2 = MogoApisHandler.getInstance().getApis().getMapServiceApi().getMarkerManager( context ).addMarker( DataTypes.TYPE_MARKER_ADAS, options2 );
MogoMarkerOptions options3 = new MogoMarkerOptions()
.owner( DataTypes.TYPE_MARKER_ADAS )
.anchor( 0.5f, 0.5f )
.set3DMode( false )
.position( new MogoLatLng( 39.97631642243,116.418249382739 ) )
.position( new MogoLatLng( 39.97631642243, 116.418249382739 ) )
.gps( true )
.controlAngle( false )
.icon(BitmapFactory.decodeResource( context.getResources(), R.drawable.bg_map_marker_red ) )
.icon( BitmapFactory.decodeResource( context.getResources(), R.drawable.bg_map_marker_red ) )
.rotate( ( float ) 358.526123 );
IMogoMarker marker3 = MogoApisHandler.getInstance().getApis().getMapServiceApi().getMarkerManager( context ).addMarker( DataTypes.TYPE_MARKER_ADAS, options3 );
break;
@@ -627,7 +629,7 @@ public class MockIntentHandler implements IntentHandler {
private BufferedReader roadSizeBr;
private JSONObject locJo = null;
private void handleMockSingleLocDataIntent() throws Exception{
private void handleMockSingleLocDataIntent() throws Exception {
if ( locJo == null ) {
String locLine = "{\"systemTime\":1615529718585,\"satelliteTime\":1615529718585,\"lon\":116.73573385415098,\"lat\":40.19907712731953,\"alt\":34.4018669128417,\"heading\":0.342695406938048,\"speed\":0.003303937}";
locJo = new JSONObject( locLine );
@@ -638,13 +640,13 @@ public class MockIntentHandler implements IntentHandler {
mLocationMockHandler.sendEmptyMessageDelayed( 100, 50L );
}
private void handleRoadSideMockDataIntent() throws Exception{
private void handleRoadSideMockDataIntent() throws Exception {
if ( roadSizeBr == null ) {
roadSizeBr = new BufferedReader( new InputStreamReader( AbsMogoApplication.getApp().getAssets().open( "roadSide.txt" ) ) );
}
String carsLine = roadSizeBr.readLine();
MogoSnapshotSetData data = new MogoSnapshotSetData();
List<CloudRoadData> allList = GsonUtil.arrayFromJson( carsLine, CloudRoadData.class );
List< CloudRoadData > allList = GsonUtil.arrayFromJson( carsLine, CloudRoadData.class );
for ( CloudRoadData cloudRoadData : allList ) {
cloudRoadData.setWgslat( cloudRoadData.getLat() );
cloudRoadData.setWgslon( cloudRoadData.getLon() );
@@ -734,7 +736,7 @@ public class MockIntentHandler implements IntentHandler {
br33 = null;
br34 = null;
}
} else if( msg.what == 31 ){
} else if ( msg.what == 31 ) {
try {
handleMockAdasIntent3();
} catch ( Exception e ) {
@@ -745,7 +747,7 @@ public class MockIntentHandler implements IntentHandler {
}
br31 = null;
}
}else if ( msg.what == 48 ) {
} else if ( msg.what == 48 ) {
try {
handleMockLocationIntent48();
} catch ( Exception e ) {
@@ -756,13 +758,13 @@ public class MockIntentHandler implements IntentHandler {
}
br48 = null;
}
}else if ( msg.what == 100 ) {
} else if ( msg.what == 100 ) {
try {
handleMockSingleLocDataIntent();
} catch ( Exception e ) {
e.printStackTrace();
}
}else if ( msg.what == 101 ) {
} else if ( msg.what == 101 ) {
try {
handleRoadSideMockDataIntent();
} catch ( Exception e ) {
@@ -776,6 +778,42 @@ public class MockIntentHandler implements IntentHandler {
}
}
};
private Handler mLocationMockHandler1 = new Handler( WorkThreadHandler.newInstance( "loc-mock-thread1" ).getLooper() ) {
@Override
public void handleMessage( Message msg ) {
super.handleMessage( msg );
if ( msg.what == 1 ) {
try {
if ( !handleMockLocationIntent() ) {
br.close();
br = null;
}
} catch ( Exception e ) {
try {
br.close();
} catch ( IOException ex ) {
ex.printStackTrace();
}
br = null;
}
}
}
};
private long mLocDelay = 0;
private Handler mTimeTickHandler = new Handler( WorkThreadHandler.newInstance( "loc-mock-thread2" ).getLooper() ) {
@Override
public void handleMessage( Message msg ) {
super.handleMessage( msg );
mLocDelay += 50;
if ( mLocDelay > 4_000L ) {
mLocationMockHandler1.sendEmptyMessageDelayed( 1, 0L );
}
mLocationMockHandler.sendEmptyMessageDelayed( 3, 0L );
mTimeTickHandler.sendEmptyMessageDelayed( 0, 50L );
}
};
private BufferedReader br;
@@ -795,7 +833,6 @@ public class MockIntentHandler implements IntentHandler {
Log.i( "mock-timer-loc-map", "cost " + ( System.currentTimeMillis() - start ) + "ms" );
SnapshotLocationController.getInstance().syncAdasLocationInfo( jo );
Log.i( "mock-timer-loc", "cost " + ( System.currentTimeMillis() - start ) + "ms" );
mLocationMockHandler.sendEmptyMessageDelayed( 1, 50L );
return true;
}
@@ -813,7 +850,7 @@ public class MockIntentHandler implements IntentHandler {
}
JSONObject jo = new JSONObject( line );
MarkerServiceHandler.getApis().getMapServiceApi().getMapUIController().syncLocation2Map( jo );
Logger.i( "mock-timer-loc", "cost " + ( System.currentTimeMillis() - start ) + "ms: count=%s", ++count );
Logger.i( "mock-timer-loc", "cost " + ( System.currentTimeMillis() - start ) + "ms: count=%s", ++count );
mLocationMockHandler.sendEmptyMessageDelayed( 48, 100L );
return true;
}
@@ -845,7 +882,7 @@ public class MockIntentHandler implements IntentHandler {
SnapshotSetDataDrawer.getInstance().renderSnapshotData( data );
Log.i( "mock-timer-snapshot", "cost " + ( System.currentTimeMillis() - start ) + "ms" );
long delay = 100;
if (last != 0){
if ( last != 0 ) {
delay = cloudRoadData.getSystemTime() - last;
}
last = cloudRoadData.getSystemTime();
@@ -884,6 +921,7 @@ public class MockIntentHandler implements IntentHandler {
private BufferedReader br31;
private boolean handleMockAdasIntent() throws Exception {
final long start = System.currentTimeMillis();
if ( br3 == null ) {
br3 = new BufferedReader( new InputStreamReader( AbsMogoApplication.getApp().getAssets().open( "adas2.txt" ) ) );
}
@@ -910,33 +948,31 @@ public class MockIntentHandler implements IntentHandler {
}
allList.add( adasRecognizedResult );
ADASRecognizedResult next = handleMockAdasIntent3();
if(next != null){
allList.add(next);
if ( next != null ) {
allList.add( next );
}
next = handleMockAdasIntent4();
if(next != null){
allList.add(next);
if ( next != null ) {
allList.add( next );
}
next = handleMockAdasIntent5();
if(next != null){
allList.add(next);
if ( next != null ) {
allList.add( next );
}
next = handleMockAdasIntent6();
if(next != null){
allList.add(next);
if ( next != null ) {
allList.add( next );
}
final long start = System.currentTimeMillis();
AdasRecognizedResultDrawer.getInstance().renderAdasRecognizedResult( allList );
Log.i( "mock-timer-adas", "cost " + ( System.currentTimeMillis() - start ) + "ms" );
long delay = 100;
if (last != 0){
if ( last != 0 ) {
delay = adasRecognizedResult.satelliteTime - last;
}
last = adasRecognizedResult.satelliteTime;
Log.d("send-delay", "delay: " + delay);
mLocationMockHandler.sendEmptyMessageDelayed( 3, 50L );
Log.d( "send-delay", "delay: " + delay );
return true;
}
@@ -959,6 +995,7 @@ public class MockIntentHandler implements IntentHandler {
}
private BufferedReader br32;
private ADASRecognizedResult handleMockAdasIntent4() {
String line = null;
try {
@@ -978,6 +1015,7 @@ public class MockIntentHandler implements IntentHandler {
}
private BufferedReader br33;
private ADASRecognizedResult handleMockAdasIntent5() {
String line = null;
try {
@@ -997,6 +1035,7 @@ public class MockIntentHandler implements IntentHandler {
}
private BufferedReader br34;
private ADASRecognizedResult handleMockAdasIntent6() {
String line = null;
try {

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

View File

@@ -19,13 +19,13 @@ public
*/
abstract class MogoSkinCompatHelperDelegate implements IMogoSkinCompatSupportable {
protected volatile static Class< ? > mTargetClazz;
protected Class< ? > mTargetClazz;
protected Object mDelegate;
protected volatile static Method sMethodApplySkin;
protected volatile static Method sMethodLoadFromAttributes;
private static Constructor sConstructor;
protected Method sMethodApplySkin;
protected Method sMethodLoadFromAttributes;
private Constructor sConstructor;
private static boolean sIsSupport = false;
private boolean sIsSupport = false;
public MogoSkinCompatHelperDelegate( View view ) {
loadClazz();
@@ -68,7 +68,7 @@ abstract class MogoSkinCompatHelperDelegate implements IMogoSkinCompatSupportabl
protected abstract String getDelegateClazzName();
@Keep
protected static Method getLoadFromAttributesMethod() throws Exception {
protected Method getLoadFromAttributesMethod() throws Exception {
if ( mTargetClazz != null ) {
sMethodLoadFromAttributes = mTargetClazz.getDeclaredMethod( "loadFromAttributes", AttributeSet.class, int.class );
sMethodLoadFromAttributes.setAccessible( true );
@@ -77,7 +77,7 @@ abstract class MogoSkinCompatHelperDelegate implements IMogoSkinCompatSupportabl
}
@Keep
private static Method getApplySkinMethod() throws Exception {
private Method getApplySkinMethod() throws Exception {
if ( mTargetClazz != null ) {
sMethodApplySkin = mTargetClazz.getDeclaredMethod( "applySkin" );
sMethodApplySkin.setAccessible( true );
@@ -112,7 +112,7 @@ abstract class MogoSkinCompatHelperDelegate implements IMogoSkinCompatSupportabl
}
}
public static boolean isSupport() {
public boolean isSupport() {
return sIsSupport;
}
}