优化vr模式导航面板
This commit is contained in:
@@ -497,7 +497,7 @@ public class EntranceFragment extends MvpFragment<EntranceView, EntrancePresente
|
||||
mUploadRoadCondition.setVisibility(View.GONE);
|
||||
mWeatherContainer.setVisibility(View.GONE);
|
||||
mMsgContainer.setVisibility(View.GONE);
|
||||
mUserHeadImg.setVisibility(View.GONE);
|
||||
groupUserHead.setVisibility(View.GONE);
|
||||
|
||||
tvExitVrMode.setVisibility(View.VISIBLE);
|
||||
TopViewAnimHelper.getInstance().enterVrMode();
|
||||
@@ -513,7 +513,7 @@ public class EntranceFragment extends MvpFragment<EntranceView, EntrancePresente
|
||||
tvEnterVrMode.setVisibility(View.VISIBLE);
|
||||
mMove2CurrentLocation.setVisibility(View.VISIBLE);
|
||||
mUploadRoadCondition.setVisibility(View.VISIBLE);
|
||||
mUserHeadImg.setVisibility(View.VISIBLE);
|
||||
groupUserHead.setVisibility(View.VISIBLE);
|
||||
// mWeatherContainer.setVisibility(View.VISIBLE);
|
||||
// mMsgContainer.setVisibility(View.VISIBLE);
|
||||
|
||||
|
||||
@@ -6,23 +6,18 @@ import android.content.Intent;
|
||||
import android.content.IntentFilter;
|
||||
import android.os.Handler;
|
||||
import android.os.Message;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.mogo.map.location.IMogoLocationListener;
|
||||
import com.mogo.map.location.MogoLocation;
|
||||
import com.mogo.map.navi.MogoTraffic;
|
||||
import com.mogo.module.common.MogoApisHandler;
|
||||
import com.mogo.module.common.entity.CloudRoadData;
|
||||
import com.mogo.module.common.entity.MogoSnapshotSetData;
|
||||
import com.mogo.module.extensions.R;
|
||||
import com.mogo.service.adas.IMogoAdasWarnMessageCallback;
|
||||
import com.mogo.service.adas.MogoADASWarnType;
|
||||
import com.mogo.service.adas.entity.ADASWarnMessage;
|
||||
import com.mogo.service.connection.IMogoOnWebSocketMessageListener;
|
||||
import com.mogo.service.connection.WebSocketMsgType;
|
||||
import com.mogo.service.entrance.IMogoEntranceButtonController;
|
||||
import com.mogo.utils.logger.Logger;
|
||||
|
||||
import org.json.JSONObject;
|
||||
@@ -50,8 +45,6 @@ public class AdasNoticeHelper implements IMogoAdasWarnMessageCallback, IMogoLoca
|
||||
|
||||
private volatile boolean isVrMode = false;
|
||||
|
||||
private TextView tvSelfSpeed, tvTrafficLight, tvLimitSpeed;
|
||||
|
||||
private int limitSpeed = -1;
|
||||
private int currentSpeed = 0;
|
||||
private String lightStatus = "G";
|
||||
@@ -61,26 +54,18 @@ public class AdasNoticeHelper implements IMogoAdasWarnMessageCallback, IMogoLoca
|
||||
|
||||
private boolean isObuLightData = false;
|
||||
|
||||
private View selfCar;
|
||||
|
||||
private boolean lightCenter = true;
|
||||
|
||||
public void init(Context context) {
|
||||
this.context = context;
|
||||
if(!lightCenter) {
|
||||
selfCar = LayoutInflater.from(context).inflate(R.layout.module_ext_item_self_car, null);
|
||||
tvSelfSpeed = selfCar.findViewById(R.id.tvSelfSpeed);
|
||||
tvTrafficLight = selfCar.findViewById(R.id.tvTrafficLight);
|
||||
tvLimitSpeed = selfCar.findViewById(R.id.tvLimitSpeed);
|
||||
if (!lightCenter) {
|
||||
}
|
||||
Logger.d(TAG, "init====");
|
||||
}
|
||||
|
||||
public void initView(View root) {
|
||||
if(lightCenter) {
|
||||
tvSelfSpeed = root.findViewById(R.id.tvSelfSpeed);
|
||||
tvTrafficLight = root.findViewById(R.id.tvTrafficLight);
|
||||
tvLimitSpeed = root.findViewById(R.id.tvLimitSpeed);
|
||||
if (lightCenter) {
|
||||
}
|
||||
}
|
||||
|
||||
@@ -96,7 +81,7 @@ public class AdasNoticeHelper implements IMogoAdasWarnMessageCallback, IMogoLoca
|
||||
MogoApisHandler.getInstance().getApis().getAdasControllerApi().addAdasWarnMessageCallback(this);
|
||||
MogoApisHandler.getInstance().getApis().getRegisterCenterApi().registerMogoLocationListener(TAG, this);
|
||||
MogoApisHandler.getInstance().getApis().getWebSocketManagerApi(context).registerOnWebSocketMessageListener(this);
|
||||
if(!lightCenter) {
|
||||
if (!lightCenter) {
|
||||
handler.sendEmptyMessageDelayed(MSG_REFRESH_CAR_STRATEGY, STRATEGY_DELAY);
|
||||
}
|
||||
}
|
||||
@@ -108,9 +93,6 @@ public class AdasNoticeHelper implements IMogoAdasWarnMessageCallback, IMogoLoca
|
||||
isVrMode = false;
|
||||
MogoApisHandler.getInstance().getApis().getAdasControllerApi().showADAS();
|
||||
handler.removeMessages(MSG_REFRESH_CAR_STRATEGY);
|
||||
tvSelfSpeed.setVisibility(View.GONE);
|
||||
tvTrafficLight.setVisibility(View.GONE);
|
||||
tvLimitSpeed.setVisibility(View.GONE);
|
||||
MogoApisHandler.getInstance().getApis().getAdasControllerApi().removeAdasWarnMessageCallback(this);
|
||||
MogoApisHandler.getInstance().getApis().getRegisterCenterApi().unregisterMogoLocationListener(TAG);
|
||||
MogoApisHandler.getInstance().getApis().getWebSocketManagerApi(context).unregisterOnWebSocketMessageListener(this);
|
||||
@@ -133,18 +115,7 @@ public class AdasNoticeHelper implements IMogoAdasWarnMessageCallback, IMogoLoca
|
||||
}
|
||||
}
|
||||
|
||||
private void drawLimitSpeed(){
|
||||
if (tvLimitSpeed != null) {
|
||||
tvLimitSpeed.post(() -> {
|
||||
handler.removeMessages(MSG_HIDE_LIMIT_SPEED);
|
||||
|
||||
if (tvLimitSpeed.getVisibility() == View.GONE) {
|
||||
tvLimitSpeed.setVisibility(View.VISIBLE);
|
||||
}
|
||||
tvLimitSpeed.setText(limitSpeed+"");
|
||||
handler.sendEmptyMessageDelayed(MSG_HIDE_LIMIT_SPEED, HIDE_LIMIT_SPEED_DELAY);
|
||||
});
|
||||
}
|
||||
private void drawLimitSpeed() {
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -153,25 +124,7 @@ public class AdasNoticeHelper implements IMogoAdasWarnMessageCallback, IMogoLoca
|
||||
return;
|
||||
}
|
||||
currentSpeed = (int) (location.getSpeed() * 3.6F);
|
||||
if(lightCenter) {
|
||||
if (tvSelfSpeed != null) {
|
||||
tvSelfSpeed.post(() -> {
|
||||
if (tvSelfSpeed.getVisibility() == View.GONE) {
|
||||
tvSelfSpeed.setVisibility(View.VISIBLE);
|
||||
}
|
||||
if (limitSpeed != -1 && currentSpeed > limitSpeed) {
|
||||
// 显示红色
|
||||
tvSelfSpeed.setTextColor(context.getResources().getColor(R.color.module_ext_vr_mode_left_traffic_light_red));
|
||||
tvSelfSpeed.setBackgroundResource(R.drawable.module_ext_vr_mode_speed_red_bg);
|
||||
}else{
|
||||
// 显示白
|
||||
tvSelfSpeed.setTextColor(context.getResources().getColor(R.color.module_ext_vr_mode_left_traffic_light_white));
|
||||
tvSelfSpeed.setBackgroundResource(R.drawable.module_ext_vr_mode_speed_white_bg);
|
||||
}
|
||||
tvSelfSpeed.setText("" + currentSpeed);
|
||||
Logger.d(TAG, "onLocationChange: " + currentSpeed);
|
||||
});
|
||||
}
|
||||
if (lightCenter) {
|
||||
}
|
||||
}
|
||||
|
||||
@@ -181,11 +134,6 @@ public class AdasNoticeHelper implements IMogoAdasWarnMessageCallback, IMogoLoca
|
||||
case MSG_REFRESH_CAR_STRATEGY:
|
||||
// todo 暂时不采用此种渲染方式
|
||||
// 自车速度
|
||||
tvSelfSpeed.setText("" + currentSpeed);
|
||||
// 红绿灯
|
||||
if (tvTrafficLight.getVisibility() == View.GONE) {
|
||||
tvTrafficLight.setVisibility(View.VISIBLE);
|
||||
}
|
||||
// todo 设置字体颜色、背景颜色、leftDrawable
|
||||
switch (lightStatus) {
|
||||
case "Y":
|
||||
@@ -198,26 +146,21 @@ public class AdasNoticeHelper implements IMogoAdasWarnMessageCallback, IMogoLoca
|
||||
// 默认绿灯
|
||||
break;
|
||||
}
|
||||
tvTrafficLight.setText(surplusTime + "S");
|
||||
|
||||
MogoApisHandler.getInstance().getApis().getMapServiceApi().getMapUIController().showMyLocation(inflateRoadInfo());
|
||||
if (isVrMode) {
|
||||
handler.sendEmptyMessageDelayed(MSG_REFRESH_CAR_STRATEGY, STRATEGY_DELAY);
|
||||
}
|
||||
return true;
|
||||
case MSG_HIDE_LIMIT_SPEED:
|
||||
limitSpeed = -1;
|
||||
tvLimitSpeed.setVisibility(View.GONE);
|
||||
return true;
|
||||
case MSG_HIDE_TRAFFIC_LIGHT_BY_CLOUD:
|
||||
if (!isObuLightData && !handler.hasMessages(MSG_HIDE_TRAFFIC_LIGHT_BY_OBU)) {
|
||||
tvTrafficLight.setVisibility(View.GONE);
|
||||
}
|
||||
return true;
|
||||
case MSG_HIDE_TRAFFIC_LIGHT_BY_OBU:
|
||||
isObuLightData = false;
|
||||
if (!handler.hasMessages(MSG_HIDE_TRAFFIC_LIGHT_BY_CLOUD)) {
|
||||
tvTrafficLight.setVisibility(View.GONE);
|
||||
}
|
||||
return true;
|
||||
default:
|
||||
@@ -237,22 +180,22 @@ public class AdasNoticeHelper implements IMogoAdasWarnMessageCallback, IMogoLoca
|
||||
return;
|
||||
}
|
||||
String action = intent.getAction();
|
||||
if("com.mogo.launcher.adas".equals(action)){
|
||||
if ("com.mogo.launcher.adas".equals(action)) {
|
||||
// 收到限速信息
|
||||
int limit = intent.getIntExtra("adas_speed_limit", -1);
|
||||
if(limit>0) {
|
||||
if (limit > 0) {
|
||||
limitSpeed = limit;
|
||||
drawLimitSpeed();
|
||||
}
|
||||
}else {
|
||||
} else {
|
||||
int type = intent.getIntExtra("type", -1);
|
||||
if (type == 2) {
|
||||
String obuLightAction = intent.getStringExtra("action");
|
||||
if("1".equals(obuLightAction)){
|
||||
if ("1".equals(obuLightAction)) {
|
||||
// 隐藏红绿灯
|
||||
handler.removeMessages(MSG_HIDE_TRAFFIC_LIGHT_BY_OBU);
|
||||
handler.sendEmptyMessage(MSG_HIDE_TRAFFIC_LIGHT_BY_OBU);
|
||||
}else {
|
||||
} else {
|
||||
// 红绿灯处理
|
||||
String data = intent.getStringExtra("data");
|
||||
if (data != null && !data.isEmpty()) {
|
||||
@@ -278,13 +221,6 @@ public class AdasNoticeHelper implements IMogoAdasWarnMessageCallback, IMogoLoca
|
||||
|
||||
private void handleObuTrafficLightInfo(String lightStatus, String surplusTime) {
|
||||
isObuLightData = true;
|
||||
if (tvTrafficLight != null) {
|
||||
handler.removeMessages(MSG_HIDE_TRAFFIC_LIGHT_BY_OBU);
|
||||
handler.removeMessages(MSG_HIDE_TRAFFIC_LIGHT_BY_CLOUD);
|
||||
drawTrafficLight(lightStatus, surplusTime);
|
||||
handler.sendEmptyMessageDelayed(MSG_HIDE_TRAFFIC_LIGHT_BY_OBU,
|
||||
HIDE_TRAFFIC_LIGHT_DELAY);
|
||||
}
|
||||
}
|
||||
|
||||
private void handleCloudTrafficLight(CloudRoadData roadData) {
|
||||
@@ -292,75 +228,12 @@ public class AdasNoticeHelper implements IMogoAdasWarnMessageCallback, IMogoLoca
|
||||
handler.removeMessages(MSG_HIDE_TRAFFIC_LIGHT_BY_CLOUD);
|
||||
return;
|
||||
}
|
||||
if (tvTrafficLight != null && !handler.hasMessages(MSG_HIDE_TRAFFIC_LIGHT_BY_OBU)) {
|
||||
handler.removeMessages(MSG_HIDE_TRAFFIC_LIGHT_BY_CLOUD);
|
||||
// todo drawTrafficLight
|
||||
String lightStatus = null;
|
||||
switch (roadData.getLightStatus()) {
|
||||
case 1:
|
||||
// 红灯
|
||||
lightStatus = "R";
|
||||
break;
|
||||
case 2:
|
||||
// 绿灯
|
||||
lightStatus = "G";
|
||||
break;
|
||||
case 3:
|
||||
// 黄灯
|
||||
lightStatus = "Y";
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
if(lightStatus == null){
|
||||
handler.sendEmptyMessage(MSG_HIDE_TRAFFIC_LIGHT_BY_CLOUD);
|
||||
}else {
|
||||
int diff = (int) ((System.currentTimeMillis() - roadData.getSystemTime()) / 1000);
|
||||
int leftTime = roadData.getLightLeftTime() - diff;
|
||||
if (leftTime < 0) {
|
||||
leftTime = 0;
|
||||
}
|
||||
Logger.d("CloudTrafficLight",
|
||||
"lightStatus: " + lightStatus + " current: " + System.currentTimeMillis() + " cloudType: " + roadData.getSystemTime() + " diff: " + diff + " cloudLeftTime: " + roadData.getLightLeftTime() + " leftTime: " + leftTime);
|
||||
drawTrafficLight(lightStatus, "" + leftTime);
|
||||
handler.sendEmptyMessageDelayed(MSG_HIDE_TRAFFIC_LIGHT_BY_CLOUD,
|
||||
HIDE_TRAFFIC_LIGHT_DELAY);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void drawTrafficLight(String lightStatus, String surplusTime) {
|
||||
this.lightStatus = lightStatus;
|
||||
this.surplusTime = surplusTime;
|
||||
if(lightCenter) {
|
||||
tvTrafficLight.post(() -> {
|
||||
if (tvTrafficLight.getVisibility() == View.GONE) {
|
||||
tvTrafficLight.setVisibility(View.VISIBLE);
|
||||
}
|
||||
// todo 设置字体颜色、背景颜色、leftDrawable
|
||||
switch (lightStatus) {
|
||||
case "Y":
|
||||
// 黄灯
|
||||
tvTrafficLight.setTextColor(context.getResources().getColor(R.color.module_ext_vr_mode_left_traffic_light_yellow));
|
||||
tvTrafficLight.setBackgroundResource(R.drawable.module_ext_vr_mode_traffic_light_yellow_bg);
|
||||
tvTrafficLight.setCompoundDrawablesWithIntrinsicBounds(R.drawable.module_ext_traffic_light_yellow, 0, 0, 0);
|
||||
break;
|
||||
case "R":
|
||||
// 红灯
|
||||
tvTrafficLight.setTextColor(context.getResources().getColor(R.color.module_ext_vr_mode_left_traffic_light_red));
|
||||
tvTrafficLight.setBackgroundResource(R.drawable.module_ext_vr_mode_traffic_light_red_bg);
|
||||
tvTrafficLight.setCompoundDrawablesWithIntrinsicBounds(R.drawable.module_ext_traffic_light_red, 0, 0, 0);
|
||||
break;
|
||||
default:
|
||||
// 默认绿灯
|
||||
tvTrafficLight.setTextColor(context.getResources().getColor(R.color.module_ext_vr_mode_left_traffic_light_green));
|
||||
tvTrafficLight.setBackgroundResource(R.drawable.module_ext_vr_mode_traffic_light_green_bg);
|
||||
tvTrafficLight.setCompoundDrawablesWithIntrinsicBounds(R.drawable.module_ext_traffic_light_green, 0, 0, 0);
|
||||
break;
|
||||
}
|
||||
tvTrafficLight.setText(surplusTime + "S");
|
||||
Logger.d(TAG, "展示红绿灯信息: " + lightStatus + " time: " + surplusTime);
|
||||
});
|
||||
if (lightCenter) {
|
||||
}
|
||||
}
|
||||
|
||||
@@ -386,12 +259,4 @@ public class AdasNoticeHelper implements IMogoAdasWarnMessageCallback, IMogoLoca
|
||||
}
|
||||
}
|
||||
|
||||
private View inflateRoadInfo(){
|
||||
View view = View.inflate(context, R.layout.module_ext_item_self_car, null);
|
||||
TextView _speed = view.findViewById(R.id.tvSelfSpeed);
|
||||
_speed.setText("" + currentSpeed);
|
||||
Logger.d(TAG, "showCurrentSpeed: " + currentSpeed);
|
||||
return view;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user