From c15ae82e7217f1f1d372aeebe6111a518bec76c4 Mon Sep 17 00:00:00 2001 From: xiaoyan Date: Thu, 27 Oct 2022 13:47:16 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=A2=9E=E5=8A=A0=E5=AF=BC=E8=88=AA?= =?UTF-8?q?=E6=96=B9=E5=BC=8F=E7=95=8C=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/navinfo/outdoor/api/Constant.java | 2 +- .../outdoor/fragment/GatherGetFragment.java | 12 ++ .../com/navinfo/outdoor/util/NaviUtils.java | 111 ++++++++++++++++++ .../color/selector_default_btn_text_color.xml | 8 ++ .../res/drawable/btn_stroke_corners_bg.xml | 14 +++ .../btn_stroke_corners_bg_disable.xml | 14 +++ .../selector_default_btn_round_corner_bg.xml | 8 ++ .../res/layout/dialog_select_navi_type.xml | 73 ++++++++++++ app/src/main/res/values/styles.xml | 6 + 9 files changed, 247 insertions(+), 1 deletion(-) create mode 100644 app/src/main/res/color/selector_default_btn_text_color.xml create mode 100644 app/src/main/res/drawable/btn_stroke_corners_bg.xml create mode 100644 app/src/main/res/drawable/btn_stroke_corners_bg_disable.xml create mode 100644 app/src/main/res/drawable/selector_default_btn_round_corner_bg.xml create mode 100644 app/src/main/res/layout/dialog_select_navi_type.xml diff --git a/app/src/main/java/com/navinfo/outdoor/api/Constant.java b/app/src/main/java/com/navinfo/outdoor/api/Constant.java index f244ce1..95aa557 100644 --- a/app/src/main/java/com/navinfo/outdoor/api/Constant.java +++ b/app/src/main/java/com/navinfo/outdoor/api/Constant.java @@ -269,7 +269,7 @@ public class Constant { } // 导航方式 - enum NAV_TYPE { + public enum NAV_TYPE { CAR, RIDE, WALK } diff --git a/app/src/main/java/com/navinfo/outdoor/fragment/GatherGetFragment.java b/app/src/main/java/com/navinfo/outdoor/fragment/GatherGetFragment.java index f53dd01..9de5460 100644 --- a/app/src/main/java/com/navinfo/outdoor/fragment/GatherGetFragment.java +++ b/app/src/main/java/com/navinfo/outdoor/fragment/GatherGetFragment.java @@ -40,6 +40,7 @@ import com.navinfo.outdoor.room.PoiEntity; import com.navinfo.outdoor.util.FlushTokenUtil; import com.navinfo.outdoor.util.Geohash; import com.navinfo.outdoor.util.GeometryTools; +import com.navinfo.outdoor.util.NaviUtils; import com.navinfo.outdoor.util.TimestampUtil; import com.navinfo.outdoor.util.ToastUtils; import com.tencent.lbssearch.httpresponse.Poi; @@ -193,13 +194,24 @@ public class GatherGetFragment extends BaseFragment implements View.OnClickListe @Override public void onClick(View v) { if (Constant.currentNaviType == null) { + NaviUtils.getInstance().selectNaviType((AppCompatActivity) getActivity(), new NaviUtils.SelectNaviTypeListener() { + @Override + public void selectNaviType(Constant.NAV_TYPE nav_type) { + } + }); + } else { + // 已选择导航方式 } } }); } } + /** + * + * */ + /** * 保存小数点后两位 * diff --git a/app/src/main/java/com/navinfo/outdoor/util/NaviUtils.java b/app/src/main/java/com/navinfo/outdoor/util/NaviUtils.java index adbc555..cc4449a 100644 --- a/app/src/main/java/com/navinfo/outdoor/util/NaviUtils.java +++ b/app/src/main/java/com/navinfo/outdoor/util/NaviUtils.java @@ -1,5 +1,27 @@ package com.navinfo.outdoor.util; +import android.content.Context; +import android.view.View; +import android.widget.RadioButton; +import android.widget.RadioGroup; +import android.widget.TextView; +import android.widget.Toast; + +import androidx.appcompat.app.AppCompatActivity; + +import com.kongzue.dialog.v3.CustomDialog; +import com.navinfo.outdoor.R; +import com.navinfo.outdoor.api.Constant; +import com.tencent.map.navi.CalcRouteCallback; +import com.tencent.map.navi.TencentNaviManager; +import com.tencent.map.navi.car.CarRouteSearchOptions; +import com.tencent.map.navi.car.TencentCarNaviManager; +import com.tencent.map.navi.data.CalcRouteResult; +import com.tencent.map.navi.data.NaviPoi; +import com.tencent.map.navi.ride.TencentRideNaviManager; + +import java.util.ArrayList; + public class NaviUtils { private static NaviUtils instance; public static NaviUtils getInstance() { @@ -9,5 +31,94 @@ public class NaviUtils { return instance; } + public void selectNaviType(AppCompatActivity mContext, SelectNaviTypeListener selectNaviTypeListener) { + CustomDialog selectNaviTypeDialog = CustomDialog.build(mContext, R.layout.dialog_select_navi_type, new CustomDialog.OnBindView() { + @Override + public void onBind(CustomDialog dialog, View v) { + RadioGroup rgNaviType = v.findViewById(R.id.rg_navi_type); + RadioButton rbtnCar = v.findViewById(R.id.navi_type_car); + RadioButton rbtnRide = v.findViewById(R.id.navi_type_ride); + RadioButton rbtnWalk = v.findViewById(R.id.navi_type_walk); + if (Constant.currentNaviType == Constant.NAV_TYPE.CAR) { + rbtnCar.setChecked(true); + } else if (Constant.currentNaviType == Constant.NAV_TYPE.RIDE) { + rbtnRide.setChecked(true); + } else if (Constant.currentNaviType == Constant.NAV_TYPE.WALK) { + rbtnWalk.setChecked(true); + } + TextView tvConfirm = v.findViewById(R.id.btn_navi_type_select_confirm); + TextView tvCancel = v.findViewById(R.id.btn_navi_type_select_cancel); + tvCancel.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (dialog.isShow) { + dialog.doDismiss(); + } + } + }); + tvConfirm.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!rbtnCar.isChecked()&&!rbtnRide.isChecked()&&!rbtnWalk.isChecked()) { + ToastUtils.Message(mContext, "请选择导航方式!"); + return; + } + if (rbtnCar.isChecked()) { + Constant.currentNaviType = Constant.NAV_TYPE.CAR; + } else if (rbtnRide.isChecked()) { + Constant.currentNaviType = Constant.NAV_TYPE.RIDE; + } else if (rbtnWalk.isChecked()) { + Constant.currentNaviType = Constant.NAV_TYPE.WALK; + } + if (Constant.currentNaviType!=null) { + selectNaviTypeListener.selectNaviType(Constant.currentNaviType); + } + if (dialog.isShow) { + dialog.doDismiss(); + } + } + }); + } + }); + selectNaviTypeDialog.show(); + } + public TencentNaviManager obitainnaviManager(Context mContext, Constant.NAV_TYPE nav_type) { + TencentNaviManager naviManager = null; + if (nav_type == Constant.NAV_TYPE.CAR) { + naviManager = new TencentCarNaviManager(mContext); + } else if (nav_type == Constant.NAV_TYPE.RIDE) { + naviManager = new TencentRideNaviManager(mContext); + } else { + naviManager = new TencentRideNaviManager(mContext); + } + return naviManager; + } + + /** + * 获取路径规划 + * */ + public void searchRoute(Constant.NAV_TYPE nav_type, TencentNaviManager naviManager, + NaviPoi start, NaviPoi end) throws Exception { + if (nav_type == Constant.NAV_TYPE.CAR) { + TencentCarNaviManager carNaviManager = (TencentCarNaviManager)naviManager; + + CarRouteSearchOptions options = CarRouteSearchOptions.create(); + carNaviManager.searchRoute(start, end, new ArrayList<>(), options, new CalcRouteCallback() { + @Override + public void onCalcRouteSuccess(CalcRouteResult calcRouteResult) { + // 路径规划成功 + } + + @Override + public void onCalcRouteFailure(CalcRouteResult calcRouteResult) { + // 路径规划失败 + } + }); + } + } + + public interface SelectNaviTypeListener { + void selectNaviType(Constant.NAV_TYPE nav_type); + } } diff --git a/app/src/main/res/color/selector_default_btn_text_color.xml b/app/src/main/res/color/selector_default_btn_text_color.xml new file mode 100644 index 0000000..e123f90 --- /dev/null +++ b/app/src/main/res/color/selector_default_btn_text_color.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/btn_stroke_corners_bg.xml b/app/src/main/res/drawable/btn_stroke_corners_bg.xml new file mode 100644 index 0000000..e1c90b8 --- /dev/null +++ b/app/src/main/res/drawable/btn_stroke_corners_bg.xml @@ -0,0 +1,14 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/btn_stroke_corners_bg_disable.xml b/app/src/main/res/drawable/btn_stroke_corners_bg_disable.xml new file mode 100644 index 0000000..024e988 --- /dev/null +++ b/app/src/main/res/drawable/btn_stroke_corners_bg_disable.xml @@ -0,0 +1,14 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/selector_default_btn_round_corner_bg.xml b/app/src/main/res/drawable/selector_default_btn_round_corner_bg.xml new file mode 100644 index 0000000..db76842 --- /dev/null +++ b/app/src/main/res/drawable/selector_default_btn_round_corner_bg.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_select_navi_type.xml b/app/src/main/res/layout/dialog_select_navi_type.xml new file mode 100644 index 0000000..031b9bc --- /dev/null +++ b/app/src/main/res/layout/dialog_select_navi_type.xml @@ -0,0 +1,73 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index 37bbcd7..55d3c15 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -172,4 +172,10 @@ + + \ No newline at end of file