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

This commit is contained in:
wangcongtao
2020-02-13 14:07:47 +08:00
14 changed files with 206 additions and 57 deletions

View File

@@ -45,6 +45,9 @@ dependencies {
implementation project(":foudations:mogo-utils")
compileOnly project(":libraries:mogo-map-api")
}
api 'org.greenrobot:eventbus:3.1.1'
}
apply from: new File(rootProject.rootDir, "gradle/upload.gradle").toString()

View File

@@ -26,7 +26,7 @@ public class NaviNoticeDialog extends Dialog implements View.OnClickListener {
private IMogoMapService mMogoMapService;
public NaviNoticeDialog(@NonNull Context context) {
super(context);
super(context, R.style.Theme_AppCompat_Dialog);
this.mContext = context;
mMogoMapService = (IMogoMapService) ARouter.getInstance()
.build(MogoServicePaths.PATH_SERVICES_MAP)

View File

@@ -40,7 +40,7 @@ public class VoiceConstants {
*/
public static final String CMD_MAP_HISTORY = "com.ileja.navi.map.history";
public static final String CMD_MAP_HISTORY_UN_WAKEUP = "CMD_MAP_HISTORY_UN_WAKEUP";
public static final String[] CMD_MAP_HISTORY_TRIGGER_WORDS = {"查询导航历史记录"};
public static final String[] CMD_MAP_HISTORY_TRIGGER_WORDS = {"导航历史"};
/**

View File

@@ -17,6 +17,7 @@ import io.reactivex.ObservableEmitter
import io.reactivex.ObservableOnSubscribe
import io.reactivex.android.schedulers.AndroidSchedulers
import io.reactivex.schedulers.Schedulers
import org.greenrobot.eventbus.EventBus
/**
* @author zyz
@@ -104,6 +105,8 @@ object AddressManager {
}
fun insert(searchPoi: SearchPoi) {
EventBus.getDefault().post(searchPoi)
if (searchPoi.type == DataConstants.TYPE_COMPANY_ADDRESS) {
companyAddress = searchPoi
} else {

View File

@@ -115,4 +115,8 @@ public abstract class RecycleBaseAdapter<T> extends
}
return list.get(position);
}
public List<T> getList() {
return list;
}
}

View File

@@ -2,9 +2,12 @@ package com.mogo.module.navi.ui.search
import android.app.Service
import android.os.Bundle
import android.text.TextUtils
import android.view.View
import androidx.fragment.app.Fragment
import androidx.recyclerview.widget.LinearLayoutManager
import com.mogo.commons.voice.AIAssist
import com.mogo.commons.voice.IMogoVoiceCmdCallBack
import com.mogo.map.MogoLatLng
import com.mogo.map.navi.IMogoNaviListener
import com.mogo.map.navi.MogoCalculatePath
@@ -26,7 +29,52 @@ import kotlinx.android.synthetic.main.include_search_bar.iv_navi_back
* @author zyz
* 2020-01-09.
*/
class ChoosePathFragment : BaseFragment(), IMogoNaviListener {
class ChoosePathFragment : BaseFragment(), IMogoNaviListener, IMogoVoiceCmdCallBack {
override fun onCmdSelected(cmd: String?) {
when (cmd) {
"firstPath" -> {
selectItem(0)
startNavi()
}
"secondPath" -> {
selectItem(1)
startNavi()
}
"thirdPath" -> {
selectItem(2)
startNavi()
}
"startNavi" -> {
startNavi()
}
}
}
private fun selectItem(index: Int) {
if (mAdapter.list.size > index) {
selectPath(mAdapter.list[index])
}
}
override fun onCmdAction(speakText: String?) {
}
override fun onCmdCancel(speakText: String?) {
}
override fun onSpeakEnd(speakText: String?) {
}
override fun onSpeakSelectTimeOut(speakText: String?) {
}
override fun onInitNaviFailure() {
}
@@ -54,14 +102,19 @@ class ChoosePathFragment : BaseFragment(), IMogoNaviListener {
override fun onoCalculateFailed() {
}
override fun onUpdateTraffic(traffic: MogoTraffic?) {
}
override fun onUpdateTraffic(traffic: MogoTraffic?) {
}
private lateinit var mAdapter: CalculatePathAdapter
private lateinit var mAdapter: CalculatePathAdapter
override fun getLayoutId(): Int {
return R.layout.fragment_search_category
}
val firstPath: String = "第一个"
val secondPath: String = "第二个"
val thirdPath: String = "第三个"
val startNavi: String = "开始导航"
var mogoTip: MogoLatLng? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
@@ -69,6 +122,16 @@ class ChoosePathFragment : BaseFragment(), IMogoNaviListener {
SearchServiceHolder.statusManager.setSearchUIShow(
MogoModulePaths.PATH_FRAGMENT_CHOOSE_PAHT, true
)
AIAssist.getInstance(context)
.registerUnWakeupCommand("firstPath", arrayOf<String>(firstPath), this)
AIAssist.getInstance(context)
.registerUnWakeupCommand("secondPath", arrayOf<String>(secondPath), this)
AIAssist.getInstance(context)
.registerUnWakeupCommand("thirdPath", arrayOf<String>(thirdPath), this)
AIAssist.getInstance(context)
.registerUnWakeupCommand("startNavi", arrayOf<String>(startNavi), this)
}
// 是否开启导航
@@ -101,11 +164,7 @@ class ChoosePathFragment : BaseFragment(), IMogoNaviListener {
rv_search_result.adapter = mAdapter
tv_navi_navi.setOnClickListener {
SearchServiceHolder.getNavi()
.startNavi(false)
SearchServiceHolder.getMapUIController().recoverLockMode()
isStartedNavi = true
SearchServiceHolder.fragmentManager.clearAll()
startNavi()
}
SearchServiceHolder.getNavi()
@@ -115,28 +174,55 @@ class ChoosePathFragment : BaseFragment(), IMogoNaviListener {
mAdapter.setOnClickListener {
var item = it.getTag(R.id.tag_item) as MogoCalculatePath
selectPath(item)
}
SearchServiceHolder.getMarkerManger()
.removeMarkers()
}
private fun startNavi() {
SearchServiceHolder.getNavi()
.startNavi(false)
SearchServiceHolder.getMapUIController()
.recoverLockMode()
isStartedNavi = true
SearchServiceHolder.fragmentManager.clearAll()
}
private fun selectPath(item: MogoCalculatePath?) {
item?.let {
mAdapter.setSelectTag(item.tagId)
SearchServiceHolder.getNavi()
.itemClickInteraction.onItemClicked(item.tagId)
}
SearchServiceHolder.getMarkerManger().removeMarkers()
}
override fun onDestroyView() {
super.onDestroyView()
SearchServiceHolder.listenerCenter.unregisterMogoNaviListener(
MogoModulePaths.PATH_FRAGMENT_CHOOSE_PAHT
MogoModulePaths.PATH_FRAGMENT_CHOOSE_PAHT
)
SearchServiceHolder.statusManager.setSearchUIShow(
MogoModulePaths.PATH_FRAGMENT_CHOOSE_PAHT, false
MogoModulePaths.PATH_FRAGMENT_CHOOSE_PAHT, false
)
if (!isStartedNavi) {
SearchServiceHolder.getNavi().clearCalculatePaths()
SearchServiceHolder.getNavi()
.clearCalculatePaths()
}
}
AIAssist.getInstance(context)
.unregisterUnWakeupCommand("firstPath")
AIAssist.getInstance(context)
.unregisterUnWakeupCommand("secondPath")
AIAssist.getInstance(context)
.unregisterUnWakeupCommand("thirdPath")
AIAssist.getInstance(context)
.unregisterUnWakeupCommand("startNavi")
}
companion object {
fun newInstance(searchPoi: MogoLatLng): Fragment {
var bundle = Bundle()

View File

@@ -14,6 +14,8 @@ import com.mogo.map.constants.BroadcastMode
import com.mogo.map.uicontroller.EnumMapUI
import com.mogo.module.common.MogoModulePaths
import com.mogo.module.navi.R
import com.mogo.module.navi.bean.SearchPoi
import com.mogo.module.navi.constants.DataConstants
import com.mogo.module.navi.constants.SearchServiceHolder
import com.mogo.module.navi.manager.AddressManager
import com.mogo.module.navi.manager.SettingManager
@@ -41,6 +43,9 @@ import kotlinx.android.synthetic.main.fragment_navi_setting.tv_navi_clear_compan
import kotlinx.android.synthetic.main.fragment_navi_setting.tv_navi_clear_home_address
import kotlinx.android.synthetic.main.fragment_navi_setting.tv_navi_company_address
import kotlinx.android.synthetic.main.fragment_navi_setting.tv_navi_home_address
import org.greenrobot.eventbus.EventBus
import org.greenrobot.eventbus.Subscribe
import org.greenrobot.eventbus.ThreadMode
import java.util.HashMap
/**
@@ -103,6 +108,9 @@ class NaviSettingFragment : BaseFragment(), OnCheckedChangeListener {
}
initViews()
initEvent()
EventBus.getDefault()
.register(this)
}
private fun initViews() {
@@ -172,11 +180,11 @@ class NaviSettingFragment : BaseFragment(), OnCheckedChangeListener {
when (checkedId) {
R.id.rb_navi_day -> {
SearchServiceHolder.getMapUIController()
.changeMapMode(EnumMapUI.Type_Night)
.changeMapMode(EnumMapUI.Type_Light)
}
R.id.rb_navi_night -> {
SearchServiceHolder.getMapUIController()
.changeMapMode(EnumMapUI.Type_Light)
.changeMapMode(EnumMapUI.Type_Night)
}
R.id.rb_navi_auto -> {
SearchServiceHolder.getMapUIController()
@@ -202,13 +210,12 @@ class NaviSettingFragment : BaseFragment(), OnCheckedChangeListener {
tv_navi_clear_home_address.setOnClickListener {
AddressManager.deleteHome()
updateHome()
clearHome()
}
tv_navi_clear_company_address.setOnClickListener {
AddressManager.deleteCompany()
updateCompany()
clearCompany()
}
tv_navi_company_address.setOnClickListener {
@@ -234,6 +241,18 @@ class NaviSettingFragment : BaseFragment(), OnCheckedChangeListener {
}
}
private fun clearHome(){
tv_navi_clear_home_address.visibility = View.GONE
tv_navi_home_address.text=getString(R.string.navi_set_home)
}
private fun clearCompany(){
tv_navi_clear_company_address.visibility = View.GONE
tv_navi_company_address.text=getString(R.string.navi_set_company)
}
private fun updateCompany() {
if (AddressManager.hasCompany()) {
tv_navi_company_address.text = AddressManager.companyAddress?.address
@@ -242,4 +261,28 @@ class NaviSettingFragment : BaseFragment(), OnCheckedChangeListener {
tv_navi_clear_company_address.visibility = View.GONE
}
}
/**
* 分享弹框
* @param event
*/
@Subscribe(threadMode = ThreadMode.MAIN)
fun onEventBus(searchPoi: SearchPoi?) {
if (searchPoi == null) {
return
}
if (searchPoi?.type == DataConstants.TYPE_COMPANY_ADDRESS) {
tv_navi_company_address.text=searchPoi.address
tv_navi_clear_company_address.visibility=View.VISIBLE
} else {
tv_navi_home_address.text=searchPoi.address
tv_navi_clear_home_address.visibility=View.VISIBLE
}
}
override fun onDestroyView() {
super.onDestroyView()
EventBus.getDefault().unregister(this)
}
}

View File

@@ -265,7 +265,7 @@
android:layout_width="wrap_content"
android:layout_height="@dimen/module_search_txt_setting_width"
android:layout_marginTop="@dimen/dp_40"
android:text="@string/preference_navi_sound_type"
android:text="@string/preference_navi_day_mode"
android:textColor="@color/white_80"
android:textSize="@dimen/txt_normal"
app:layout_constraintLeft_toLeftOf="parent"

View File

@@ -22,6 +22,7 @@
android:layout_marginRight="@dimen/module_search_btn_right_margin"
android:gravity="center"
android:id="@+id/tv_navi_search"
android:visibility="gone"
android:textColor="@color/white"
android:textSize="@dimen/module_search_txt_big"
android:background="@drawable/shape_round_blue_grident"

View File

@@ -30,7 +30,9 @@
android:layout_marginTop="4.5dp"
android:textColor="@color/white"
android:textSize="@dimen/dp_50"
app:layout_constraintLeft_toLeftOf="@+id/amap_calculate_item_strategy_name"
app:layout_constraintLeft_toLeftOf="parent"
android:layout_marginLeft="@dimen/dp_40"
app:layout_constraintTop_toBottomOf="@+id/amap_calculate_item_strategy_name"
tools:text="40小时55分" />

View File

@@ -39,4 +39,5 @@
<string name="navi_set_home">去设置家</string>
<string name="navi_clear">清除</string>
<string name="navi_set_company">去设置公司</string>
<string name="preference_navi_day_mode">日夜模式</string>
</resources>

View File

@@ -77,7 +77,8 @@ public class MapMarkerManager implements IMogoMarkerClickListener, IMogoOnMessag
.getMogoSocketManager()
.registerOnMessageListener(401001, this);
MarkerServiceHandler.getMogoCardManager().registerCardChangedListener("LAUNCHER_MARKER_MODULE", new IMogoCardChangedListener() {
MarkerServiceHandler.getMogoCardManager()
.registerCardChangedListener("LAUNCHER_MARKER_MODULE", new IMogoCardChangedListener() {
@Override
public void onSwitched(int position, String moduleName) {
@@ -184,26 +185,32 @@ public class MapMarkerManager implements IMogoMarkerClickListener, IMogoOnMessag
// 对指定类型高亮处理
public synchronized static void highlightedMarker(String typeTag) {
try {
Map<String, List<IMogoMarker>> allMarker = MarkerServiceHandler.getMarkerManager().getAllMarkers();
for (Map.Entry<String, List<IMogoMarker>> entry : allMarker.entrySet()) {
String keyStr = entry.getKey();
List<IMogoMarker> markerList = entry.getValue();
public synchronized static void highlightedMarker(final String typeTag) {
Handler handler = new Handler();
handler.post(new Runnable() {
@Override
public void run() {
try {
Map<String, List<IMogoMarker>> allMarker = MarkerServiceHandler.getMarkerManager().getAllMarkers();
for (Map.Entry<String, List<IMogoMarker>> entry : allMarker.entrySet()) {
String keyStr = entry.getKey();
List<IMogoMarker> markerList = entry.getValue();
if (keyStr.equals(typeTag)) {
for (IMogoMarker marker : markerList) {
marker.setAlpha(1f);
}
} else {
for (IMogoMarker marker : markerList) {
marker.setAlpha(0.7f);
if (keyStr.equals(typeTag)) {
for (IMogoMarker marker : markerList) {
marker.setAlpha(1f);
}
} else {
for (IMogoMarker marker : markerList) {
marker.setAlpha(0.7f);
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
} catch (Exception e) {
e.printStackTrace();
}
});
}
/**
@@ -327,7 +334,7 @@ public class MapMarkerManager implements IMogoMarkerClickListener, IMogoOnMessag
}
// 将数据同步给探路,避免探路每次 perform 的时候去拉取,造成消耗
MogoDataHandler.getInstance().invoke( ServiceConst.CARD_TYPE_ROAD_CONDITION, exploreWayList);
MogoDataHandler.getInstance().invoke(ServiceConst.CARD_TYPE_ROAD_CONDITION, exploreWayList);
if (exploreWayList != null) {
for (MarkerExploreWay markerExploreWay : exploreWayList) {
if (!markerExploreWay.getCanLive()) {
@@ -485,7 +492,6 @@ public class MapMarkerManager implements IMogoMarkerClickListener, IMogoOnMessag
Logger.e(TAG, "MarkerResponse======" + response);
if (!MarkerServiceHandler.getMogoStatusManager().isSearchUIShow() &&
!MarkerServiceHandler.getMogoStatusManager().isV2XShow()) {
isFirstMarker = true;
Handler handler = new Handler(Looper.getMainLooper());
handler.post(new Runnable() {
@Override

View File

@@ -104,7 +104,7 @@ public class LaucherShareDialog extends Dialog implements View.OnClickListener {
* 发送广播 1拥堵2交通检查3封路
*/
private void sendShareReceiver(String type) {
Logger.d("liyz", "LaucherShareDialog sendShareReceiver ---->");
Logger.d("LaucherShareDialog", "LaucherShareDialog sendShareReceiver ---->");
Intent intent = new Intent();
intent.setAction("com.zhidao.roadcondition.share");
intent.putExtra("type", type);

View File

@@ -114,7 +114,7 @@ import static com.mogo.module.tanlu.video.VideoInitKt.initVideo;
* @description 探路卡片
* @since 2020-01-02
*/
public class TanluCardViewFragment extends MvpFragment<IView, Presenter<IView>>
public class TanluCardViewFragment extends MvpFragment<IView, Presenter<IView>>
implements IView,
IMogoMarkerClickListener,
IMogoModuleLifecycle,
@@ -966,12 +966,18 @@ public class TanluCardViewFragment extends MvpFragment<IView, Presenter<IView>>
double lat = TanluServiceHandler.getLocationClient().getLastKnowLocation().getLatitude();
double lon = TanluServiceHandler.getLocationClient().getLastKnowLocation().getLongitude();
Log.d(TAG, "onMarkerInfo share onCompleted ---poiType =" + poiType);
MogoMarkerOptions options = new MogoMarkerOptions()
.icon(mMarkerIcon)
.latitude(lat) //event.lat
.owner("share_tag")
.longitude(lon); //event.lon
mMarkerManager.addMarker("share_tag", options); //随便传tag不可点击 share_tag TanluConstants.MODEL_NAME
if (!poiType.equals("-1")) {
Log.d(TAG, "onMarkerInfo share onCompleted ---!poiType------->");
MogoMarkerOptions options = new MogoMarkerOptions()
.icon(mMarkerIcon)
.latitude(lat) //event.lat
.owner("share_tag")
.longitude(lon); //event.lon
mMarkerManager.addMarker("share_tag", options); //随便传tag不可点击 share_tag TanluConstants.MODEL_NAME
AIAssist.getInstance(getContext()).speakTTSVoice(getString(R.string.tanlu_share_success), null);
} else {
Log.d(TAG, "onMarkerInfo share onCompleted ---!poiType--- else ---->");
}
//请求分享接口
if (markerExploreWayList != null && markerExploreWayList.size() > 0) {
@@ -1000,17 +1006,11 @@ public class TanluCardViewFragment extends MvpFragment<IView, Presenter<IView>>
@Override
public void onSuccess(BaseData data) {
Log.d(TAG, "uploadShareInfo onSuccess -----> poiType = " + poiType);
if (!poiType.equals("-1")) {
AIAssist.getInstance(getContext()).speakTTSVoice(getString(R.string.tanlu_share_success), null);
}
}
@Override
public void onFail(String message, int code) {
Log.e(TAG, "uploadShareInfo onFail -----> poiType = " + poiType);
if (!poiType.equals("-1")) {
AIAssist.getInstance(getContext()).speakTTSVoice(getString(R.string.tanlu_share_failed), null);
}
}
});
}