Merge remote-tracking branch 'origin/dev2_aiSdk' into dev2_aiSdk

This commit is contained in:
wujifei
2021-04-13 12:17:31 +08:00
19 changed files with 179 additions and 149 deletions

1
.idea/gradle.xml generated
View File

@@ -91,6 +91,7 @@
</set>
</option>
<option name="resolveModulePerSourceSet" value="false" />
<option name="useQualifiedModuleNames" value="true" />
</GradleProjectSettings>
</option>
</component>

View File

@@ -183,20 +183,16 @@ public class MogoApplication extends AbsMogoApplication {
*/
private void prepareBaseService(IMogoServiceApis apis, long delay) {
UiThreadHandler.postDelayed(() -> {
// 第三方平台的sn是服务端生成的所以必须在返回后才能开启
if (TextUtils.isEmpty(Utils.getSn())) {
preparePassportEnvironment(apis, () -> {
prepareSocketAndLocationServices(apis);
});
} else {
preparePassportEnvironment(apis, null);
prepareSocketAndLocationServices(apis);
}
}, delay);
// 第三方平台的sn是由AI云SDK中服务调用通过服务端生成的
preparePassportEnvironment();
prepareSocketAndLocationServices(apis);
//无延迟
// UiThreadHandler.postDelayed(() -> {
//
// }, delay);
}
private void preparePassportEnvironment(IMogoServiceApis apis, Runnable after) {
private void preparePassportEnvironment() {
// 配置云服务API
MoGoAiCloudClientConfig clientConfig = MoGoAiCloudClientConfig.getInstance();
// 设置网络环境HTTP_DNS_ENV_QA、HTTP_DNS_ENV_RELEASE、HTTP_DNS_ENV_DEV
@@ -257,6 +253,7 @@ public class MogoApplication extends AbsMogoApplication {
}
private void prepareSocketAndLocationServices(IMogoServiceApis apis) {
//开启Socket长链服务
apis.getSocketManagerApi(getApplicationContext()).init(getApplicationContext(), DebugConfig.getSocketAppId());
if (DebugConfig.getCarMachineType() != DebugConfig.CAR_MACHINE_TYPE_SELF_INNOVATE) {
apis.getLocationInfoApi().start();

View File

@@ -5,9 +5,9 @@ import android.os.Looper;
public class UiThreadHandler {
private static Handler sUiHandler = new Handler( Looper.getMainLooper() );
private static final Handler sUiHandler = new Handler( Looper.getMainLooper() );
private static Object sToken = new Object();
private static final Object sToken = new Object();
public UiThreadHandler() {
}

View File

@@ -15,10 +15,10 @@ import java.util.List;
*/
public class MogoModulePaths {
private static List< MogoModule > mMogoModules = new ArrayList<>();
private static final List< MogoModule > mMogoModules = new ArrayList<>();
// 不需要启动APP也能运行的模块
private static List< MogoModule > mMogoBaseModules = new ArrayList<>();
private static final List< MogoModule > mMogoBaseModules = new ArrayList<>();
/**
* 地图模块 fragment 路径

View File

@@ -68,11 +68,20 @@ class MarkerDrawer {
return drawMapMarkerImpl( markerShowEntity, matchRoadSide, zIndex, 0, listener );
}
/**
* add marker, {@link OnlineCarDrawer 如果是需要在3D模式下显示则需要设置 {@link MogoMarkerOptions icon3DRes 资源id}}
* @param markerShowEntity marker展示数据结构体
* @param matchRoadSide 设置是否道路吸附,暂时没用到这个字段
* @param zIndex zOrder
* @param icon3DRes 3D Res资源
* @param listener marker回调
* @return {@link IMogoMarker}
*/
public IMogoMarker drawMapMarkerImpl( MarkerShowEntity markerShowEntity, boolean matchRoadSide, int zIndex, int icon3DRes, IMogoMarkerClickListener listener ) {
if ( markerShowEntity == null || markerShowEntity.getMarkerLocation() == null ) {
return null;
}
MogoMarkerOptions options = new MogoMarkerOptions().icon3DRes( icon3DRes ).matchOnRoadSide( matchRoadSide ).owner( markerShowEntity.getMarkerType() ).zIndex( zIndex ).object( markerShowEntity ).latitude( markerShowEntity.getMarkerLocation().getLat() ).longitude( markerShowEntity.getMarkerLocation().getLon() );
MogoMarkerOptions options = new MogoMarkerOptions().icon3DRes( icon3DRes ).set3DMode(MogoApisHandler.getInstance().getApis().getStatusManagerApi().isVrMode()).matchOnRoadSide( matchRoadSide ).owner( markerShowEntity.getMarkerType() ).zIndex( zIndex ).object( markerShowEntity ).latitude( markerShowEntity.getMarkerLocation().getLat() ).longitude( markerShowEntity.getMarkerLocation().getLon() );
IMarkerView markerView = MapMarkerAdapter.getMarkerView( AbsMogoApplication.getApp(), markerShowEntity, options );
if ( markerView instanceof OnlineCarMarkerView ) {
try {

View File

@@ -105,7 +105,7 @@ class OnlineCarDrawer {
String sn = MarkerDrawer.getInstance().getPrimaryKeyFromEntity( markerOnlineCar );
IMogoMarker mogoMarker = existCarMap.get( sn );
if ( mogoMarker == null || mogoMarker.isDestroyed() ) {
mogoMarker = MarkerDrawer.getInstance().drawMapMarkerImpl( markerShowEntity, false, MarkerDrawer.MARKER_Z_INDEX_LOW, R.raw.othercar, listener );
mogoMarker = MarkerDrawer.getInstance().drawMapMarkerImpl( markerShowEntity, false, MarkerDrawer.MARKER_Z_INDEX_LOW, 0, listener );
}
if ( mogoMarker != null ) {
mogoMarker.setVisible( true );

View File

@@ -53,7 +53,7 @@ public class MainActivity extends MvpActivity<MainView, MainPresenter> implement
IMogoADASControlStatusChangedListener,
FragmentStackTransactionListener {
protected static final String TAG = MainActivity.class.getSimpleName();
protected static final String TAG = "MainActivity";
protected IMogoServiceApis mServiceApis;
protected IMogoFragmentManager mMogoFragmentManager;

View File

@@ -119,7 +119,12 @@ public class MogoServices implements IMogoMapListener,
/**
* 自动刷新策略
*/
private AutoRefreshStrategy mAutoRefreshStrategy = new AutoRefreshStrategy();
private final AutoRefreshStrategy mAutoRefreshStrategy = new AutoRefreshStrategy();
/**
* 手动刷新策略
*/
private final CustomRefreshStrategy mCustomRefreshStrategy = new CustomRefreshStrategy();
private MogoLatLng mLastAutoRefreshLocation = null;
private IMogoMapUIController mUiController;
@@ -135,13 +140,9 @@ public class MogoServices implements IMogoMapListener,
private boolean mIsVertical = false;
private MogoReceiver mAIAssistReceiver;
/**
* 手动刷新策略
*/
private CustomRefreshStrategy mCustomRefreshStrategy = new CustomRefreshStrategy();
private float mLastZoomLevel = 0;
private RefreshModel mRefreshModel;
private float mLastZoomLevel = 0;
private TtsConfigModleData mTtsModle;
private long mRefreshRemainingTime = Long.MAX_VALUE;
// 上次手动操作的中心点坐标
@@ -169,7 +170,7 @@ public class MogoServices implements IMogoMapListener,
*/
private boolean mLoopRequest = false;
private Handler mHandler = new MainLooperHandler( Looper.getMainLooper() ) {
private final Handler mHandler = new MainLooperHandler( Looper.getMainLooper() ) {
@Override
protected void handleRefreshDecrease( Message msg ) {
@@ -255,7 +256,7 @@ public class MogoServices implements IMogoMapListener,
/**
* 自动刷新回调
*/
private RefreshCallback mAutoRefreshCallback = new RefreshCallback< MarkerResponse >() {
private final RefreshCallback mAutoRefreshCallback = new RefreshCallback< MarkerResponse >() {
@Override
public void onSuccess( MarkerResponse o ) {
MapMarkerManager.getInstance().onSyncMarkerResponse( o );
@@ -285,7 +286,7 @@ public class MogoServices implements IMogoMapListener,
*/
private int mCurrentLimit = -1;
private IMogoStatusChangedListener statusChangedListener = new StatusChangedAdapter() {
private final IMogoStatusChangedListener statusChangedListener = new StatusChangedAdapter() {
@Override
public void onSearchUIShow( boolean visible ) {
@@ -433,10 +434,10 @@ public class MogoServices implements IMogoMapListener,
return;
}
mRefreshModel.refreshExplorerWayData( ro.mLonLat, ro.mRadius, ro.mAmount, ro.mCallback );
if ( !DebugConfig.
isNeedUploadCoordinatesDurationInTime() ) {
MapMarkerManager.getInstance().getOnlineCarDataByAutoRefreshStrategy( ro.mLonLat );
}
// if ( !DebugConfig.
// isNeedUploadCoordinatesDurationInTime() ) { //todo 实时在线车辆需要注释否则在2D模式下不能展示
// }
MapMarkerManager.getInstance().getOnlineCarDataByAutoRefreshStrategy( ro.mLonLat );
Logger.i( TAG, "刷新半径 = %s, 点 = %s, zoomLevel = %s, amount = %s", ro.mRadius, ro.mLonLat, mLastZoomLevel, ro.mAmount );
}

View File

@@ -547,7 +547,7 @@ public class MapMarkerManager implements IMogoMarkerClickListener,
getOnlineCarDataImpl( latLng, onlyFocus, onlySameCity, limit, radius, true );
}
private Runnable runnable = new Runnable() {
private final Runnable runnable = new Runnable() {
@Override
public void run() {
getOnlineCarDataImpl( mCarLatLng, false, false, ServiceConst.ONLINE_SEARCH_LIMIT, ServiceConst.ONLINE_SEARCH_RADIUS, false );
@@ -579,9 +579,9 @@ public class MapMarkerManager implements IMogoMarkerClickListener,
int radius,
boolean fitBounds ) {
if ( DebugConfig.isNeedUploadCoordinatesDurationInTime() ) {
return;
}
// if ( DebugConfig.isNeedUploadCoordinatesDurationInTime() ) {//todo 实时在线车辆需要注释否则在2D模式下不能展示
// return;
// }
if ( DebugConfig.isDebug() ) {
if ( !DebugConfig.isRequestOnlineCarData() ) {

View File

@@ -4,8 +4,7 @@ import android.content.Context;
import android.graphics.BitmapFactory;
import android.util.AttributeSet;
import android.util.Log;
import android.view.animation.LinearInterpolator;
import android.widget.ImageView;
import android.view.MotionEvent;
import android.widget.RelativeLayout;
import androidx.annotation.Nullable;
@@ -14,16 +13,13 @@ import com.amap.api.maps.AMap;
import com.amap.api.maps.CameraUpdate;
import com.amap.api.maps.CameraUpdateFactory;
import com.amap.api.maps.UiSettings;
import com.amap.api.maps.model.CameraPosition;
import com.amap.api.navi.AMapNaviView;
import com.amap.api.navi.AMapNaviViewOptions;
import com.mogo.commons.AbsMogoApplication;
import com.mogo.map.uicontroller.EnumMapUI;
import com.mogo.module.common.MogoApisHandler;
import com.mogo.module.small.map.animation.DirectionRotateAnimation;
import com.mogo.utils.FileUtils;
import java.io.File;
import java.io.IOException;
/**
@@ -35,7 +31,6 @@ import java.io.IOException;
public class SmallMapDirectionView extends RelativeLayout {
private String styleFilePath = "/mnt/sdcard/amap/small_map_style.data";
private ImageView mIvMapBorder;
private AMapNaviView mAMapNaviView;
private DirectionRotateAnimation mRotateAnimation;
private int lastAngle = 0;
@@ -62,7 +57,6 @@ public class SmallMapDirectionView extends RelativeLayout {
mRotateAnimation = new DirectionRotateAnimation(context, null);
AbsMogoApplication.getLayoutInflaterNoSkin().inflate(R.layout.module_small_map_view, this);
mIvMapBorder = findViewById(R.id.ivMapBorder);
mAMapNaviView = findViewById(R.id.aMapNaviView);
mAMapNaviView.onCreate(null);
@@ -136,7 +130,7 @@ public class SmallMapDirectionView extends RelativeLayout {
options.setNaviArrowVisible(false);
// 通过路线是否自动置灰,仅支持驾车导航
options.setAfterRouteAutoGray(false);
//options.setZoom(((int) 9));
options.setZoom(((int) 10));
//options.setPointToCenter(0.7D, 0.5D);
// 2D模式
options.setTilt(0);
@@ -151,21 +145,6 @@ public class SmallMapDirectionView extends RelativeLayout {
CameraUpdate cameraUpdate = CameraUpdateFactory.zoomTo(zoomLevel);
aMap.moveCamera(cameraUpdate);
aMap.setOnCameraChangeListener(new AMap.OnCameraChangeListener() {
@Override
public void onCameraChange(CameraPosition cameraPosition) {
if (cameraPosition != null) {
//Log.w("onCameraChange", "cameraPosition=" + cameraPosition.bearing);
changeAngle((int) cameraPosition.bearing);
}
}
@Override
public void onCameraChangeFinish(CameraPosition cameraPosition) {
}
});
aMap.setOnMapLoadedListener(new AMap.OnMapLoadedListener() {
@Override
@@ -229,46 +208,22 @@ public class SmallMapDirectionView extends RelativeLayout {
e.printStackTrace();
}
mIvMapBorder.setOnClickListener( view -> {
setOnClickListener(view -> {
MogoApisHandler.getInstance().getApis()
.getMapServiceApi()
.getMapUIController()
.changeMapMode(
MogoApisHandler.getInstance()
.getApis()
.getAdasControllerApi()
.getCurrentSkinMode()
.getApis()
.getAdasControllerApi()
.getCurrentSkinMode()
);
} );
});
}
/**
* 修改角度
*
* @param angle 角度 0 - 359度旋转,相对于自身中心位置
*/
public void changeAngle(int angle) {
int tempAngle = 360 - angle;
if (tempAngle <= 180) {
tempAngle = tempAngle;
} else {
tempAngle = -(360 - tempAngle);
}
mRotateAnimation.setFromDegrees(lastAngle);
mRotateAnimation.setToDegrees(tempAngle);
//设置线性插值,可以解决旋转一圈后卡顿问题
mRotateAnimation.setInterpolator(new LinearInterpolator());
//设置旋转一圈时间
mRotateAnimation.setDuration(300);
//控件动画结束时是否保持动画最后的状态
mRotateAnimation.setFillAfter(true);
mIvMapBorder.startAnimation(mRotateAnimation);
// 刷新最后一次角度
lastAngle = tempAngle;
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
return true;
}
}

View File

@@ -2,10 +2,10 @@
<merge xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="@dimen/module_small_map_border_view_width"
android:layout_height="@dimen/module_small_map_border_view_width"
tools:parentTag="RelativeLayout"
app:roundLayoutRadius="360dp">
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="@dimen/dp_40"
tools:parentTag="RelativeLayout">
<View
@@ -28,11 +28,4 @@
</com.mogo.module.common.view.RoundLayout>
<ImageView
android:id="@+id/ivMapBorder"
android:layout_width="@dimen/module_small_map_border_view_width"
android:layout_height="@dimen/module_small_map_border_view_width"
android:layout_centerInParent="true"
android:src="@drawable/module_small_map_view_border" />
</merge>

View File

@@ -8,8 +8,8 @@
<dimen name="module_small_map_view_width">250px</dimen>
<dimen name="module_small_map_view_height">250px</dimen>
<dimen name="module_small_map_view_x">1525px</dimen>
<dimen name="module_small_map_view_y">695px</dimen>
<dimen name="module_small_map_view_x">1620px</dimen>
<dimen name="module_small_map_view_y">780px</dimen>
<dimen name="module_small_map_big_view_x">0px</dimen>
<dimen name="module_small_map_big_view_y">0px</dimen>

View File

@@ -47,6 +47,10 @@ public class MoGoV2XCloundDataManager implements IMoGoV2XCloundDataManager, IMog
private static String TAG = "MoGoV2XCloundDataManager";
private boolean isSelfLineClear;
private List fillPoints = new ArrayList();//停止线经纬度合集
private boolean isFirstLocation = false;
private MogoLatLng mNewLocation;
private static long showTime = 0;
@Override
public void init(Context context) {
@@ -57,34 +61,35 @@ public class MoGoV2XCloundDataManager implements IMoGoV2XCloundDataManager, IMog
@Override
public void analysisV2XCloundDataEvent(V2XWarningEntity cloundWarningInfo) {
Log.d(V2XConst.LOG_NAME_WARN, "analysisV2XCloundDataEvent -----> ");
mCloundWarningInfo = cloundWarningInfo;
showTime = mCloundWarningInfo.getShowTime();
pointsBetween();
//发送预警提示
MarkerServiceHandler.getApis().getV2XListenerManager().warningChangedForListenerWithDirection(cloundWarningInfo.getType(), MogoReceiver.ACTION_V2X_FRONT_WARNING);
isSelfLineClear = false;
isFirstLocation = false;
Log.d(V2XConst.LOG_NAME_WARN, "direction = " + cloundWarningInfo.getDirection());
if (cloundWarningInfo.getDirection() == 1) { //前方
//停止线前方画线
MogoLatLng newLocation = LocationUtils.getNewLocation((MogoLatLng) fillPoints.get(0), 80, cloundWarningInfo.getAngle());
//停止线前方画线
WorkThreadHandler.getInstance().postDelayed(() -> {
//添加停止线marker
//添加停止线
drawStopLineWith2Resource();
//二轮车和行人的渲染和移动
V2XWarnDataDrawer.getInstance().renderWarnData(cloundWarningInfo);
//绘制识别物与交汇点连线,并且更新连线数据
drawStopLine(cloundWarningInfo, newLocation);
}, 200);
//添加停止线marker
handleStopLine();
}, 800);
UiThreadHandler.postDelayed(() -> {
V2XServiceManager.getMoGoPersonWarnPolylineManager().clearLine();
V2XServiceManager.getMoGoWarnPolylineManager().clearLine();
V2XServiceManager.getMoGoStopPolylineManager().clearLine();
isSelfLineClear = true;
}, 8000);
}, showTime);
} else { //左侧或者右侧
WorkThreadHandler.getInstance().postDelayed(() -> {
@@ -92,17 +97,15 @@ public class MoGoV2XCloundDataManager implements IMoGoV2XCloundDataManager, IMog
drawOtherObjectLine(cloundWarningInfo);
//二轮车和行人的渲染和移动
V2XWarnDataDrawer.getInstance().renderWarnData(cloundWarningInfo);
}, 200);
}, 500);
//延迟3秒清理线
UiThreadHandler.postDelayed(() -> {
V2XServiceManager.getMoGoPersonWarnPolylineManager().clearLine();
V2XServiceManager.getMoGoWarnPolylineManager().clearLine();
isSelfLineClear = true;
}, 8000);
}, showTime);
}
}
@@ -110,7 +113,6 @@ public class MoGoV2XCloundDataManager implements IMoGoV2XCloundDataManager, IMog
for (int i = 0; i < fillPoints.size(); i++) {
V2XWarningEntity entity = new V2XWarningEntity();
MogoLatLng latLng = (MogoLatLng) fillPoints.get(i);
Log.d("liyz", "handleStopLine lat = " + latLng.lat + "--lon =" + latLng.lon);
entity.setLat(latLng.lat);
entity.setLon(latLng.lon);
entity.setCollisionLat(mCloundWarningInfo.getCollisionLat());
@@ -124,10 +126,6 @@ public class MoGoV2XCloundDataManager implements IMoGoV2XCloundDataManager, IMog
* 2D资源绘制停止线
* */
private void drawStopLineWith2Resource() {
//自车位置39.97665425796924--116.41769983329762
mCloundWarningInfo.setCarLocation(new MogoLatLng(39.97665425796924,116.41769983329762));//测试数据
MogoLatLng carlo = mCloundWarningInfo.getCarLocation();
if (carlo == null) {
double lon = MogoApisHandler.getInstance().getApis().getAdasControllerApi().getLastLon();
@@ -136,11 +134,11 @@ public class MoGoV2XCloundDataManager implements IMoGoV2XCloundDataManager, IMog
}
//自车行驶方向的前方*米的经纬度,该经纬度在停止线上
MogoLatLng drawStopLineLon = LocationUtils.getNewLocation(carlo, mCloundWarningInfo.getStopLineDistance(), mCloundWarningInfo.getAngle());
Log.d(TAG, "2D资源绘制停止线"+drawStopLineLon);
Log.d(TAG, "2D资源绘制停止线" + drawStopLineLon);
MogoMarkerOptions optionsRipple = new MogoMarkerOptions()
.latitude(drawStopLineLon.getLat())
.longitude(drawStopLineLon.getLon())
.anchor(0.5f, 0.5f)
.anchor(1.0f, 1.0f)
.zIndex(MarkerDrawer.MARKER_Z_INDEX_HIGH);
optionsRipple
@@ -148,9 +146,9 @@ public class MoGoV2XCloundDataManager implements IMoGoV2XCloundDataManager, IMog
IMogoMarker stopLine = V2XServiceManager.getMarkerManager().addMarker(TYPE_MARKER_CLOUD_STOP_LINE_DATA, optionsRipple);
stopLine.setInfoWindowAdapter(new SimpleWindow3DAdapter(new V2XFrontTargetMarkerView(V2XServiceManager.getContext())));
stopLine.showInfoWindow();
// UiThreadHandler.postDelayed(() -> {
// stopLine.hideInfoWindow();
// }, 8000);
UiThreadHandler.postDelayed(() -> {
stopLine.hideInfoWindow();
}, showTime);
}
/**
@@ -161,20 +159,15 @@ public class MoGoV2XCloundDataManager implements IMoGoV2XCloundDataManager, IMog
if (info != null) {
if (polyLine != null) {
Log.d(V2XConst.LOG_NAME_WARN, "drawStopLine polyLine != null");
polyLine.setPoints(Arrays.asList(new MogoLatLng(info.getLat(), info.getLon()),
new MogoLatLng(info.getCollisionLat(), info.getCollisionLon())));
polyLine.setPoints(Arrays.asList(new MogoLatLng(mNewLocation.lat, mNewLocation.lon),
new MogoLatLng(mogoLatLng.lat, mogoLatLng.lon)));
polyLine.setTransparency(0.5f);
} else {
Log.e(V2XConst.LOG_NAME_WARN, "drawStopLine polyLine == null");
DrawLineInfo lineInfo = new DrawLineInfo();
MogoLatLng startLatlng = new MogoLatLng(
((MogoLatLng) fillPoints.get(0)).lat,
((MogoLatLng) fillPoints.get(0)).lon);
Log.d(V2XConst.LOG_NAME_WARN, "stop drawStopLine lon =" + startLatlng.lon + "--lat =" + startLatlng.lat);
MogoLatLng startLatlng = new MogoLatLng(mNewLocation.lat, mNewLocation.lon);
MogoLatLng endLatlng = new MogoLatLng(mogoLatLng.lat, mogoLatLng.lon);
Log.d(V2XConst.LOG_NAME_WARN, " drawStopLine lon =" + mogoLatLng.lon + "--lat =" + mogoLatLng.lat);
Log.d(V2XConst.LOG_NAME_WARN, " drawStopLine lon =" + endLatlng.lon + "--lat =" + endLatlng.lat);
Log.d(V2XConst.LOG_NAME_WARN, " drawStopLine endLatlng lon =" + endLatlng.lon + "--lat =" + endLatlng.lat
+ "--startLatlng lon = " + startLatlng.lon + "-lat = " + startLatlng.lat);
lineInfo.setStartLocation(startLatlng);
lineInfo.setEndLocation(endLatlng);
lineInfo.setHeading(info.heading);
@@ -201,7 +194,6 @@ public class MoGoV2XCloundDataManager implements IMoGoV2XCloundDataManager, IMog
new MogoLatLng(info.getCollisionLat(), info.getCollisionLon())));
polyLine.setTransparency(0.5f);
} else {
Log.e(V2XConst.LOG_NAME_WARN, "polyLine == null");
DrawLineInfo lineInfo = new DrawLineInfo();
MogoLatLng startLatlng = new MogoLatLng(info.getLat(), info.getLon());
MogoLatLng endLatlng = new MogoLatLng(info.getCollisionLat(), info.getCollisionLon());
@@ -228,7 +220,7 @@ public class MoGoV2XCloundDataManager implements IMoGoV2XCloundDataManager, IMog
*/
@Override
public void onCarLocationChanged2(Location latLng) {
Log.e(V2XConst.LOG_NAME_WARN, "onCarLocationChanged2 latLng = " + latLng.getLatitude() + "--" + latLng.getLongitude() + "---isSelfLineClear = " + isSelfLineClear);
// Log.d(V2XConst.LOG_NAME_WARN, "onCarLocationChanged2 latLng = " + latLng.getLatitude() + "--" + latLng.getLongitude() + "---isSelfLineClear = " + isSelfLineClear);
//当行人经纬度交点 开始画线,否则清理
mCloundWarningInfo.setCarLocation(new MogoLatLng(latLng.getLatitude(), latLng.getLongitude()));
drawSlefCarLine(latLng);
@@ -246,17 +238,22 @@ public class MoGoV2XCloundDataManager implements IMoGoV2XCloundDataManager, IMog
if (!isSelfLineClear) {
IMogoPolyline mogoPolyline = V2XServiceManager.getMoGoWarnPolylineManager().getMogoWarnPolyline();
if (mCloundWarningInfo != null) {
if (!isFirstLocation) {
mNewLocation = getMogoLat(new MogoLatLng(latLng.getLatitude(), latLng.getLongitude()));
Log.d(V2XConst.LOG_NAME_WARN, "drawSlefCarLine lon = " + mNewLocation.lon + "---lat = " + mNewLocation.lat);
isFirstLocation = true;
}
if (mogoPolyline != null) {
mogoPolyline.setPoints(Arrays.asList(new MogoLatLng(latLng.getLatitude(), latLng.getLongitude()),
new MogoLatLng(mCloundWarningInfo.getDirection() == 1 ? mCloundWarningInfo.getStopLines().get(0).lat : mCloundWarningInfo.getCollisionLat(),
mCloundWarningInfo.getDirection() == 1 ? mCloundWarningInfo.getStopLines().get(0).lon : mCloundWarningInfo.getCollisionLon())));
new MogoLatLng(mCloundWarningInfo.getDirection() == 1 ? mNewLocation.lat : mCloundWarningInfo.getCollisionLat(),
mCloundWarningInfo.getDirection() == 1 ? mNewLocation.lon : mCloundWarningInfo.getCollisionLon())));
mogoPolyline.setTransparency(0.5f);
} else {
Log.e(V2XConst.LOG_NAME_WARN, "onCarLocationChanged2 mogoPolyline == null width = " + mCloundWarningInfo.getRoadwidth());
// Log.e(V2XConst.LOG_NAME_WARN, "onCarLocationChanged2 mogoPolyline == null width = " + mCloundWarningInfo.getRoadwidth());
DrawLineInfo info = new DrawLineInfo(); // 对象
MogoLatLng startLatlng = new MogoLatLng(latLng.getLatitude(), latLng.getLongitude());
MogoLatLng endLatlng = new MogoLatLng(mCloundWarningInfo.getDirection() == 1 ? mCloundWarningInfo.getStopLines().get(0).lat : mCloundWarningInfo.getCollisionLat(),
mCloundWarningInfo.getDirection() == 1 ? mCloundWarningInfo.getStopLines().get(0).lon : mCloundWarningInfo.getCollisionLon());
MogoLatLng endLatlng = new MogoLatLng(mCloundWarningInfo.getDirection() == 1 ? mNewLocation.lat : mCloundWarningInfo.getCollisionLat(),
mCloundWarningInfo.getDirection() == 1 ? mNewLocation.lon : mCloundWarningInfo.getCollisionLon());
info.setHeading(latLng.getBearing());
info.setStartLocation(startLatlng);
info.setEndLocation(endLatlng);
@@ -297,12 +294,10 @@ public class MoGoV2XCloundDataManager implements IMoGoV2XCloundDataManager, IMog
} catch (Exception e) {
e.printStackTrace();
}
}
private MogoLatLng getMogoLat(MogoLatLng latlng) {
MogoLatLng newLocation = LocationUtils.getNewLocation(latlng, mCloundWarningInfo.getDistance(), mCloundWarningInfo.getDirection());
return newLocation;
}

View File

@@ -24,6 +24,7 @@ import com.mogo.module.v2x.marker.OptimalSpeedMarkerView;
import com.mogo.module.v2x.marker.V2XFrontTargetMarkerView;
import com.mogo.module.v2x.scenario.view.IV2XMarker;
import com.mogo.module.v2x.utils.LocationUtils;
import com.mogo.utils.UiThreadHandler;
import com.mogo.utils.ViewUtils;
import com.mogo.utils.WorkThreadHandler;
@@ -65,6 +66,9 @@ public class V2XWarningMarker implements IV2XMarker {
optimalMarker = V2XServiceManager.getMarkerManager().addMarker(V2X_FRONT_WARNING_MARKER, optionsRipple);
optimalMarker.setInfoWindowAdapter(new SimpleWindow3DAdapter(new V2XFrontTargetMarkerView(mContext)));
optimalMarker.showInfoWindow();
UiThreadHandler.postDelayed(() -> {
optimalMarker.hideInfoWindow();
}, 8000);
} catch (Exception e) {

View File

@@ -430,7 +430,7 @@ public class TestOnLineCarUtils {
try {
InputStream inputStream = V2XUtils.getApp()
.getResources()
.openRawResource(R.raw.scenario_push_vr_event_data_yongdu_gongsi);
.openRawResource(R.raw.scenario_push_vr_event_data_yongdu_gongsi_1);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
int len = -1;
byte[] buffer = new byte[1024];

View File

@@ -0,0 +1,71 @@
{
"sceneId": "200008",
"alarmContent": "拥堵路线推荐",
"expireTime": 10000,
"sceneCategory": 0,
"sceneDescription": "拥堵路线推荐",
"sceneName": "拥堵路线推荐",
"sceneLevel": 0,
"videoUrl": "",
"videoChannel": "",
"videoSn": "",
"tts": "发现前方拥堵最优路线快6分钟",
"zoom": false,
"zoomScale": 15,
"userHead": "",
"msgImgUrl": "",
"lat":39.969088,
"lon":116.41808,
"polyline": [
[
116.417388,39.983351
],
[
116.417351,39.9841
],
[
116.417286,39.985423
],
[
116.417233,39.98673
],
[
116.417179,39.988156
],
[
116.417158,39.988493
],
[
116.417142,39.989245
],
[
116.417174,39.990199
]
],
"recommendPolyline": [
[
116.417388,39.983351
],
[
116.417351,39.9841
],
[
116.417286,39.985423
],
[
116.417233,39.98673
],
[
116.417179,39.988156
],
[
116.417158,39.988493
],
[
116.417142,39.989245
],
[
116.417174,39.990199
]
]
}

View File

@@ -20,9 +20,13 @@
"direction": 1,
"speed": 11.108121,
"targetColor": "#FF4040",
"stopLineDistance": 15,
"stopLineDistance": 3000,
"warningContent": "小心行人",
"heading": 0,
"showTime": 3000,
"roadwidth": 60.0
"showTime": 8000,
"roadwidth": 60.0,
"carLocation": {
"lat": 39.97665425,
"lon": 116.41769983
}
}