This commit is contained in:
unknown
2020-11-16 14:37:14 +08:00
22 changed files with 193 additions and 44 deletions

View File

@@ -62,6 +62,8 @@ public class V2XConst {
public static final String V2X_ROAD_EVET = "v2x_road_event";
public static final String V2X_ROAD_EVET_HISTORY_BUTTON = "V2X_button_click";
public static final String V2X_ROAD_PRODUCE = "v2x_road_produce";
public static final String V2X_ASK_ALERT = "v2x_ask_alert";//UGC 提问
public static final String V2X_ASK_RESULT = "v2x_ask_result";//UGC 提问回答或消失
public static final String LAUNCHER_ICON_CLICK = "Launcher_Icon_Click";
/**
* V2X 道路事件操作类型

View File

@@ -99,4 +99,14 @@ public class V2XEventPanelModuleProvider implements
public void showPanelWithSelectedItem(int item) {
V2XEventPanelFragment.Companion.getInstance().showPanelWithSelectedItem(item);
}
@Override
public void showPanel() {
V2XEventPanelFragment.Companion.getInstance().showPanel();
}
@Override
public void hidePanel() {
V2XEventPanelFragment.Companion.getInstance().hidePanel();
}
}

View File

@@ -9,20 +9,26 @@ import android.widget.TextView;
import com.mogo.commons.voice.AIAssist;
import com.mogo.commons.voice.IMogoVoiceCmdCallBack;
import com.mogo.map.MogoLatLng;
import com.mogo.module.common.entity.MarkerExploreWay;
import com.mogo.module.common.entity.V2XEventShowEntity;
import com.mogo.module.common.entity.V2XRoadEventEntity;
import com.mogo.module.v2x.R;
import com.mogo.module.v2x.V2XConst;
import com.mogo.module.v2x.V2XServiceManager;
import com.mogo.module.v2x.alarm.V2XEarlyWarningServer;
import com.mogo.module.v2x.scenario.scene.ugc.V2XEventUgcScenario;
import com.mogo.module.v2x.utils.EventTypeUtils;
import com.mogo.module.v2x.utils.V2XUtils;
import com.mogo.module.v2x.voice.V2XVoiceCallbackListener;
import com.mogo.module.v2x.voice.V2XVoiceConstants;
import com.mogo.module.v2x.voice.V2XVoiceManager;
import com.mogo.service.share.IMogoTanluProvider;
import com.mogo.service.share.TanluUploadParams;
import com.mogo.utils.network.utils.GsonUtil;
import java.util.HashMap;
import java.util.Map;
import static com.mogo.module.v2x.V2XConst.MODULE_NAME;
/**
@@ -53,7 +59,6 @@ public class V2XEventUgcVH extends V2XBaseViewHolder<V2XEventShowEntity> {
private V2XRoadEventEntity mV2XRoadEventEntity;
private V2XEventShowEntity mV2XEventShowEntity;
public V2XEventUgcVH(ViewGroup viewGroup) {
super(LayoutInflater.from(viewGroup.getContext())
.inflate(R.layout.item_v2x_event_ugc, viewGroup, false));
@@ -72,28 +77,31 @@ public class V2XEventUgcVH extends V2XBaseViewHolder<V2XEventShowEntity> {
@Override
public void onViewDetachedFromWindow(View v) {
//Logger.w(MODULE_NAME, "列表View V2XPushEventDetailVH 触发 onViewDetachedFromWindow");
// 反注册语音交互
V2XVoiceManager.INSTANCE
.unRegisterUnWakeVoice(V2XVoiceConstants.COMMAND_ZHIDAO_V2X_FEEDBACK_YONG_DU_YES_UN_WAKEUP)
.unRegisterUnWakeVoice(V2XVoiceConstants.COMMAND_ZHIDAO_V2X_FEEDBACK_YONG_DU_NO_UN_WAKEUP)
.unRegisterUnWakeVoice(V2XVoiceConstants.COMMAND_ZHIDAO_V2X_FEEDBACK_FENG_LU_YES_UN_WAKEUP)
.unRegisterUnWakeVoice(V2XVoiceConstants.COMMAND_ZHIDAO_V2X_FEEDBACK_FENG_LU_NO_UN_WAKEUP)
.unRegisterUnWakeVoice(V2XVoiceConstants.COMMAND_ZHIDAO_V2X_FEEDBACK_SHI_GU_YES_UN_WAKEUP)
.unRegisterUnWakeVoice(V2XVoiceConstants.COMMAND_ZHIDAO_V2X_FEEDBACK_SHI_GU_NO_UN_WAKEUP)
.unRegisterUnWakeVoice(V2XVoiceConstants.COMMAND_ZHIDAO_V2X_FEEDBACK_SHI_GONG_YES_UN_WAKEUP)
.unRegisterUnWakeVoice(V2XVoiceConstants.COMMAND_ZHIDAO_V2X_FEEDBACK_SHI_GONG_NO_UN_WAKEUP);
unRegisterVoice();
}
});
}
void unRegisterVoice() {
// 反注册语音交互
V2XVoiceManager.INSTANCE
.unRegisterUnWakeVoice(V2XVoiceConstants.COMMAND_ZHIDAO_V2X_FEEDBACK_YONG_DU_YES_UN_WAKEUP)
.unRegisterUnWakeVoice(V2XVoiceConstants.COMMAND_ZHIDAO_V2X_FEEDBACK_YONG_DU_NO_UN_WAKEUP)
.unRegisterUnWakeVoice(V2XVoiceConstants.COMMAND_ZHIDAO_V2X_FEEDBACK_FENG_LU_YES_UN_WAKEUP)
.unRegisterUnWakeVoice(V2XVoiceConstants.COMMAND_ZHIDAO_V2X_FEEDBACK_FENG_LU_NO_UN_WAKEUP)
.unRegisterUnWakeVoice(V2XVoiceConstants.COMMAND_ZHIDAO_V2X_FEEDBACK_SHI_GU_YES_UN_WAKEUP)
.unRegisterUnWakeVoice(V2XVoiceConstants.COMMAND_ZHIDAO_V2X_FEEDBACK_SHI_GU_NO_UN_WAKEUP)
.unRegisterUnWakeVoice(V2XVoiceConstants.COMMAND_ZHIDAO_V2X_FEEDBACK_SHI_GONG_YES_UN_WAKEUP)
.unRegisterUnWakeVoice(V2XVoiceConstants.COMMAND_ZHIDAO_V2X_FEEDBACK_SHI_GONG_NO_UN_WAKEUP);
}
@Override
public void initView(V2XEventShowEntity v2XEventShowEntity) {
try {
Log.w(MODULE_NAME + "_" + TAG, "v2XEventShowEntity=" + GsonUtil.jsonFromObject(v2XEventShowEntity));
if (v2XEventShowEntity == null) {
return;
}
@@ -121,12 +129,18 @@ public class V2XEventUgcVH extends V2XBaseViewHolder<V2XEventShowEntity> {
}
});
ivEventTypeIcon.setImageResource((Integer) ugcTitleStr[2]);
// UGC 问答数据统计
Map<String, Object> properties = new HashMap<>();
properties.put("content", (String) ugcTitleStr[1]);
V2XServiceManager.getMogoAnalytics().track(V2XConst.V2X_ASK_ALERT, properties);
}
ivEventReportTrue.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
manualMarkingTrafficJam(1);
}
});
@@ -143,10 +157,36 @@ public class V2XEventUgcVH extends V2XBaseViewHolder<V2XEventShowEntity> {
}
}
// UGC 提问回答或消失
private void dataStatistics(int result) {
Map<String, Object> properties = new HashMap<>();
properties.put("result", result);
V2XServiceManager.getMogoAnalytics().track(V2XConst.V2X_ASK_RESULT, properties);
}
/**
* 对道路事件进行反馈
*/
void manualMarkingTrafficJam(int status) {
unRegisterVoice();
if (status == 1) {
// 上报事故
TanluUploadParams params =
new TanluUploadParams(
mNoveltyInfo.getPoiType(),
IMogoTanluProvider.UPLOAD_FROM_STRATEGY_UGC,
mNoveltyInfo.getInfoIdInt(),
new MogoLatLng(mNoveltyInfo.getLocation().getLat(),
mNoveltyInfo.getLocation().getLon())
);
V2XServiceManager.getTanluManager().uploadRoadCondition(params);
dataStatistics(1);
} else if (status == 0) {
dataStatistics(2);
}
AIAssist.getInstance(V2XUtils.getApp()).speakTTSVoice("谢谢,您的反馈将帮助更多车友。", null);
V2XServiceManager
.getV2XRefreshModel()

View File

@@ -82,18 +82,6 @@ public class V2XEarlyWarningServer {
intent.putExtra(V2XConst.BROADCAST_SCENE_EXTRA_KEY, v2xMessageEntity);
LocalBroadcastManager.getInstance(V2XUtils.getApp()).sendBroadcast(intent);
// 上报事故
TanluUploadParams params =
new TanluUploadParams(
v2XRoadEventEntity.getPoiType(),
IMogoTanluProvider.UPLOAD_FROM_STRATEGY_UGC,
v2XRoadEventEntity.getNoveltyInfo().getInfoIdInt(),
new MogoLatLng(v2XRoadEventEntity.getLocation().getLat(),
v2XRoadEventEntity.getLocation().getLon())
);
V2XServiceManager.getTanluManager().uploadRoadCondition(params);
}
// 移出已经预警的事件列表
//V2XAlarmServer.mAlertRoadEventList.remove(v2XRoadEventEntity);

View File

@@ -24,8 +24,8 @@ import com.mogo.module.v2x.view.V2XEventPanelHistoryCountView
import com.mogo.module.v2x.voice.V2XVoiceCallbackListener
import com.mogo.module.v2x.voice.V2XVoiceConstants
import com.mogo.module.v2x.voice.V2XVoiceManager
import com.mogo.service.eventpanel.IEventPanelProvider
import com.mogo.utils.logger.Logger
import com.mogo.utils.storage.SharedPrefsMgr
/**
@@ -52,6 +52,7 @@ class V2XEventPanelFragment : MvpFragment<V2XEventPanelFragment, EventPanelPrese
private var mRbScenarioHistory: RadioButton? = null
private var mRbSurroundingEvent: RadioButton? = null
private var mRbShareEvents: RadioButton? = null
private var todayFirstForShared: String? = ""
private val mV2XScenarioHistoryFragment = V2XScenarioHistoryFragment()
private val mV2XShareEventsFragment = V2XShareEventsFragment()

View File

@@ -11,6 +11,7 @@ import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.mogo.commons.mvp.MvpFragment;
import com.mogo.commons.voice.AIAssist;
import com.mogo.module.common.entity.V2XHistoryScenarioData;
import com.mogo.module.v2x.R;
import com.mogo.module.v2x.SpacesItemDecoration;
@@ -21,6 +22,7 @@ import com.mogo.module.v2x.manager.V2XStatusDescriptor;
import com.mogo.module.v2x.presenter.ScenarioHistoryPresenter;
import com.mogo.module.v2x.utils.ThreadUtils;
import com.mogo.module.v2x.utils.V2XSQLiteUtils;
import com.mogo.module.v2x.utils.V2XUtils;
import com.mogo.module.v2x.view.V2XListEmptyView;
import com.mogo.utils.logger.Logger;
import com.mogo.utils.network.utils.GsonUtil;
@@ -126,10 +128,28 @@ public class V2XScenarioHistoryFragment
mClHistoryList.setVisibility(View.GONE);
}
mV2XScenarioHistoryAdapter.notifyDataSetChanged();
ttsForHistoryFirstToday();
}
});
}
/*
* 出行动态 TTS播报
* */
private void ttsForHistoryFirstToday() {
boolean hasBroadTts = V2XUtils.isFirstTodayWithKey("TTS_FOR_HISTORY_SELECTED");
if (hasBroadTts == false) {
if (mV2XHistoryScenarioData.size() > 0) {
AIAssist.getInstance(V2XUtils.getApp()).
speakTTSVoice("小智为您记录了今天的出行事件", null);
} else {
AIAssist.getInstance(V2XUtils.getApp()).
speakTTSVoice("小智在这里为您记录今天的出行事件", null);
}
}
}
@Override
public void onResume() {
super.onResume();

View File

@@ -87,7 +87,7 @@ public class V2XShareEventsFragment extends MvpFragment<V2XShareEventsFragment,
ThreadUtils.runOnUiThread(new Runnable() {
@Override
public void run() {
animatioonAction(View.VISIBLE);
animationAction(View.VISIBLE);
}
});
@@ -144,7 +144,7 @@ public class V2XShareEventsFragment extends MvpFragment<V2XShareEventsFragment,
int shareNum = resultData.getResult().getEnthusiasmIndex().getShareNum();
int approveNum = resultData.getResult().getEnthusiasmIndex().getLikeNum();
double enthusiasm = resultData.getResult().getEnthusiasmIndex().getEnthusiasmIndex();
Log.d(TAG, String.valueOf(enthusiasm)+"TTS播报热心指数个数");
Log.d(TAG, String.valueOf(enthusiasm) + "TTS播报热心指数个数");
String ttsString = "";
if (enthusiasm <= 2) {
ttsString = "您目前已完成" + shareNum + "次分享,获得" + approveNum + "次车友认同,热心指数" + enthusiasm
@@ -164,7 +164,8 @@ public class V2XShareEventsFragment extends MvpFragment<V2XShareEventsFragment,
* 我的分享列表数据处理
* */
private void loadSuccessWithShareEventList(Object result) {
animatioonAction(View.GONE);
animationAction(View.GONE);
V2XShareEventItem resultData = (V2XShareEventItem) result;
V2XShareEventLoadMoreItem item = new V2XShareEventLoadMoreItem();
if (resultData != null && resultData.getResult() != null) {
@@ -211,7 +212,7 @@ public class V2XShareEventsFragment extends MvpFragment<V2XShareEventsFragment,
}
private void animatioonAction(int visible) {
private void animationAction(int visible) {
if (visible == View.VISIBLE) {
if (loadingView != null) {
loadingView.start();
@@ -227,13 +228,22 @@ public class V2XShareEventsFragment extends MvpFragment<V2XShareEventsFragment,
@Override
protected ShareEventsPresenter createPresenter() {
Log.d(TAG, "createPresenter");
ttsForSharedFirstToday();
return new ShareEventsPresenter(this);
}
private void ttsForSharedFirstToday() {
boolean hasBroadTts = V2XUtils.isFirstTodayWithKey("TTS_FOR_SHARED_SELECTED");
Log.d(TAG,"shouldBroadTts"+hasBroadTts);
if (hasBroadTts == false) {
AIAssist.getInstance(V2XUtils.getApp()).speakTTSVoice("您可以在这里查看历史的分享记录", null);
}
}
@Override
public void loadMoreShareEventList() {
Log.d(TAG, "page--" + pageNum);
animatioonAction(View.VISIBLE);
animationAction(View.VISIBLE);
pageNum += 1;
v2XShareNetworkModel.getShareEventList(pageNum, 10, new V2XRefreshCallback() {
@Override

View File

@@ -25,6 +25,7 @@ import androidx.recyclerview.widget.RecyclerView;
import com.alibaba.android.arouter.launcher.ARouter;
import com.mogo.commons.mvp.MvpFragment;
import com.mogo.commons.voice.AIAssist;
import com.mogo.map.MogoLatLng;
import com.mogo.map.marker.IMogoMarker;
import com.mogo.map.marker.anim.OnMarkerAnimationListener;
@@ -38,6 +39,7 @@ import com.mogo.module.v2x.adapter.V2XSurroundingAdapter;
import com.mogo.module.v2x.entity.panel.SurroundingConstruction;
import com.mogo.module.v2x.listener.SurroundingItemClickListener;
import com.mogo.module.v2x.presenter.SurroundingEventPresenter;
import com.mogo.module.v2x.utils.V2XUtils;
import com.mogo.module.v2x.view.SurroundingEventView;
import com.mogo.module.common.view.NetworkLoadingView;
import com.mogo.module.v2x.view.SurroundingMarginDecoration;
@@ -189,8 +191,22 @@ public class V2XSurroundingFragment extends MvpFragment<SurroundingEventView, Su
mRecyclerView.setVisibility(View.GONE);
mEmptyLayout.setVisibility(View.VISIBLE);
}
ttsForSurroundingFirstToday();
}
/*
* 出行动态 TTS播报
* */
private void ttsForSurroundingFirstToday() {
boolean hasBroadTts = V2XUtils.isFirstTodayWithKey("TTS_FOR_SURROUNDING_SELECTED");
if (hasBroadTts == false) {
if (poiInfosList.size() > 0) {
AIAssist.getInstance(V2XUtils.getApp()).
speakTTSVoice("发现周边" + poiInfosList.size() + "条交通信息", null);
} else {
}
}
}
private Map<String, SurroundingConstruction> getPoiTypeMap(List<MarkerExploreWay> list) {
Map<String, SurroundingConstruction> mPoiTypeMarkers = new HashMap<>();

View File

@@ -70,7 +70,7 @@ public class V2XEventUgcWindow extends RelativeLayout
}
public void initView(Context context) {
Logger.w(MODULE_NAME, "V2X-初始化疲劳驾驶");
Logger.w(MODULE_NAME, "V2X-初始化UGC的Window");
LayoutInflater.from(context).inflate(R.layout.window_fault_help, this);
// 详情列表
mRecyclerView = findViewById(R.id.rvRoadEventList);

View File

@@ -24,6 +24,7 @@ import androidx.core.content.FileProvider;
import androidx.fragment.app.FragmentActivity;
import com.mogo.utils.ThreadPoolService;
import com.mogo.utils.storage.SharedPrefsMgr;
import java.io.BufferedReader;
import java.io.File;
@@ -31,11 +32,15 @@ import java.io.FileReader;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.sql.Time;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.concurrent.CopyOnWriteArrayList;
import java.util.concurrent.ExecutorService;
@@ -315,6 +320,21 @@ public class V2XUtils {
}
}
/*
* 当天第一次
* */
public static boolean isFirstTodayWithKey(String key) {
SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd", Locale.US);
String formatString = format.format(new Date());
String value = SharedPrefsMgr.getInstance(V2XUtils.getApp()).getString(key);
if (value.equals(formatString)) {
return true;
} else {
SharedPrefsMgr.getInstance(V2XUtils.getApp()).putString(key, formatString);
return false;
}
}
///////////////////////////////////////////////////////////////////////////
// TransActivity
///////////////////////////////////////////////////////////////////////////