Merge branch 'feature/v1.0.2' of gitlab.zhidaoauto.com:ecos/yycp-service/Launcher into feature/v1.0.2

This commit is contained in:
wangcongtao
2020-03-17 21:26:18 +08:00
7 changed files with 143 additions and 21 deletions

2
.idea/misc.xml generated
View File

@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" project-jdk-name="JDK" project-jdk-type="JavaSDK">
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" project-jdk-name="1.8" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/build/classes" />
</component>
</project>

View File

@@ -32,6 +32,15 @@ public class ExtensionsModuleConst {
public static final String CANCLE_SHARE = "com.zhidao.launcher.cancle.share";
public static final String CLOSE_PAGE = "com.zhidao.launcher.close.page";
public static final String CLOSE = "com.zhidao.launcher.close";
//唤醒指令
//分享路况/上报路况/上报拥堵/上报交通检查/上报封路 唤醒
public static final String UPLOAD_ROAD_CONDITION_AWAKEN = "com.zhidao.pathfinder.report.roadCondition";
//关闭分享框 唤醒
public static final String SHARE_DIALOG_CLOSE = "com.zhidao.share.close";
//我要分享
public static final String GO_TO_SHARE = "com.zhidao.share";
/*** 分享 结束 **/
@@ -58,4 +67,5 @@ public class ExtensionsModuleConst {
public static final String LAUNCHER_SHARE_CLICK = "Launcher_Share_Click";
public static final String CARNET_USER_UPLOAD = "CarNet_user_upload";
}

View File

@@ -3,6 +3,8 @@ package com.mogo.module.extensions.entrance;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.text.TextUtils;
import android.util.Log;
import com.alibaba.android.arouter.launcher.ARouter;
import com.mogo.commons.mvp.Presenter;
@@ -12,8 +14,12 @@ import com.mogo.module.extensions.ExtensionsModuleConst;
import com.mogo.module.share.ShareControl;
import com.mogo.service.MogoServicePaths;
import com.mogo.service.analytics.IMogoAnalytics;
import com.mogo.service.intent.IMogoIntentListener;
import com.mogo.service.intent.IMogoIntentManager;
import com.mogo.utils.logger.Logger;
import org.json.JSONObject;
import java.util.HashMap;
import java.util.Map;
@@ -27,13 +33,18 @@ public class EntrancePresenter extends Presenter<EntranceView> {
private Context mContext;
private IMogoAnalytics mAnalytics;
private static final String TAG = "EntrancePresenter";
private IMogoIntentManager mogoIntentManager;
public EntrancePresenter(Context context, EntranceView view) {
super(view);
mContext = context;
mAnalytics = (IMogoAnalytics) ARouter.getInstance().build(MogoServicePaths.PATH_UTILS_ANALYTICS).navigation(getContext());
mogoIntentManager = (IMogoIntentManager) ARouter.getInstance().build(MogoServicePaths.PATH_INTENT_MANAGER).navigation(getContext());
registerUnWake();
registerAwakeVoice();
}
private void registerUnWake() {
@@ -48,8 +59,6 @@ public class EntrancePresenter extends Presenter<EntranceView> {
ExtensionsModuleConst.CMD_TRAFFIC_CHECK, mogoVoiceListener);
AIAssist.getInstance(mContext).registerUnWakeupCommand(ExtensionsModuleConst.UPLOAD_ROAD_CLOSURE,
ExtensionsModuleConst.CMD_ROAD_CLOSURE, mogoVoiceListener);
// AIAssist.getInstance(mContext).registerUnWakeupCommand(ExtensionsModuleConst.SHARE_OIL_PRICE,
// ExtensionsModuleConst.CMD_SHARE_OIL_PRICE, mogoVoiceListener);
}
/**
@@ -67,8 +76,6 @@ public class EntrancePresenter extends Presenter<EntranceView> {
uploadTrfficCheck();
} else if (cmd.equals(ExtensionsModuleConst.UPLOAD_ROAD_CLOSURE)) { //上报封路
uploadRoadClosed();
// } else if (cmd.equals(ExtensionsModuleConst.SHARE_OIL_PRICE)) { //分享油价
// shareOilPrice();
}
}
@@ -89,6 +96,62 @@ public class EntrancePresenter extends Presenter<EntranceView> {
}
};
/**
* 注册唤醒命令
*/
private void registerAwakeVoice() {
mogoIntentManager.registerIntentListener(ExtensionsModuleConst.GO_TO_SHARE, mogoIntentListener);
mogoIntentManager.registerIntentListener(ExtensionsModuleConst.SHARE_DIALOG_CLOSE, mogoIntentListener);
mogoIntentManager.registerIntentListener(ExtensionsModuleConst.UPLOAD_ROAD_CONDITION_AWAKEN, mogoIntentListener);
}
/**
* 唤醒语音
*/
private IMogoIntentListener mogoIntentListener = new IMogoIntentListener() {
@Override
public void onIntentReceived(String intentStr, Intent intent) {
String data = intent.getStringExtra("data");
Logger.d(TAG, "唤醒 mogoIntentListener intentStr =" + intentStr + ">>data =" + data);
if (intentStr.equals(ExtensionsModuleConst.GO_TO_SHARE)) { //我要分享 --ok
String conditionData = intent.getStringExtra("data");
Log.d(TAG, "唤醒 mogoIntentListener intentStr =" + intentStr + ">>conditionData =" + conditionData);
try {
JSONObject jsonObject = new JSONObject(data);
String typeString = jsonObject.get("ob").toString();
Log.d(TAG, "mogoIntentListener specified typeString = " + typeString);
if (!TextUtils.isEmpty(typeString)) {
if (typeString.equals("封路")) {
Log.d(TAG, "mogoIntentListener 封路 -------> ");
uploadRoadClosed();
} else if (typeString.equals("油价")) {
Log.d(TAG, "mogoIntentListener 油价 -------> ");
shareOilPrice();
} else if (typeString.equals("交通检查")) {
Log.d(TAG, "mogoIntentListener 交通检查 -------> ");
uploadTrfficCheck();
}
} else {
ShareControl.getInstance(mContext).showDialog();
Log.d(TAG, "mogoIntentListener 我要分享 ----> ");
traceData("2");
}
} catch (Exception e) {
e.printStackTrace();
}
} else if (intentStr.equals(ExtensionsModuleConst.UPLOAD_ROAD_CONDITION_AWAKEN)) {
//分享路况/上报路况/上报拥堵 唤醒
Log.d(TAG, "mogoIntentListener 分享路况 唤醒 ----> ");
uploadRoadCondition();
} else if (intentStr.equals(ExtensionsModuleConst.SHARE_DIALOG_CLOSE)) { //关闭分享框 唤醒
ShareControl.getInstance(mContext).dismissDialog();
Log.d(TAG, "mogoIntentListener 关闭分享框 唤醒 ----> ");
}
}
};
private void uploadRoadCondition() {
traceTanluData("2");
sendShareReceiver("1");
@@ -97,13 +160,6 @@ public class EntrancePresenter extends Presenter<EntranceView> {
ShareControl.getInstance(mContext).dismissDialog();
}
private void shareOilPrice() {
Intent intent = new Intent();
intent.setData(Uri.parse("freshthing://com.zhidao.fresh.things/shareOilPrice"));
mContext.startActivity(intent);
traceTypeData("2");
}
private void uploadTrfficCheck() {
sendShareReceiver("2");
Logger.d("EntrancePresenter", "mogoIntentListener 分享交通检查 ----> ");
@@ -118,6 +174,25 @@ public class EntrancePresenter extends Presenter<EntranceView> {
ShareControl.getInstance(mContext).dismissDialog();
}
/**
* 分享/上报按钮点击 from=1 手动点击 from=2 语音打开
*
* @param from
*/
private void traceData(String from) {
Map<String, Object> properties = new HashMap<>();
properties.put("from", from);
mAnalytics.track(ExtensionsModuleConst.LAUNCHER_SHARE_CLICK, properties);
}
private void shareOilPrice() {
Intent intent = new Intent();
intent.setData(Uri.parse("freshthing://com.zhidao.fresh.things/shareOilPrice"));
getContext().startActivity(intent);
traceTypeData("2");
ShareControl.getInstance(mContext).dismissDialog();
}
/**
* 发送广播 1拥堵2交通检查3封路
*/

View File

@@ -292,7 +292,7 @@ public class MapPresenter extends Presenter<MapView> implements
case VoiceConstants.CMD_MAP_DISPLAY_OVERVIEW_MODE_UN_WAKEUP:
AIAssist.getInstance(getContext()).speakTTSVoice("已切换", null);
case VoiceConstants.CMD_MAP_DISPLAY_OVERVIEW_MODE:
mView.getUIController().displayOverview();
//mView.getUIController().displayOverview();
break;
case VoiceConstants.CMD_MAP_CONTINUE_NAVI_MODE_UN_WAKEUP:
AIAssist.getInstance(getContext()).speakTTSVoice("已切换", null);

View File

@@ -56,14 +56,18 @@ class CategorySearchFragment : BaseFragment(), CategoryView, IMogoVoiceCmdCallBa
private val TAG: String = "CategorySearchFragment"
private var addMarkers: List<IMogoMarker>? = null
var arrayList = ArrayList<MogoMarkerOptions>()
private lateinit var cmds: ArrayList<String>
override fun renderSearchPoiResult(datums: List<MogoPoiItem>?) {
mAdapter.setDatas(datums)
cv_search_result.visibility = View.VISIBLE
pb_path.visibility = View.GONE
var arrayList = ArrayList<MogoMarkerOptions>()
AIAssist.getInstance(context).speakTTSVoice(String.format("搜索到%d个位置请选择",datums?.size))
AIAssist.getInstance(context)
.speakTTSVoice(String.format("搜索到%d个位置请选择", datums?.size))
arrayList.clear()
for (index in 0 until datums!!.size) {
var decodeResource =
BitmapFactory.decodeResource(
@@ -83,18 +87,42 @@ class CategorySearchFragment : BaseFragment(), CategoryView, IMogoVoiceCmdCallBa
.longitude(datums[index].point?.lng ?: 0.0)
arrayList.add(options)
var int2String = StringUtils.int2String(index)
var int2String = StringUtils.int2String(index+1)
AIAssist.getInstance(context)
.registerUnWakeupCommand(
"position" + index, arrayOf("" + int2String + "", "" + int2String + ""), this
)
cmds.add("position" + index)
}
addMarkers = SearchServiceHolder.getMarkerManger()
.addMarkers(TAG, arrayList, true)
moveMapToRight()
}
private fun registerVoice() {
for (index in 0 until cmds.size) {
var int2String = StringUtils.int2String(index+1)
AIAssist.getInstance(context)
.registerUnWakeupCommand(
"position" + index, arrayOf("" + int2String + "", "" + int2String + ""), this
)
}
}
override fun onHiddenChanged(hidden: Boolean) {
super.onHiddenChanged(hidden)
if (!hidden) {
addMarkers = SearchServiceHolder.getMarkerManger()
.addMarkers(TAG, arrayList, true)
registerVoice()
} else {
unRegisterVoice()
}
}
private lateinit var mAdapter: SearchCategoryAdapter
private lateinit var mSearchPresenter: CategoryPresenter
@@ -107,7 +135,7 @@ class CategorySearchFragment : BaseFragment(), CategoryView, IMogoVoiceCmdCallBa
)
mSearchPresenter = CategoryPresenter(this)
lifecycle.addObserver(mSearchPresenter)
cmds=ArrayList<String>()
cmds = ArrayList<String>()
}
override fun getLayoutId(): Int {
@@ -159,6 +187,10 @@ class CategorySearchFragment : BaseFragment(), CategoryView, IMogoVoiceCmdCallBa
?.setIcon(getMarkerIcon(mAdapter.lastPosition))
addMarkers?.get(mAdapter.current)
?.setIcon(getMarkerIcon(mAdapter.current))
arrayList.get(mAdapter.lastPosition)
.icon(getMarkerIcon(mAdapter.lastPosition))
arrayList.get(mAdapter.current)
.icon(getMarkerIcon(mAdapter.current))
}
private fun getMarkerIcon(index: Int): Bitmap {
@@ -187,8 +219,13 @@ class CategorySearchFragment : BaseFragment(), CategoryView, IMogoVoiceCmdCallBa
SearchServiceHolder.getMarkerManger()
.removeMarkers(TAG)
unRegisterVoice()
}
private fun unRegisterVoice() {
cmds.forEach {
AIAssist.getInstance(context).unregisterUnWakeupCommand(it)
AIAssist.getInstance(context)
.unregisterUnWakeupCommand(it)
}
}

View File

@@ -29,7 +29,7 @@
android:layout_width="@dimen/dp_76"
android:layout_height="@dimen/dp_76"
android:layout_gravity="center"
android:layout_marginTop="@dimen/dp_6"
android:layout_marginTop="@dimen/dp_8"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
@@ -43,7 +43,7 @@
android:layout_width="@dimen/dp_60"
android:layout_height="@dimen/dp_60"
android:layout_gravity="center"
android:layout_marginTop="@dimen/dp_12"
android:layout_marginTop="@dimen/dp_16"
android:visibility="gone"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"

View File

@@ -78,7 +78,7 @@ public class FragmentStack {
if ( descriptor.hasTransition() ) {
mFragmentTransaction.setTransition( FragmentTransaction.TRANSIT_FRAGMENT_OPEN );
}
mFragmentTransaction.addToBackStack( null );
//mFragmentTransaction.addToBackStack( null );
mFragmentTransaction.commitAllowingStateLoss();
if ( descriptor.hasTransition() ) {
mFragmentManager.executePendingTransactions();