extends
}
notifyDataSetChanged();
}
+ public void clear(){
+ if (list != null) {
+ list.clear();
+ notifyDataSetChanged();
+ }
+ }
public void messageShow(String mes)
{
if (toast==null){
diff --git a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/search/BaseSearchFragment.java b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/search/BaseSearchFragment.java
new file mode 100644
index 0000000000..9b0edd0b1f
--- /dev/null
+++ b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/search/BaseSearchFragment.java
@@ -0,0 +1,280 @@
+package com.mogo.module.navi.ui.search;
+
+import android.content.Context;
+import android.os.Bundle;
+import android.view.View;
+import android.widget.EditText;
+import android.widget.TextView;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.recyclerview.widget.LinearLayoutManager;
+import androidx.recyclerview.widget.RecyclerView;
+import com.alibaba.android.arouter.facade.annotation.Route;
+import com.alibaba.android.arouter.launcher.ARouter;
+import com.mogo.map.search.inputtips.MogoTip;
+import com.mogo.module.common.MogoModulePaths;
+import com.mogo.module.navi.R;
+import com.mogo.module.navi.bean.EntityConvertUtils;
+import com.mogo.module.navi.bean.SearchPoi;
+import com.mogo.module.navi.ui.adapter.HistoryPoiAdapter;
+import com.mogo.module.navi.ui.adapter.SearchPoiAdapter;
+import com.mogo.module.navi.ui.base.BaseFragment;
+import com.mogo.module.navi.ui.base.UiController;
+import com.mogo.module.navi.ui.setting.NaviSettingFragment;
+import com.mogo.service.MogoServicePaths;
+import com.mogo.service.fragmentmanager.FragmentDescriptor;
+import com.mogo.service.fragmentmanager.IMogoFragmentManager;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 搜索页面
+ *
+ * 普通搜索:从首页点击搜索按钮进入:包含:仅输入搜索(列表不包含设置按钮)
+ * {@link SearchConstants#SEARCH_TYPE_COMMON}
+ *
+ * 地址设置搜索:设置家、公司、其他的地址:包含当前位置、选点、搜索列表(列表包含设置按钮)、普通页面
+ * {@link SearchConstants#SEARCH_TYPE_MULTI_COMPANY}
+ * {@link SearchConstants#SEARCH_TYPE_MULTI_HOME}
+ */
+public abstract class BaseSearchFragment extends BaseFragment implements SearchView {
+
+
+ public int mSearchType;
+
+ protected SearchPresenter mSearchPresenter;
+
+ private View mClose;
+ private EditText mSearchBox;
+
+
+
+ /**
+ * 设置常用地址(我的位置、选点)时的设置按钮
+ */
+ private TextView mActionButton;
+
+ /**
+ * 地址设置是否完成
+ */
+ private boolean mActionSuccess = false;
+
+ @Override
+ public void onAttach(Context context) {
+ super.onAttach(context);
+ if (context instanceof UiController) {
+ }
+ }
+
+ @Override public void onCreate(@Nullable Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+
+ }
+
+ @Override
+ protected int getLayoutId() {
+ return R.layout.fragment_search;
+ }
+
+ @Override
+ public void onActivityCreated(@Nullable Bundle savedInstanceState) {
+ super.onActivityCreated(savedInstanceState);
+ getLifecycle().addObserver(mSearchPresenter = new SearchPresenter(this));
+ }
+
+ @Override public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
+ super.onViewCreated(view, savedInstanceState);
+ mSearchBox = view.findViewById(R.id.et_navi_search);
+ }
+
+ /**
+ * 显示我的位置,并且可设置为家
+ */
+ //private void multiSearchMyLocationUI() {
+ // mUiMode = SearchConstants.UI_MODE_MULTI_MY_LOCATION;
+ // mSearchBox.setEnabled( false );
+ // mMyLocation.setVisibility( View.GONE );
+ // mChoicePoint.setVisibility( View.GONE );
+ // mCurrentLocation.setVisibility( View.GONE );
+ // mSearchResult.setVisibility( View.GONE );
+ // mActionButton.setVisibility( View.VISIBLE );
+ // mActionButton.setText( SearchUtils.getSearchTypeActionName( mSearchType ) );
+ // mSearchBox.setCompoundDrawables( null, null, null, null );
+ // //removeChoicePointMarker();
+ // mSearchBox.setTag( null );
+ // if ( mSearchBox.getLayoutParams() instanceof RelativeLayout.LayoutParams ) {
+ // final RelativeLayout.LayoutParams params = ( ( RelativeLayout.LayoutParams ) mSearchBox.getLayoutParams() );
+ // params.addRule( RelativeLayout.LEFT_OF, R.id.amap_search_action_setting );
+ // mSearchBox.setPadding( 0, 0, WindowUtils.dip2px( mContext, 15 ), 0 );
+ // mSearchBox.setLayoutParams( params );
+ // }
+ //}
+
+ /**
+ * 显示我的位置,并且可设置为家
+ */
+ //private void multiSearchChoicePointUI() {
+ // mUiMode = SearchConstants.UI_MODE_MULTI_CHOICE_POINT;
+ // mSearchBox.setEnabled( false );
+ // mMyLocation.setVisibility( View.GONE );
+ // mChoicePoint.setVisibility( View.GONE );
+ // mCurrentLocation.setVisibility( View.GONE );
+ // mSearchResult.setVisibility( View.GONE );
+ // mActionButton.setVisibility( View.VISIBLE );
+ // mActionButton.setText( SearchUtils.getSearchTypeActionName( mSearchType ) );
+ // mSearchBox.setCompoundDrawables( null, null, null, null );
+ // mSearchBox.setTag( null );
+ // if ( mSearchBox.getLayoutParams() instanceof RelativeLayout.LayoutParams ) {
+ // final RelativeLayout.LayoutParams params = ( ( RelativeLayout.LayoutParams ) mSearchBox.getLayoutParams() );
+ // params.addRule( RelativeLayout.LEFT_OF, R.id.amap_search_action_setting );
+ // mSearchBox.setPadding( 0, 0, WindowUtils.dip2px( mContext, 15 ), 0 );
+ // mSearchBox.setLayoutParams( params );
+ // }
+ //}
+ private void saveCurrentLocationAsCommonAddress() {
+ //if ( mLastAMapLocation == null ) {
+ // shortToast( "定位失败,请重试" );
+ // return;
+ //}
+ //final Disposable disposable = mSearchPresenter.cacheCommonAddressPoi( mLastAMapLocation ).subscribe( output -> {
+ // Toast.makeText( mContext, "设置成功!", Toast.LENGTH_SHORT ).show();
+ // mActionSuccess = true;
+ //}, error -> {
+ // if ( error instanceof Exception) {
+ // Toast.makeText( mContext, ( (Exception) error ).getMessage(), Toast.LENGTH_SHORT ).show();
+ // mActionSuccess = false;
+ // }
+ //} );
+ //mSearchPresenter.addDisposable( disposable );
+ }
+
+ private void saveRegeoAddressAsCommonAddress() {
+ //if ( mSearchBox.getTag() instanceof RegeocodeAddress ) {
+ // final Disposable disposable = mSearchPresenter.cacheCommonAddressPoi( ( ( RegeocodeAddress ) mSearchBox.getTag() ) ).subscribe( output -> {
+ // Toast.makeText( mContext, "设置成功!", Toast.LENGTH_SHORT ).show();
+ // mActionSuccess = true;
+ // }, error -> {
+ // if ( error instanceof Exception) {
+ // Toast.makeText( mContext, ( (Exception) error ).getMessage(), Toast.LENGTH_SHORT ).show();
+ // mActionSuccess = false;
+ // }
+ // } );
+ // mSearchPresenter.addDisposable( disposable );
+ //} else {
+ // Toast.makeText( mContext, "请选择位置", Toast.LENGTH_SHORT ).show();
+ //}
+ }
+
+ // view interface
+
+ @Override
+ public EditText getSearchBox() {
+ return mSearchBox;
+ }
+
+
+ @Override
+ public int getSearchType() {
+ return mSearchType;
+ }
+
+ @Override public void startJumpAnimation() {
+
+ }
+
+ //@Override
+ //public void renderChoicePointResult( RegeocodeAddress address ) {
+ // if ( address == null ) {
+ // mSearchBox.setTag( null );
+ // mSearchBox.setText( "" );
+ // return;
+ // }
+ // mSearchBox.setTag( address );
+ // mSearchBox.setText( address.getFormatAddress() );
+ //}
+ //
+ //@Override
+ //public void renderErrorView() {
+ //
+ //}
+ //
+ //@Override
+ //public void renderContentView() {
+ //
+ //}
+
+ // view interface end
+
+ ///**
+ // * 屏幕中心marker 跳动
+ // */
+ //@Override
+ //public void startJumpAnimation() {
+ //
+ // final AMap aMap = mUiController.getAMapServiceVisitor().getMap();
+ //
+ // if ( mChoicePointMaker != null ) {
+ // //根据屏幕距离计算需要移动的目标点
+ // final LatLng latLng = mChoicePointMaker.getPosition();
+ // Point point = aMap.getProjection().toScreenLocation( latLng );
+ // point.y -= WindowUtils.dip2px( mContext, 125 );
+ // LatLng target = aMap.getProjection()
+ // .fromScreenLocation( point );
+ // //使用TranslateAnimation,填写一个需要移动的目标点
+ // Animation animation = new TranslateAnimation( target );
+ // animation.setInterpolator( new Interpolator() {
+ // @Override
+ // public float getInterpolation( float input ) {
+ // // 模拟重加速度的interpolator
+ // if ( input <= 0.5 ) {
+ // return ( float ) ( 0.5f - 2 * ( 0.5 - input ) * ( 0.5 - input ) );
+ // } else {
+ // return ( float ) ( 0.5f - Math.sqrt( ( input - 0.5f ) * ( 1.5f - input ) ) );
+ // }
+ // }
+ // } );
+ // //整个移动所需要的时间
+ // animation.setDuration( 600 );
+ // //设置动画
+ // mChoicePointMaker.setAnimation( animation );
+ // //开始动画
+ // mChoicePointMaker.startAnimation();
+ //
+ // }
+ //}
+
+
+ private void navi2Location(SearchPoi searchPoi) {
+
+
+ }
+
+ /**
+ * 退出搜索,进行清理
+ */
+ private void exitSearch() {
+
+ switch (mSearchType) {
+ case SearchConstants.SEARCH_TYPE_COMMON:
+ try {
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ break;
+ case SearchConstants.SEARCH_TYPE_MULTI_HOME:
+ break;
+ }
+ }
+
+ @Override
+ public void onDestroyView() {
+ super.onDestroyView();
+ if (mSearchPresenter != null) {
+ mSearchPresenter.onDestroy(getViewLifecycleOwner());
+ getLifecycle().removeObserver(mSearchPresenter);
+ mSearchPresenter = null;
+ }
+ mSearchBox.setTag(null);
+ //removeChoicePointMarker();
+ }
+}
diff --git a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/search/CategorySearchFragment.kt b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/search/CategorySearchFragment.kt
new file mode 100644
index 0000000000..e0727b9007
--- /dev/null
+++ b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/search/CategorySearchFragment.kt
@@ -0,0 +1,95 @@
+package com.mogo.module.navi.ui.search
+
+import android.os.Bundle
+import android.view.View
+import androidx.fragment.app.Fragment
+import androidx.recyclerview.widget.LinearLayoutManager
+import com.mogo.map.search.inputtips.MogoTip
+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.SearchServiceHolder
+import com.mogo.module.navi.ui.adapter.SearchCategoryAdapter
+import kotlinx.android.synthetic.main.fragment_search_category.cv_search_result
+import kotlinx.android.synthetic.main.fragment_search_category.tv_navi_navi
+import kotlinx.android.synthetic.main.fragment_setting_address.rv_search_result
+import kotlinx.android.synthetic.main.include_search_bar.et_navi_search
+import kotlinx.android.synthetic.main.include_search_bar.iv_navi_back
+
+/**
+ * @author zyz
+ * 2020-01-09.
+ */
+class CategorySearchFragment : BaseSearchFragment() {
+
+ private lateinit var mAdapter: SearchCategoryAdapter
+
+ private var category:String?=null
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ category=arguments?.getString("category")
+ }
+ override fun getLayoutId(): Int {
+ return R.layout.fragment_search_category
+ }
+
+ override fun onViewCreated(
+ view: View,
+ savedInstanceState: Bundle?
+ ) {
+ super.onViewCreated(view, savedInstanceState)
+ mAdapter = SearchCategoryAdapter(activity, ArrayList())
+
+ rv_search_result.layoutManager =
+ LinearLayoutManager(activity, LinearLayoutManager.VERTICAL, false)
+
+ rv_search_result.adapter = mAdapter
+
+ et_navi_search.setText(category)
+
+
+ iv_navi_back.setOnClickListener {
+ SearchServiceHolder.fragmentManager.pop()
+ }
+
+ tv_navi_navi.setOnClickListener {
+
+ var newInstance = ChoosePathFragment.newInstance(mAdapter.currentItem)
+
+ SearchServiceHolder.push(newInstance, MogoModulePaths.PATH_FRAGMENT_CHOOSE_PAHT)
+ }
+ mAdapter.setOnClickListener {
+ var position = it.getTag(R.id.tag_position) as Int
+ mAdapter.setCurrent(position)
+ }
+ }
+
+ override fun onActivityCreated(savedInstanceState: Bundle?) {
+ super.onActivityCreated(savedInstanceState)
+ mSearchPresenter.startSearchPoiByInput(category)
+
+ }
+ override fun renderSearchPoiResult(
+ datums: List,
+ showDelete: Boolean
+ ) {
+
+ mAdapter.setDatas(datums)
+ cv_search_result.visibility=View.VISIBLE
+
+ }
+
+ override fun showHistory(datums: List) {
+
+ }
+
+ companion object{
+ fun newInstance( category:String):Fragment{
+ var bundle = Bundle()
+ bundle.putString("category",category)
+ var categorySerachFragment = CategorySearchFragment()
+ categorySerachFragment.arguments=bundle
+ return categorySerachFragment
+ }
+ }
+}
diff --git a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/search/ChoosePathFragment.kt b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/search/ChoosePathFragment.kt
new file mode 100644
index 0000000000..48e2ae6086
--- /dev/null
+++ b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/search/ChoosePathFragment.kt
@@ -0,0 +1,105 @@
+package com.mogo.module.navi.ui.search
+
+import android.os.Bundle
+import android.view.View
+import androidx.fragment.app.Fragment
+import androidx.recyclerview.widget.LinearLayoutManager
+import com.mogo.map.navi.IMogoNaviListener
+import com.mogo.map.navi.MogoCalculatePath
+import com.mogo.map.navi.MogoNaviInfo
+import com.mogo.map.search.inputtips.MogoTip
+import com.mogo.module.common.MogoModulePaths
+import com.mogo.module.navi.R
+import com.mogo.module.navi.bean.EntityConvertUtils
+import com.mogo.module.navi.bean.SearchPoi
+import com.mogo.module.navi.constants.AMapConstants
+import com.mogo.module.navi.constants.SearchServiceHolder
+import com.mogo.module.navi.ui.adapter.CalculatePathAdapter
+import com.mogo.module.navi.ui.base.BaseFragment
+import kotlinx.android.synthetic.main.fragment_search_category.rv_search_result
+import kotlinx.android.synthetic.main.fragment_search_category.tv_navi_navi
+import kotlinx.android.synthetic.main.include_search_bar.et_navi_search
+import kotlinx.android.synthetic.main.include_search_bar.iv_navi_back
+
+/**
+ * @author zyz
+ * 2020-01-09.
+ */
+class ChoosePathFragment : BaseFragment(), IMogoNaviListener {
+ override fun onInitNaviFailure() {
+ }
+
+ override fun onInitNaviSuccess() {
+ }
+
+ override fun onNaviInfoUpdate(naviinfo: MogoNaviInfo?) {
+ }
+
+ override fun onStartNavi() {
+ }
+
+ override fun onStopNavi() {
+ }
+
+ override fun onCalculateSuccess() {
+ mAdapter.setDatas(SearchServiceHolder.getNavi(activity!!).calculatedStrategies)
+ }
+
+ override fun onoCalculateFailed() {
+ }
+
+ private lateinit var mAdapter:CalculatePathAdapter
+ override fun getLayoutId(): Int {
+ return R.layout.fragment_search_category
+ }
+ var mogoTip: MogoTip?=null
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ mogoTip = arguments?.getParcelable(AMapConstants.KEY_PARCELABLE)
+ }
+
+ override fun onViewCreated(
+ view: View,
+ savedInstanceState: Bundle?
+ ) {
+ super.onViewCreated(view, savedInstanceState)
+ iv_navi_back.setOnClickListener {
+ SearchServiceHolder.fragmentManager.pop()
+ }
+
+ tv_navi_navi.text=getString(R.string.start_navi)
+
+ et_navi_search.setText(getString(R.string.choose_path))
+ et_navi_search.isEnabled=false
+ SearchServiceHolder.getNavi(context!!).naviTo(mogoTip?.point)
+
+ SearchServiceHolder.listenerCenter.registerMogoNaviListener(MogoModulePaths.PATH_FRAGMENT_CHOOSE_PAHT,this)
+
+ var arrayList = ArrayList()
+ mAdapter= CalculatePathAdapter(activity,arrayList)
+ rv_search_result.layoutManager=LinearLayoutManager(activity,LinearLayoutManager.VERTICAL,false)
+
+ rv_search_result.adapter=mAdapter
+ tv_navi_navi.setOnClickListener {
+ SearchServiceHolder.getNavi(activity!!).startNavi(false)
+ }
+
+ mAdapter.setOnClickListener {
+ var position = it.getTag(R.id.tag_position) as Int
+ mAdapter.setCurrent(position)
+ mAdapter.currentItem.onItemClickInteraction.onItemClicked(mAdapter.currentItem.mTagId)
+
+ }
+ }
+
+
+ companion object{
+ fun newInstance(searchPoi: MogoTip):Fragment{
+ var bundle = Bundle()
+ bundle.putParcelable(AMapConstants.KEY_PARCELABLE, searchPoi)
+ var choosePathFragment = ChoosePathFragment()
+ choosePathFragment.arguments=bundle
+ return choosePathFragment
+ }
+ }
+}
diff --git a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/search/SearchFragment.java b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/search/SearchFragment.java
index 98d63bbf4f..fd430efb94 100644
--- a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/search/SearchFragment.java
+++ b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/search/SearchFragment.java
@@ -1,36 +1,28 @@
package com.mogo.module.navi.ui.search;
import android.content.Context;
-import android.graphics.Bitmap;
-import android.graphics.BitmapFactory;
-import android.graphics.drawable.BitmapDrawable;
-import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.view.View;
-import android.widget.EditText;
-import android.widget.RelativeLayout;
import android.widget.TextView;
-import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
+import androidx.fragment.app.Fragment;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.alibaba.android.arouter.facade.annotation.Route;
-import com.alibaba.android.arouter.launcher.ARouter;
import com.mogo.map.search.inputtips.MogoTip;
import com.mogo.module.common.MogoModulePaths;
import com.mogo.module.navi.R;
import com.mogo.module.navi.bean.EntityConvertUtils;
import com.mogo.module.navi.bean.SearchPoi;
-import com.mogo.module.navi.database.AppDataBase;
+import com.mogo.module.navi.constants.AMapConstants;
+import com.mogo.module.navi.constants.SearchServiceHolder;
import com.mogo.module.navi.ui.adapter.HistoryPoiAdapter;
import com.mogo.module.navi.ui.adapter.SearchPoiAdapter;
-import com.mogo.module.navi.ui.base.BaseFragment;
import com.mogo.module.navi.ui.base.UiController;
-import com.mogo.service.MogoServicePaths;
-import com.mogo.service.fragmentmanager.IMogoFragmentManager;
-import com.mogo.utils.WindowUtils;
-import io.reactivex.disposables.Disposable;
+import com.mogo.module.navi.ui.setting.NaviSettingFragment;
+import com.mogo.module.navi.ui.setting.SettingAddressFragment;
+import com.mogo.service.fragmentmanager.FragmentDescriptor;
import java.util.ArrayList;
import java.util.List;
@@ -45,23 +37,19 @@ import java.util.List;
* {@link SearchConstants#SEARCH_TYPE_MULTI_HOME}
*/
@Route(path = MogoModulePaths.PATH_FRAGMENT_SEARCH)
-public class SearchFragment extends BaseFragment implements SearchView {
+public class SearchFragment extends BaseSearchFragment implements SearchView, View.OnClickListener {
public static final String TAG = "search";
public int mSearchType;
- private SearchPresenter mSearchPresenter;
-
private View mClose;
- private EditText mSearchBox;
private RecyclerView mSearchResult;
private RecyclerView rvHistory;
private SearchPoiAdapter mPoiAdapter;
private HistoryPoiAdapter mHistoryAdapter;
-
/**
* 设置常用地址(我的位置、选点)时的设置按钮
*/
@@ -73,7 +61,6 @@ public class SearchFragment extends BaseFragment implements SearchView {
private boolean mActionSuccess = false;
private View rlHistory;
private TextView tvEmpty;
- IMogoFragmentManager fragmentManager;
@Override
public void onAttach(Context context) {
@@ -84,8 +71,6 @@ public class SearchFragment extends BaseFragment implements SearchView {
@Override public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
- fragmentManager = (IMogoFragmentManager) ARouter.getInstance().build(MogoServicePaths.PATH_FRAGMENT_MANAGER).navigation();
-
}
@Override
@@ -96,12 +81,10 @@ public class SearchFragment extends BaseFragment implements SearchView {
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
- getLifecycle().addObserver(mSearchPresenter = new SearchPresenter(this));
}
@Override public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
- mSearchBox = view.findViewById(R.id.et_navi_search);
mSearchResult = view.findViewById(R.id.rv_navi_search);
rvHistory = view.findViewById(R.id.rv_navi_history);
rlHistory = view.findViewById(R.id.rl_navi_history);
@@ -113,23 +96,26 @@ public class SearchFragment extends BaseFragment implements SearchView {
new LinearLayoutManager(getActivity(), LinearLayoutManager.VERTICAL, false);
mSearchResult.setLayoutManager(linearLayoutManager);
- mPoiAdapter= new SearchPoiAdapter(getActivity(),new ArrayList<>());
+ mPoiAdapter = new SearchPoiAdapter(getActivity(), new ArrayList<>());
mSearchResult.setAdapter(mPoiAdapter);
- mHistoryAdapter= new HistoryPoiAdapter(getActivity(),new ArrayList<>());
+ mHistoryAdapter = new HistoryPoiAdapter(getActivity(), new ArrayList<>());
rvHistory.setAdapter(mHistoryAdapter);
tvEmpty = findViewById(R.id.tv_navi_list_empty);
findViewById(R.id.iv_navi_back).setOnClickListener(new View.OnClickListener() {
@Override public void onClick(View v) {
- fragmentManager.pop();
+ SearchServiceHolder.INSTANCE.getFragmentManager().pop();
}
});
mHistoryAdapter.setOnClickListener(new View.OnClickListener() {
@Override public void onClick(View v) {
-
+ SearchPoi item = (SearchPoi) v.getTag(R.id.tag_item);
+ MogoTip mogoTip = EntityConvertUtils.poi2MogoTip(item);
+ SearchServiceHolder.INSTANCE.push(ChoosePathFragment.Companion.newInstance(mogoTip),
+ MogoModulePaths.PATH_FRAGMENT_CHOOSE_PAHT);
}
});
@@ -138,16 +124,57 @@ public class SearchFragment extends BaseFragment implements SearchView {
MogoTip tag = (MogoTip) v.getTag(R.id.tag_position);
SearchPoi searchPoi = EntityConvertUtils.tipToPoi(tag);
mSearchPresenter.insert(searchPoi);
+ SearchServiceHolder.INSTANCE.push(ChoosePathFragment.Companion.newInstance(tag),
+ MogoModulePaths.PATH_FRAGMENT_CHOOSE_PAHT);
}
});
-
findViewById(R.id.tv_navi_history_clear).setOnClickListener(new View.OnClickListener() {
@Override public void onClick(View v) {
mSearchPresenter.deleteAllCachedPoi();
}
});
+ findViewById(R.id.tv_navi_setting).setOnClickListener(new View.OnClickListener() {
+ @Override public void onClick(View v) {
+ push(new NaviSettingFragment(), MogoModulePaths.PATH_FRAGMENT_SETTING);
+ }
+ });
+
+ findViewById(R.id.tv_navi_company).setOnClickListener(new View.OnClickListener() {
+ @Override public void onClick(View v) {
+ pupSettingAddress(1);
+ }
+ });
+
+ findViewById(R.id.tv_navi_home).setOnClickListener(new View.OnClickListener() {
+ @Override public void onClick(View v) {
+ pupSettingAddress(0);
+ }
+ });
+
+ findViewById(R.id.tv_navi_wash).setOnClickListener(this);
+ findViewById(R.id.tv_navi_toilet).setOnClickListener(this);
+ findViewById(R.id.tv_navi_gas).setOnClickListener(this);
+ findViewById(R.id.tv_navi_restaurant).setOnClickListener(this);
+ findViewById(R.id.tv_navi_park).setOnClickListener(this);
+ }
+
+ private void push(Fragment fragment, String tag) {
+ FragmentDescriptor.Builder builder = new FragmentDescriptor.Builder();
+ builder.fragment(fragment);
+ FragmentDescriptor build =
+ builder.tag(tag).build();
+ SearchServiceHolder.INSTANCE.getFragmentManager().push(build);
+ }
+
+ private void pupSettingAddress(int type) {
+
+ FragmentDescriptor.Builder builder = new FragmentDescriptor.Builder();
+ builder.fragment(SettingAddressFragment.Companion.newInstance(type));
+ FragmentDescriptor build =
+ builder.tag(MogoModulePaths.PATH_FRAGMENT_SETTING_HOME).build();
+ SearchServiceHolder.INSTANCE.getFragmentManager().push(build);
}
/**
@@ -228,16 +255,9 @@ public class SearchFragment extends BaseFragment implements SearchView {
//}
}
- // view interface
-
- @Override
- public EditText getSearchBox() {
- return mSearchBox;
- }
-
@Override
public void renderSearchPoiResult(List datums, boolean showDelete) {
- if (datums==null||datums.isEmpty()) {
+ if (datums == null || datums.isEmpty()) {
showEmpty(getString(R.string.search_empty));
return;
}
@@ -247,7 +267,7 @@ public class SearchFragment extends BaseFragment implements SearchView {
@Override public void showHistory(List datums) {
- if (datums==null||datums.isEmpty()) {
+ if (datums == null || datums.isEmpty()) {
showEmpty(getString(R.string.history_empty));
return;
}
@@ -325,10 +345,8 @@ public class SearchFragment extends BaseFragment implements SearchView {
// }
//}
-
private void navi2Location(SearchPoi searchPoi) {
-
}
/**
@@ -348,20 +366,6 @@ public class SearchFragment extends BaseFragment implements SearchView {
}
}
- @Override
- public void onDestroyView() {
- super.onDestroyView();
- if (mSearchPresenter != null) {
- mSearchPresenter.onDestroy(getViewLifecycleOwner());
- getLifecycle().removeObserver(mSearchPresenter);
- mSearchPresenter = null;
- }
- mSearchBox.setTag(null);
-
- mPoiAdapter = null;
- //removeChoicePointMarker();
- }
-
private void showResult() {
rlHistory.setVisibility(View.GONE);
mSearchResult.setVisibility(View.VISIBLE);
@@ -374,10 +378,20 @@ public class SearchFragment extends BaseFragment implements SearchView {
tvEmpty.setVisibility(View.GONE);
}
- private void showEmpty(String str){
+ private void showEmpty(String str) {
rlHistory.setVisibility(View.GONE);
tvEmpty.setText(str);
mSearchResult.setVisibility(View.GONE);
tvEmpty.setVisibility(View.VISIBLE);
}
+
+ /**
+ * 类别
+ */
+ @Override public void onClick(View v) {
+ TextView category = (TextView) v;
+ String text = category.getText().toString();
+ push(CategorySearchFragment.Companion.newInstance(text),
+ MogoModulePaths.PATH_FRAGMENT_SEARCH_CATEGORY);
+ }
}
diff --git a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/search/SearchPresenter.java b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/search/SearchPresenter.java
index cddd739670..d5dabb31c8 100644
--- a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/search/SearchPresenter.java
+++ b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/search/SearchPresenter.java
@@ -91,7 +91,7 @@ public class SearchPresenter extends Presenter< SearchView >
}
};
- private void startSearchPoiByInput( String keyword ) {
+ public void startSearchPoiByInput( String keyword ) {
MogoInputtipsQuery mogoInputtipsQuery = new MogoInputtipsQuery();
mogoInputtipsQuery.setKeyword(keyword);
IMogoInputtipsSearch inputtipsSearch =
diff --git a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/setting/NaviSettingFragment.kt b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/setting/NaviSettingFragment.kt
index 78b40c88c0..924422e0a9 100644
--- a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/setting/NaviSettingFragment.kt
+++ b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/setting/NaviSettingFragment.kt
@@ -1,14 +1,33 @@
package com.mogo.module.navi.ui.setting
+import android.os.Bundle
+import android.view.View
+import com.alibaba.android.arouter.facade.annotation.Route
+import com.mogo.module.common.MogoModulePaths
import com.mogo.module.navi.R
+import com.mogo.module.navi.constants.SearchServiceHolder
import com.mogo.module.navi.ui.base.BaseFragment
+import kotlinx.android.synthetic.main.fragment_navi_setting.iv_back
+import kotlinx.android.synthetic.main.fragment_navi_setting.tv_navi_sound_type
/**
* @author zyz
* 2020-01-07.
*/
+@Route(path= MogoModulePaths.PATH_FRAGMENT_SETTING)
class NaviSettingFragment : BaseFragment() {
override fun getLayoutId(): Int {
return R.layout.fragment_navi_setting
}
+
+ override fun onViewCreated(
+ view: View,
+ savedInstanceState: Bundle?
+ ) {
+ super.onViewCreated(view, savedInstanceState)
+
+ iv_back.setOnClickListener {
+ SearchServiceHolder.fragmentManager.pop()
+ }
+ }
}
diff --git a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/setting/SettingAddressFragment.kt b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/setting/SettingAddressFragment.kt
new file mode 100644
index 0000000000..e406299042
--- /dev/null
+++ b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/setting/SettingAddressFragment.kt
@@ -0,0 +1,128 @@
+package com.mogo.module.navi.ui.setting
+
+import android.os.Bundle
+import android.view.View
+import androidx.fragment.app.Fragment
+import androidx.recyclerview.widget.LinearLayoutManager
+import com.alibaba.android.arouter.facade.annotation.Route
+import com.mogo.map.search.inputtips.MogoTip
+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.AMapConstants
+import com.mogo.module.navi.constants.SearchServiceHolder
+import com.mogo.module.navi.ui.adapter.SearchPoiAdapter
+import com.mogo.module.navi.ui.base.BaseFragment
+import com.mogo.module.navi.ui.search.BaseSearchFragment
+import kotlinx.android.synthetic.main.fragment_navi_setting.iv_back
+import kotlinx.android.synthetic.main.include_search_bar.iv_navi_back
+import kotlinx.android.synthetic.main.fragment_setting_address.group_set_address
+import kotlinx.android.synthetic.main.fragment_setting_address.rv_search_result
+import kotlinx.android.synthetic.main.fragment_setting_address.tv_navi_choose_point
+import kotlinx.android.synthetic.main.fragment_setting_address.tv_navi_my_location
+import kotlinx.android.synthetic.main.fragment_setting_address.tv_set_as_home
+import kotlinx.android.synthetic.main.include_search_bar.et_navi_search
+
+/**
+ * @author zyz
+ * 2020-01-07.
+ */
+@Route(path = MogoModulePaths.PATH_FRAGMENT_SETTING_HOME)
+class SettingAddressFragment : BaseSearchFragment() {
+ override fun renderSearchPoiResult(
+ datums: MutableList?,
+ showDelete: Boolean
+ ) {
+ mAdapter.setDatas(datums)
+ group_set_address.visibility = View.GONE
+ rv_search_result.visibility = View.VISIBLE
+
+ }
+
+ override fun showHistory(datums: MutableList?) {
+ }
+
+ private var style: Int = 0
+ private lateinit var mAdapter: SearchPoiAdapter
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ style = arguments?.getInt(AMapConstants.KEY_SET_HOME_COMPONY) ?: 0
+ }
+
+ override fun getLayoutId(): Int {
+ return R.layout.fragment_setting_address
+ }
+
+ fun isHome(): Boolean {
+ return style == 0
+ }
+
+ fun isCompony(): Boolean {
+ return style == 1
+ }
+
+ fun isSearch(): Boolean {
+ return group_set_address.visibility == View.GONE
+ }
+
+ override fun onViewCreated(
+ view: View,
+ savedInstanceState: Bundle?
+ ) {
+ super.onViewCreated(view, savedInstanceState)
+
+
+ if (isHome()) {
+ tv_set_as_home.text = resources.getString(R.string.set_as_home_navi)
+ } else {
+ tv_set_as_home.text = resources.getString(R.string.set_as_compony_navi)
+ }
+
+ mAdapter = SearchPoiAdapter(activity, ArrayList())
+
+ rv_search_result.layoutManager =
+ LinearLayoutManager(activity, LinearLayoutManager.VERTICAL, false)
+
+ rv_search_result.adapter = mAdapter
+
+
+ iv_navi_back.setOnClickListener {
+ if (group_set_address.visibility == View.VISIBLE) {
+ SearchServiceHolder.fragmentManager.pop()
+ } else {
+ reset()
+ }
+ }
+
+
+ tv_navi_choose_point.setOnClickListener {
+ group_set_address.visibility = View.GONE
+ tv_set_as_home.visibility = View.VISIBLE
+ }
+
+ tv_navi_my_location.setOnClickListener {
+ group_set_address.visibility = View.GONE
+ tv_set_as_home.visibility = View.VISIBLE
+ }
+
+ }
+
+ private fun reset() {
+ group_set_address.visibility = View.VISIBLE
+ rv_search_result.visibility = View.GONE
+ mAdapter.clear()
+ et_navi_search.setText("")
+ tv_set_as_home.visibility = View.GONE
+ }
+
+ companion object {
+ fun newInstance(type: Int = 0): Fragment {
+
+ var settingAddressFragment = SettingAddressFragment()
+ val bundle = Bundle()
+ bundle.putInt(AMapConstants.KEY_SET_HOME_COMPONY, type)
+ settingAddressFragment.setArguments(bundle)
+ return settingAddressFragment
+ }
+ }
+}
diff --git a/modules/mogo-module-search/src/main/res/drawable/amap_calculate_navi_strategy1_bkg.xml b/modules/mogo-module-search/src/main/res/drawable/amap_calculate_navi_strategy1_bkg.xml
new file mode 100644
index 0000000000..a3c21b02d5
--- /dev/null
+++ b/modules/mogo-module-search/src/main/res/drawable/amap_calculate_navi_strategy1_bkg.xml
@@ -0,0 +1,9 @@
+
+
+ -
+
+
+
+
+
+
\ No newline at end of file
diff --git a/modules/mogo-module-search/src/main/res/drawable/amap_calculate_navi_strategy2_bkg.xml b/modules/mogo-module-search/src/main/res/drawable/amap_calculate_navi_strategy2_bkg.xml
new file mode 100644
index 0000000000..c0f20a1c86
--- /dev/null
+++ b/modules/mogo-module-search/src/main/res/drawable/amap_calculate_navi_strategy2_bkg.xml
@@ -0,0 +1,9 @@
+
+
+ -
+
+
+
+
+
+
\ No newline at end of file
diff --git a/modules/mogo-module-search/src/main/res/drawable/amap_calculate_navi_strategy3_bkg.xml b/modules/mogo-module-search/src/main/res/drawable/amap_calculate_navi_strategy3_bkg.xml
new file mode 100644
index 0000000000..eef0c4f374
--- /dev/null
+++ b/modules/mogo-module-search/src/main/res/drawable/amap_calculate_navi_strategy3_bkg.xml
@@ -0,0 +1,9 @@
+
+
+ -
+
+
+
+
+
+
\ No newline at end of file
diff --git a/modules/mogo-module-search/src/main/res/drawable/amap_calculate_navi_strategy_name_bkg.xml b/modules/mogo-module-search/src/main/res/drawable/amap_calculate_navi_strategy_name_bkg.xml
new file mode 100644
index 0000000000..a3c21b02d5
--- /dev/null
+++ b/modules/mogo-module-search/src/main/res/drawable/amap_calculate_navi_strategy_name_bkg.xml
@@ -0,0 +1,9 @@
+
+
+ -
+
+
+
+
+
+
\ No newline at end of file
diff --git a/modules/mogo-module-search/src/main/res/drawable/selector_item_category_background.xml b/modules/mogo-module-search/src/main/res/drawable/selector_item_category_background.xml
new file mode 100644
index 0000000000..cff42dd83b
--- /dev/null
+++ b/modules/mogo-module-search/src/main/res/drawable/selector_item_category_background.xml
@@ -0,0 +1,12 @@
+
+
+ -
+
+
+
+
+
+
\ No newline at end of file
diff --git a/modules/mogo-module-search/src/main/res/drawable/selector_item_category_result.xml b/modules/mogo-module-search/src/main/res/drawable/selector_item_category_result.xml
new file mode 100644
index 0000000000..e131861fdf
--- /dev/null
+++ b/modules/mogo-module-search/src/main/res/drawable/selector_item_category_result.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/modules/mogo-module-search/src/main/res/drawable/selector_setting_bg.xml b/modules/mogo-module-search/src/main/res/drawable/selector_setting_bg.xml
new file mode 100644
index 0000000000..d39295d19f
--- /dev/null
+++ b/modules/mogo-module-search/src/main/res/drawable/selector_setting_bg.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/modules/mogo-module-search/src/main/res/drawable/shape_round_blue_grident.xml b/modules/mogo-module-search/src/main/res/drawable/shape_round_blue_grident.xml
new file mode 100644
index 0000000000..cc53c2d4d8
--- /dev/null
+++ b/modules/mogo-module-search/src/main/res/drawable/shape_round_blue_grident.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
diff --git a/modules/mogo-module-search/src/main/res/drawable/shape_round_blue_margin.xml b/modules/mogo-module-search/src/main/res/drawable/shape_round_blue_margin.xml
new file mode 100644
index 0000000000..e5dda25219
--- /dev/null
+++ b/modules/mogo-module-search/src/main/res/drawable/shape_round_blue_margin.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/modules/mogo-module-search/src/main/res/drawable/shape_round_gray.xml b/modules/mogo-module-search/src/main/res/drawable/shape_round_gray.xml
index 4e5fb46c4f..8d4cf110f3 100644
--- a/modules/mogo-module-search/src/main/res/drawable/shape_round_gray.xml
+++ b/modules/mogo-module-search/src/main/res/drawable/shape_round_gray.xml
@@ -1,6 +1,6 @@
-
+
diff --git a/modules/mogo-module-search/src/main/res/drawable/shape_seek_bar.xml b/modules/mogo-module-search/src/main/res/drawable/shape_seek_bar.xml
new file mode 100644
index 0000000000..ceedde01ce
--- /dev/null
+++ b/modules/mogo-module-search/src/main/res/drawable/shape_seek_bar.xml
@@ -0,0 +1,26 @@
+
+
+
+ -
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/modules/mogo-module-search/src/main/res/layout/fragment_navi_setting.xml b/modules/mogo-module-search/src/main/res/layout/fragment_navi_setting.xml
index b44181631a..b4d8ad924a 100644
--- a/modules/mogo-module-search/src/main/res/layout/fragment_navi_setting.xml
+++ b/modules/mogo-module-search/src/main/res/layout/fragment_navi_setting.xml
@@ -1,21 +1,153 @@
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ >
+ android:src="@mipmap/icon_back"
+ />
+ android:textSize="@dimen/txt_title"
+ />
+
+
+
-
+
+
+
+
+
+ app:layout_constraintTop_toBottomOf="@+id/tv_navi_sound_type"
+ >
+ android:checked="true"
+ android:text="@string/navi_prefer_detail"
+ style="@style/rb_setting"
+ />
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/modules/mogo-module-search/src/main/res/layout/fragment_search.xml b/modules/mogo-module-search/src/main/res/layout/fragment_search.xml
index 955c6f79e8..75cdaf87f6 100644
--- a/modules/mogo-module-search/src/main/res/layout/fragment_search.xml
+++ b/modules/mogo-module-search/src/main/res/layout/fragment_search.xml
@@ -8,43 +8,12 @@
android:paddingLeft="@dimen/dp_60"
android:paddingRight="@dimen/dp_60"
android:paddingTop="@dimen/dp_40"
+ android:clickable="true"
tools:context=".ui.search.SearchFragment"
style="@style/amap_fragment_container_padding_style"
>
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/modules/mogo-module-search/src/main/res/layout/fragment_setting_address.xml b/modules/mogo-module-search/src/main/res/layout/fragment_setting_address.xml
new file mode 100644
index 0000000000..cf04d068c7
--- /dev/null
+++ b/modules/mogo-module-search/src/main/res/layout/fragment_setting_address.xml
@@ -0,0 +1,88 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/modules/mogo-module-search/src/main/res/layout/include_search_bar.xml b/modules/mogo-module-search/src/main/res/layout/include_search_bar.xml
new file mode 100644
index 0000000000..4081e7d128
--- /dev/null
+++ b/modules/mogo-module-search/src/main/res/layout/include_search_bar.xml
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/modules/mogo-module-search/src/main/res/layout/item_calculate_path_map.xml b/modules/mogo-module-search/src/main/res/layout/item_calculate_path_map.xml
new file mode 100644
index 0000000000..8b46cc02a9
--- /dev/null
+++ b/modules/mogo-module-search/src/main/res/layout/item_calculate_path_map.xml
@@ -0,0 +1,84 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/modules/mogo-module-search/src/main/res/layout/item_search_category.xml b/modules/mogo-module-search/src/main/res/layout/item_search_category.xml
new file mode 100644
index 0000000000..b804455410
--- /dev/null
+++ b/modules/mogo-module-search/src/main/res/layout/item_search_category.xml
@@ -0,0 +1,66 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/modules/mogo-module-search/src/main/res/mipmap-xhdpi/icon_navi_position.png b/modules/mogo-module-search/src/main/res/mipmap-xhdpi/icon_navi_position.png
index be529a46a3..029ae98fb2 100755
Binary files a/modules/mogo-module-search/src/main/res/mipmap-xhdpi/icon_navi_position.png and b/modules/mogo-module-search/src/main/res/mipmap-xhdpi/icon_navi_position.png differ
diff --git a/modules/mogo-module-search/src/main/res/mipmap-xhdpi/icon_navi_sound_low.png b/modules/mogo-module-search/src/main/res/mipmap-xhdpi/icon_navi_sound_low.png
new file mode 100755
index 0000000000..3d277f6c14
Binary files /dev/null and b/modules/mogo-module-search/src/main/res/mipmap-xhdpi/icon_navi_sound_low.png differ
diff --git a/modules/mogo-module-search/src/main/res/mipmap-xhdpi/icon_navi_sound_plus.png b/modules/mogo-module-search/src/main/res/mipmap-xhdpi/icon_navi_sound_plus.png
new file mode 100755
index 0000000000..e2199c1de5
Binary files /dev/null and b/modules/mogo-module-search/src/main/res/mipmap-xhdpi/icon_navi_sound_plus.png differ
diff --git a/modules/mogo-module-search/src/main/res/mipmap-xhdpi/icon_pb_thumb.png b/modules/mogo-module-search/src/main/res/mipmap-xhdpi/icon_pb_thumb.png
new file mode 100755
index 0000000000..0230dca906
Binary files /dev/null and b/modules/mogo-module-search/src/main/res/mipmap-xhdpi/icon_pb_thumb.png differ
diff --git a/modules/mogo-module-search/src/main/res/mipmap-xhdpi/icon_search_category_checked.png b/modules/mogo-module-search/src/main/res/mipmap-xhdpi/icon_search_category_checked.png
new file mode 100755
index 0000000000..a89d92e306
Binary files /dev/null and b/modules/mogo-module-search/src/main/res/mipmap-xhdpi/icon_search_category_checked.png differ
diff --git a/modules/mogo-module-search/src/main/res/mipmap-xhdpi/icon_search_category_unchecked.png b/modules/mogo-module-search/src/main/res/mipmap-xhdpi/icon_search_category_unchecked.png
new file mode 100755
index 0000000000..392d5c34cb
Binary files /dev/null and b/modules/mogo-module-search/src/main/res/mipmap-xhdpi/icon_search_category_unchecked.png differ
diff --git a/modules/mogo-module-search/src/main/res/mipmap-xhdpi/icon_sound_high.png b/modules/mogo-module-search/src/main/res/mipmap-xhdpi/icon_sound_high.png
new file mode 100755
index 0000000000..3b79814139
Binary files /dev/null and b/modules/mogo-module-search/src/main/res/mipmap-xhdpi/icon_sound_high.png differ
diff --git a/modules/mogo-module-search/src/main/res/mipmap-xhdpi/icon_sound_low.png b/modules/mogo-module-search/src/main/res/mipmap-xhdpi/icon_sound_low.png
new file mode 100755
index 0000000000..6917aad8c8
Binary files /dev/null and b/modules/mogo-module-search/src/main/res/mipmap-xhdpi/icon_sound_low.png differ
diff --git a/modules/mogo-module-search/src/main/res/values/colors.xml b/modules/mogo-module-search/src/main/res/values/colors.xml
index 0944d5ad10..6fb34a3513 100644
--- a/modules/mogo-module-search/src/main/res/values/colors.xml
+++ b/modules/mogo-module-search/src/main/res/values/colors.xml
@@ -5,6 +5,7 @@
#D81B60
#ff080625
#FFFFFF
+ #00000000
#1AFFFFFF
#99FFFFFF
#CCFFFFFF
diff --git a/modules/mogo-module-search/src/main/res/values/ids.xml b/modules/mogo-module-search/src/main/res/values/ids.xml
index ed4cc2c662..5f514a617e 100644
--- a/modules/mogo-module-search/src/main/res/values/ids.xml
+++ b/modules/mogo-module-search/src/main/res/values/ids.xml
@@ -1,4 +1,5 @@
+
\ No newline at end of file
diff --git a/modules/mogo-module-search/src/main/res/values/strings.xml b/modules/mogo-module-search/src/main/res/values/strings.xml
index 77001b3dc0..35f5830081 100644
--- a/modules/mogo-module-search/src/main/res/values/strings.xml
+++ b/modules/mogo-module-search/src/main/res/values/strings.xml
@@ -16,4 +16,21 @@
暂无搜索结果
路线偏好
躲避拥堵
+ 躲避收费
+ 高速优先
+ 不走高速
+ 播报音量
+ 播报偏好
+ 详细播报
+ 简洁播报
+ 白天
+ 夜间
+ 自动
+ 我的位置
+ 地图选点
+ 设为家
+ 设为公司
+ 导航去这里
+ 开始导航
+ 路线选择
diff --git a/modules/mogo-module-search/src/main/res/values/styles.xml b/modules/mogo-module-search/src/main/res/values/styles.xml
index 3f9614df4d..54581e1f8b 100644
--- a/modules/mogo-module-search/src/main/res/values/styles.xml
+++ b/modules/mogo-module-search/src/main/res/values/styles.xml
@@ -34,6 +34,14 @@
- @dimen/sp_40
- @color/selector_white_gray
- @dimen/dp_120
+ - @drawable/selector_setting_bg
+
+
+
diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/MogoServiceProvider.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/MogoServiceProvider.java
index 9ac5789c11..25807c353e 100644
--- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/MogoServiceProvider.java
+++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/MogoServiceProvider.java
@@ -356,7 +356,7 @@ public class MogoServiceProvider implements IMogoModuleProvider,
return;
}
- if ( mLastZoomLevel != zoom ) {
+ if ( mLastZoomLevel != zoom || mCameraNorthEastPosition == null ) {
refreshCameraPosition();
}
@@ -401,7 +401,7 @@ public class MogoServiceProvider implements IMogoModuleProvider,
float distance = Utils.calculateLineDistance( latLng, mLastCustomRefreshCenterLocation );
return distance > factor;
} catch ( Exception e ) {
- Logger.w( TAG, "warming. ", e );
+ Logger.e( TAG, e, "warming. " );
return false;
}
}
diff --git a/modules/mogo-module-tanlu/build.gradle b/modules/mogo-module-tanlu/build.gradle
index 620e6b9d36..a182478571 100644
--- a/modules/mogo-module-tanlu/build.gradle
+++ b/modules/mogo-module-tanlu/build.gradle
@@ -39,6 +39,12 @@ dependencies {
testImplementation 'junit:junit:4.12'
androidTestImplementation 'androidx.test:runner:1.2.0'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
+ implementation rootProject.ext.dependencies.androidxappcompat
+ implementation rootProject.ext.dependencies.androidxconstraintlayout
+ implementation rootProject.ext.dependencies.arouter
+ annotationProcessor rootProject.ext.dependencies.aroutercompiler
+ implementation rootProject.ext.dependencies.rxjava
+ implementation rootProject.ext.dependencies.rxandroid
if (Boolean.valueOf(RELEASE)) {
implementation rootProject.ext.dependencies.mogomap
@@ -55,10 +61,6 @@ dependencies {
implementation project(':modules:mogo-module-common')
implementation project(':modules:mogo-module-service')
}
- implementation rootProject.ext.dependencies.androidxappcompat
- implementation rootProject.ext.dependencies.androidxconstraintlayout
- implementation rootProject.ext.dependencies.arouter
- annotationProcessor rootProject.ext.dependencies.aroutercompiler
implementation 'com.shuyu:gsyVideoPlayer-armv7a:7.1.1'
implementation 'com.shuyu:gsyVideoPlayer-arm64:7.1.1'
diff --git a/modules/mogo-module-tanlu/src/main/java/com/mogo/module/tanlu/callback/AlongTheWayCallback.java b/modules/mogo-module-tanlu/src/main/java/com/mogo/module/tanlu/callback/AlongTheWayCallback.java
new file mode 100644
index 0000000000..de8c420fc6
--- /dev/null
+++ b/modules/mogo-module-tanlu/src/main/java/com/mogo/module/tanlu/callback/AlongTheWayCallback.java
@@ -0,0 +1,13 @@
+package com.mogo.module.tanlu.callback;
+
+import com.mogo.module.tanlu.model.InformationAndLiveCarResult;
+
+/**
+ * @author lixiaopeng
+ * @description 导航沿途搜索
+ * @since 2020-01-09
+ */
+public interface AlongTheWayCallback {
+ void onSuccess(InformationAndLiveCarResult data);
+ void onFail(String message, int code);
+}
diff --git a/modules/mogo-module-tanlu/src/main/java/com/mogo/module/tanlu/callback/RoadLineCallback.java b/modules/mogo-module-tanlu/src/main/java/com/mogo/module/tanlu/callback/RoadLineCallback.java
new file mode 100644
index 0000000000..53e81c13dc
--- /dev/null
+++ b/modules/mogo-module-tanlu/src/main/java/com/mogo/module/tanlu/callback/RoadLineCallback.java
@@ -0,0 +1,13 @@
+package com.mogo.module.tanlu.callback;
+
+import com.mogo.module.tanlu.model.PathLineResult;
+
+/**
+ * @author lixiaopeng
+ * @description 通勤族回调
+ * @since 2020-01-09
+ */
+public interface RoadLineCallback {
+ void onSuccess(PathLineResult data);
+ void onFail(String message, int code);
+}
diff --git a/modules/mogo-module-tanlu/src/main/java/com/mogo/module/tanlu/callback/VoiceSearchCallback.java b/modules/mogo-module-tanlu/src/main/java/com/mogo/module/tanlu/callback/VoiceSearchCallback.java
new file mode 100644
index 0000000000..6b0913e7fb
--- /dev/null
+++ b/modules/mogo-module-tanlu/src/main/java/com/mogo/module/tanlu/callback/VoiceSearchCallback.java
@@ -0,0 +1,13 @@
+package com.mogo.module.tanlu.callback;
+
+import com.mogo.module.tanlu.model.VoiceSearchResult;
+
+/**
+ * @author lixiaopeng
+ * @description 声音控制搜索回调
+ * @since 2020-01-09
+ */
+public interface VoiceSearchCallback {
+ void onSuccess(VoiceSearchResult data);
+ void onFail(String message, int code);
+}
diff --git a/modules/mogo-module-tanlu/src/main/java/com/mogo/module/tanlu/constant/HttpConst.java b/modules/mogo-module-tanlu/src/main/java/com/mogo/module/tanlu/constant/HttpConst.java
new file mode 100644
index 0000000000..130956b35d
--- /dev/null
+++ b/modules/mogo-module-tanlu/src/main/java/com/mogo/module/tanlu/constant/HttpConst.java
@@ -0,0 +1,13 @@
+package com.mogo.module.tanlu.constant;
+
+/**
+ * @author lixiaopeng
+ * @description
+ * @since 2020-01-09
+ */
+public class HttpConst {
+ public static final String HOST_DEV = "http://dzt-test.zhidaohulian.com";
+ public static final String HOST_TEST = "http://dzt-test.zhidaohulian.com";
+ public static final String HOST_PRODUCT = "https://dzt.zhidaohulian.com";
+
+}
diff --git a/modules/mogo-module-tanlu/src/main/java/com/mogo/module/tanlu/constant/TanluConstants.java b/modules/mogo-module-tanlu/src/main/java/com/mogo/module/tanlu/constant/TanluConstants.java
index 80edcce397..fdfdef1e17 100644
--- a/modules/mogo-module-tanlu/src/main/java/com/mogo/module/tanlu/constant/TanluConstants.java
+++ b/modules/mogo-module-tanlu/src/main/java/com/mogo/module/tanlu/constant/TanluConstants.java
@@ -9,5 +9,5 @@ package com.mogo.module.tanlu.constant;
public class TanluConstants {
public static final String TAG = "/tanlu/ui";
-
+ public static final String NAVI_INFO = "navi_info";
}
diff --git a/modules/mogo-module-tanlu/src/main/java/com/mogo/module/tanlu/fragment/TanluCardViewFragment.java b/modules/mogo-module-tanlu/src/main/java/com/mogo/module/tanlu/fragment/TanluCardViewFragment.java
index 0883f4181d..23bd26197b 100644
--- a/modules/mogo-module-tanlu/src/main/java/com/mogo/module/tanlu/fragment/TanluCardViewFragment.java
+++ b/modules/mogo-module-tanlu/src/main/java/com/mogo/module/tanlu/fragment/TanluCardViewFragment.java
@@ -4,6 +4,7 @@ import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.text.Html;
+import android.text.TextUtils;
import android.view.MotionEvent;
import android.view.View;
import android.widget.RelativeLayout;
@@ -13,11 +14,24 @@ import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import com.alibaba.android.arouter.launcher.ARouter;
+import com.amap.api.services.core.LatLonPoint;
+import com.amap.api.services.route.BusRouteResult;
+import com.amap.api.services.route.DrivePath;
+import com.amap.api.services.route.DriveRouteResult;
+import com.amap.api.services.route.RideRouteResult;
+import com.amap.api.services.route.RouteSearch;
+import com.amap.api.services.route.WalkRouteResult;
+import com.mogo.commons.data.BaseData;
+import com.mogo.commons.debug.DebugConfig;
import com.mogo.commons.mvp.IView;
import com.mogo.commons.mvp.MvpFragment;
import com.mogo.commons.mvp.Presenter;
+import com.mogo.commons.network.ParamsProvider;
+import com.mogo.commons.network.SubscribeImpl;
import com.mogo.map.MogoLatLng;
+import com.mogo.map.impl.amap.overlay.DrivingRouteOverlay;
import com.mogo.map.listener.IMogoMapListener;
+import com.mogo.map.location.IMogoLocationClient;
import com.mogo.map.location.IMogoLocationListener;
import com.mogo.map.location.MogoLocation;
import com.mogo.map.marker.IMogoMarker;
@@ -30,19 +44,40 @@ import com.mogo.map.search.poisearch.IMogoPoiSearchListener;
import com.mogo.map.search.poisearch.MogoPoiResult;
import com.mogo.map.uicontroller.EnumMapUI;
import com.mogo.module.service.entity.MarkerExploreWay;
+import com.mogo.module.service.entity.MarkerResponse;
+import com.mogo.module.service.network.RefreshApiService;
+import com.mogo.module.service.network.RefreshBody;
+import com.mogo.module.service.network.RefreshModel;
+import com.mogo.module.tanlu.callback.AlongTheWayCallback;
+import com.mogo.module.tanlu.callback.RoadLineCallback;
+import com.mogo.module.tanlu.callback.VoiceSearchCallback;
+import com.mogo.module.tanlu.constant.HttpConst;
+import com.mogo.module.tanlu.model.Information;
+import com.mogo.module.tanlu.model.InformationAndLiveCarResult;
+import com.mogo.module.tanlu.model.PathLineResult;
+import com.mogo.module.tanlu.model.TanluModelData;
+import com.mogo.module.tanlu.model.VoiceSearchResult;
+import com.mogo.module.tanlu.net.TanluApiService;
+import com.mogo.module.tanlu.util.ActivityStatusUtil;
+import com.mogo.module.tanlu.util.Utils;
+import com.mogo.module.tanlu.voice.VoiceController;
import com.mogo.service.MogoServicePaths;
+import com.mogo.service.connection.IMogoOnMessageListener;
+import com.mogo.service.connection.IMogoSocketManager;
import com.mogo.service.imageloader.IMogoImageLoaderListener;
import com.mogo.service.imageloader.IMogoImageloader;
import com.mogo.service.map.IMogoMapService;
import com.mogo.service.module.IMogoModuleLifecycle;
import com.mogo.module.tanlu.R;
import com.mogo.module.tanlu.model.event.MarkerInfo;
-import com.mogo.module.tanlu.util.Utils;
import com.mogo.module.tanlu.video.FullMediaActivity;
import com.mogo.module.tanlu.video.SimpleCoverVideoPlayer;
import com.mogo.module.tanlu.view.AutoZoomInImageView;
+import com.mogo.service.network.IMogoNetwork;
import com.mogo.utils.TipToast;
import com.mogo.utils.logger.Logger;
+import com.mogo.utils.network.RequestOptions;
+import com.mogo.utils.network.utils.GsonUtil;
import com.shuyu.gsyvideoplayer.builder.GSYVideoOptionBuilder;
import org.greenrobot.eventbus.EventBus;
@@ -50,8 +85,14 @@ import org.greenrobot.eventbus.Subscribe;
import org.greenrobot.eventbus.ThreadMode;
import java.util.ArrayList;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
+import io.reactivex.android.schedulers.AndroidSchedulers;
+import io.reactivex.schedulers.Schedulers;
+
+import static com.mogo.commons.network.Utils.getSn;
import static com.mogo.module.tanlu.util.StringUitlKt.formatDate;
import static com.mogo.module.tanlu.util.Utils.handleDistance;
import static com.mogo.module.tanlu.video.VideoInitKt.initVideo;
@@ -77,6 +118,14 @@ public class TanluCardViewFragment extends MvpFragment>
private IMogoMarker mPoiMarker;
private IMogoMarkerManager mMarkerManager;
private IMogoMapService mMogoMapService;
+ private IMogoSocketManager mMogoSocketManager;
+ private IMogoLocationClient mLocationClient;
+
+ //声音控制文字
+ private String voiceGetInfoMationTts;
+ private String[] searchingVoiceStrings;
+ private String[] searchfaileVoiceStrings;
+
//media
private GSYVideoOptionBuilder gsyVideoOptionBuilder = new GSYVideoOptionBuilder();
private String mVideoUrl = "http://ivi.bupt.edu.cn/hls/cctv1hd.m3u8";
@@ -94,6 +143,8 @@ public class TanluCardViewFragment extends MvpFragment>
private List markerExploreWayList = new ArrayList<>();
private int currentPosition = 0; //卡片媒体当前位置
private Bitmap mMarkerIcon;
+ private TanluModelData mTanluModelData;
+ private List passedByPoints;
@Override
@@ -145,6 +196,27 @@ public class TanluCardViewFragment extends MvpFragment>
super.onActivityCreated(savedInstanceState);
getViewLifecycleOwner().getLifecycle().addObserver(mPresenter);
EventBus.getDefault().register(this);
+ mTanluModelData = new TanluModelData(getContext());
+ handleRoadLineMessage();
+ }
+
+ /**
+ * 处理路线数据信息 TODO
+ */
+ private void handleRoadLineMessage() {
+ mMogoSocketManager = (IMogoSocketManager) ARouter.getInstance().build(MogoServicePaths.PATH_SOCKET_MANAGER).navigation();
+ mMogoSocketManager.registerOnMessageListener(401001, new IMogoOnMessageListener() {
+ @Override
+ public Class target() {
+ return MarkerResponse.class;
+ }
+
+ @Override
+ public void onMsgReceived(MarkerResponse obj) {
+ Logger.e(TAG, "onMsgReceived obj= " + obj);
+ getRoadLineData();
+ }
+ });
}
/**
@@ -422,7 +494,7 @@ public class TanluCardViewFragment extends MvpFragment>
}
/**
- * 接收到对应数据打点
+ * 接收到分享对应数据打点
*
* @param event
*/
@@ -456,6 +528,159 @@ public class TanluCardViewFragment extends MvpFragment>
});
}
+ /**
+ * 导航路线数据事件
+ */
+ public void getNavigationLineData() {
+ Double lat = TanluServiceHandler.getLocationClient().getLastKnowLocation().getLatitude();
+ Double lon = TanluServiceHandler.getLocationClient().getLastKnowLocation().getLongitude();
+ mTanluModelData.getNavigationLineData(lon, lat, new AlongTheWayCallback() {
+ @Override
+ public void onSuccess(InformationAndLiveCarResult data) {
+
+ }
+
+ @Override
+ public void onFail(String message, int code) {
+
+ }
+ });
+ }
+
+ /**
+ * 通勤族 事件,监听消息自己请求路线数据
+ */
+ public void getRoadLineData() {
+ mTanluModelData.getRoadLineData(new RoadLineCallback() {
+ @Override
+ public void onSuccess(PathLineResult o) {
+ //绘制线路线
+ if (o != null && o.getPointList() != null && o.getPointList().size() > 0) {
+ int intervalNum = Utils.getIntervalValue(o.getPointList().size());
+ Logger.d(TAG, "intervalNum = $intervalNum -- pointList.size = ${pointList.size}");
+ int listSize = o.getPointList().size();
+
+ //沿途最多15个点
+ for (int i = 0; i < listSize; i += intervalNum) {
+ passedByPoints.add(new MogoLatLng(o.getPointList().get(i).getLat(), (o.getPointList().get(i).getLon())));
+ }
+
+ Logger.d(TAG, "passedByPoints.size() ----> " + passedByPoints.size());
+ MogoLatLng startLatLng = new MogoLatLng(o.getPointList().get(0).getLat(), o.getPointList().get(0).getLon());
+ MogoLatLng endLatLng = new MogoLatLng(o.getPointList().get(listSize - 1).getLat(), o.getPointList().get(listSize - 1).getLon());
+
+ mMarkerManager.addRouteWay(getContext(), startLatLng, endLatLng, passedByPoints);
+ }
+ }
+
+ @Override
+ public void onFail(String message, int code) {
+
+ }
+ });
+ }
+
+
+ /**
+ * 声音控制道理数据
+ */
+ public void getVoiceControlRoadData(String keywords) {
+ Double lat = TanluServiceHandler.getLocationClient().getLastKnowLocation().getLatitude();
+ Double lon = TanluServiceHandler.getLocationClient().getLastKnowLocation().getLongitude();
+ String cityCode = TanluServiceHandler.getLocationClient().getLastKnowLocation().getCityCode();
+ String adCode = TanluServiceHandler.getLocationClient().getLastKnowLocation().getAdCode();
+ mTanluModelData.getVoiceControlRoadData(keywords, cityCode, lon, lat, adCode, new VoiceSearchCallback() {
+ @Override
+ public void onSuccess(VoiceSearchResult o) {
+ String discription = o.getDescription();
+ Logger.d(TAG, "discription = " + discription);
+ if (o.getInformations() != null && o.getInformations().size() > 0) {
+ speakSuccessVoice(o.getInformations(), discription == null ? "" : discription);
+ } else {
+ if (!TextUtils.isEmpty(discription)) {
+// VoiceController.speakVoice(discription);
+ } else {
+// VoiceController.speakVoice("未找到其他车主分享的路况信息");
+ }
+ }
+ }
+
+ @Override
+ public void onFail(String message, int code) {
+
+ }
+ });
+
+ }
+
+ private void speakSuccessVoice(List informations, String trafficStatus) {
+// switch (informations.size()) {
+// case 0:
+// speakFailVoice();
+// break;
+//
+// case 1:
+// trackVoiceSearch(1);
+// VoiceController.speakVoice(
+// String.format(
+// voiceGetInfoMationTts,
+// "1"
+// ) + trafficStatus
+// );
+//
+// case 2:
+// trackVoiceSearch(1);
+// VoiceController.speakVoice(
+// String.format(
+// voiceGetInfoMationTts,
+// "2"
+// ) + trafficStatus
+// );
+//
+//
+// case 3:
+// trackVoiceSearch(1);
+// VoiceController.speakVoice(
+// String.format(
+// voiceGetInfoMationTts,
+// "3"
+// ) + trafficStatus
+// );
+//
+// default:
+// trackVoiceSearch(1);
+// VoiceController.speakVoice(
+// String.format(
+// voiceGetInfoMationTts,
+// "多"
+// ) + trafficStatus);
+// }
+ }
+
+
+ private void initStrings() {
+ voiceGetInfoMationTts =
+ getContext().getResources().getString(R.string.voice_get_informations_tts);
+ searchingVoiceStrings =
+ getContext().getResources().getStringArray(R.array.searching_voice_string_array);
+ searchfaileVoiceStrings =
+ getContext().getResources().getStringArray(R.array.search_fail_voice_array);
+ }
+
+ private void speakFailVoice(String string) {
+// VoiceController.speakVoice(string);
+ trackVoiceSearch(2);
+ }
+
+ //上报语音搜索
+ private void trackVoiceSearch(int type) {
+// trackNormalEvent(
+// CarNet_Voice_Search, mutableMapOf("type" to type, "searchtext" to keywords, "inputlon" to inputLon,
+// "inputlat" to inputLat, "datalon" to dataLon, "datalat" to dataLat),
+// BaseApplication.getAppContext()
+// )
+ }
+
}
diff --git a/modules/mogo-module-tanlu/src/main/java/com/mogo/module/tanlu/fragment/TanluCardViewProvider.java b/modules/mogo-module-tanlu/src/main/java/com/mogo/module/tanlu/fragment/TanluCardViewProvider.java
index 21f29c8c4d..882fdf0f15 100644
--- a/modules/mogo-module-tanlu/src/main/java/com/mogo/module/tanlu/fragment/TanluCardViewProvider.java
+++ b/modules/mogo-module-tanlu/src/main/java/com/mogo/module/tanlu/fragment/TanluCardViewProvider.java
@@ -40,6 +40,7 @@ public class TanluCardViewProvider implements IMogoModuleProvider {
@Override
public void init( Context context ) {
TanluServiceHandler.init( context );
+ Logger.d(TAG, "init ----------> ");
}
@Override
diff --git a/modules/mogo-module-tanlu/src/main/java/com/mogo/module/tanlu/map/AMapUtil.java b/modules/mogo-module-tanlu/src/main/java/com/mogo/module/tanlu/map/AMapUtil.java
deleted file mode 100755
index 427a20d0a8..0000000000
--- a/modules/mogo-module-tanlu/src/main/java/com/mogo/module/tanlu/map/AMapUtil.java
+++ /dev/null
@@ -1,268 +0,0 @@
-package com.mogo.module.tanlu.map;
-
-import android.text.Html;
-import android.text.Spanned;
-import android.widget.EditText;
-
-import com.amap.api.maps.model.LatLng;
-import com.amap.api.services.core.LatLonPoint;
-import com.amap.api.services.route.BusPath;
-import com.amap.api.services.route.BusStep;
-import com.amap.api.services.route.RouteBusLineItem;
-import com.amap.api.services.route.RouteRailwayItem;
-import com.mogo.module.tanlu.R;
-
-import java.text.DecimalFormat;
-import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-
-public class AMapUtil {
- /**
- * 判断edittext是否null
- */
- public static String checkEditText(EditText editText) {
- if (editText != null && editText.getText() != null
- && !(editText.getText().toString().trim().equals(""))) {
- return editText.getText().toString().trim();
- } else {
- return "";
- }
- }
-
- public static Spanned stringToSpan(String src) {
- return src == null ? null : Html.fromHtml(src.replace("\n", "
"));
- }
-
- public static String colorFont(String src, String color) {
- StringBuffer strBuf = new StringBuffer();
-
- strBuf.append("").append(src)
- .append("");
- return strBuf.toString();
- }
-
- public static String makeHtmlNewLine() {
- return "
";
- }
-
- public static String makeHtmlSpace(int number) {
- final String space = " ";
- StringBuilder result = new StringBuilder();
- for (int i = 0; i < number; i++) {
- result.append(space);
- }
- return result.toString();
- }
-
- public static String getFriendlyLength(int lenMeter) {
- if (lenMeter > 10000) // 10 km
- {
- int dis = lenMeter / 1000;
- return dis + ChString.Kilometer;
- }
-
- if (lenMeter > 1000) {
- float dis = (float) lenMeter / 1000;
- DecimalFormat fnum = new DecimalFormat("##0.0");
- String dstr = fnum.format(dis);
- return dstr + ChString.Kilometer;
- }
-
- if (lenMeter > 100) {
- int dis = lenMeter / 50 * 50;
- return dis + ChString.Meter;
- }
-
- int dis = lenMeter / 10 * 10;
- if (dis == 0) {
- dis = 10;
- }
-
- return dis + ChString.Meter;
- }
-
- public static boolean IsEmptyOrNullString(String s) {
- return (s == null) || (s.trim().length() == 0);
- }
-
- /**
- * 把LatLng对象转化为LatLonPoint对象
- */
- public static LatLonPoint convertToLatLonPoint(LatLng latlon) {
- return new LatLonPoint(latlon.latitude, latlon.longitude);
- }
-
- /**
- * 把LatLonPoint对象转化为LatLon对象
- */
- public static LatLng convertToLatLng(LatLonPoint latLonPoint) {
- return new LatLng(latLonPoint.getLatitude(), latLonPoint.getLongitude());
- }
-
- /**
- * 把集合体的LatLonPoint转化为集合体的LatLng
- */
- public static ArrayList convertArrList(List shapes) {
- ArrayList lineShapes = new ArrayList();
- for (LatLonPoint point : shapes) {
- LatLng latLngTemp = AMapUtil.convertToLatLng(point);
- lineShapes.add(latLngTemp);
- }
- return lineShapes;
- }
-
- /**
- * long类型时间格式化
- */
- public static String convertToTime(long time) {
- SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
- Date date = new Date(time);
- return df.format(date);
- }
-
- public static final String HtmlBlack = "#000000";
- public static final String HtmlGray = "#808080";
-
- public static String getFriendlyTime(int second) {
- if (second > 3600) {
- int hour = second / 3600;
- int miniate = (second % 3600) / 60;
- return hour + "小时" + miniate + "分钟";
- }
- if (second >= 60) {
- int miniate = second / 60;
- return miniate + "分钟";
- }
- return second + "秒";
- }
-
- //路径规划方向指示和图片对应
- public static int getDriveActionID(String actionName) {
- if (actionName == null || actionName.equals("")) {
- return R.drawable.dir3;
- }
- if ("左转".equals(actionName)) {
- return R.drawable.dir2;
- }
- if ("右转".equals(actionName)) {
- return R.drawable.dir1;
- }
- if ("向左前方行驶".equals(actionName) || "靠左".equals(actionName)) {
- return R.drawable.dir6;
- }
- if ("向右前方行驶".equals(actionName) || "靠右".equals(actionName)) {
- return R.drawable.dir5;
- }
- if ("向左后方行驶".equals(actionName) || "左转调头".equals(actionName)) {
- return R.drawable.dir7;
- }
- if ("向右后方行驶".equals(actionName)) {
- return R.drawable.dir8;
- }
- if ("直行".equals(actionName)) {
- return R.drawable.dir3;
- }
- if ("减速行驶".equals(actionName)) {
- return R.drawable.dir4;
- }
- return R.drawable.dir3;
- }
-
- public static int getWalkActionID(String actionName) {
- if (actionName == null || actionName.equals("")) {
- return R.drawable.dir13;
- }
- if ("左转".equals(actionName)) {
- return R.drawable.dir2;
- }
- if ("右转".equals(actionName)) {
- return R.drawable.dir1;
- }
- if ("向左前方".equals(actionName) || "靠左".equals(actionName) || actionName.contains("向左前方")) {
- return R.drawable.dir6;
- }
- if ("向右前方".equals(actionName) || "靠右".equals(actionName) || actionName.contains("向右前方")) {
- return R.drawable.dir5;
- }
- if ("向左后方".equals(actionName) || actionName.contains("向左后方")) {
- return R.drawable.dir7;
- }
- if ("向右后方".equals(actionName) || actionName.contains("向右后方")) {
- return R.drawable.dir8;
- }
- if ("直行".equals(actionName)) {
- return R.drawable.dir3;
- }
- if ("通过人行横道".equals(actionName)) {
- return R.drawable.dir9;
- }
- if ("通过过街天桥".equals(actionName)) {
- return R.drawable.dir11;
- }
- if ("通过地下通道".equals(actionName)) {
- return R.drawable.dir10;
- }
-
- return R.drawable.dir13;
- }
-
- public static String getBusPathTitle(BusPath busPath) {
- if (busPath == null) {
- return String.valueOf("");
- }
- List busSetps = busPath.getSteps();
- if (busSetps == null) {
- return String.valueOf("");
- }
- StringBuffer sb = new StringBuffer();
- for (BusStep busStep : busSetps) {
- StringBuffer title = new StringBuffer();
- if (busStep.getBusLines().size() > 0) {
- for (RouteBusLineItem busline : busStep.getBusLines()) {
- if (busline == null) {
- continue;
- }
-
- String buslineName = getSimpleBusLineName(busline.getBusLineName());
- title.append(buslineName);
- title.append(" / ");
- }
-// RouteBusLineItem busline = busStep.getBusLines().get(0);
-
- sb.append(title.substring(0, title.length() - 3));
- sb.append(" > ");
- }
- if (busStep.getRailway() != null) {
- RouteRailwayItem railway = busStep.getRailway();
- sb.append(railway.getTrip() + "(" + railway.getDeparturestop().getName()
- + " - " + railway.getArrivalstop().getName() + ")");
- sb.append(" > ");
- }
- }
- return sb.substring(0, sb.length() - 3);
- }
-
- public static String getBusPathDes(BusPath busPath) {
- if (busPath == null) {
- return String.valueOf("");
- }
- long second = busPath.getDuration();
- String time = getFriendlyTime((int) second);
- float subDistance = busPath.getDistance();
- String subDis = getFriendlyLength((int) subDistance);
- float walkDistance = busPath.getWalkDistance();
- String walkDis = getFriendlyLength((int) walkDistance);
- return String.valueOf(time + " | " + subDis + " | 步行" + walkDis);
- }
-
- public static String getSimpleBusLineName(String busLineName) {
- if (busLineName == null) {
- return String.valueOf("");
- }
- return busLineName.replaceAll("\\(.*?\\)", "");
- }
-
-
-}
diff --git a/modules/mogo-module-tanlu/src/main/java/com/mogo/module/tanlu/map/ChString.java b/modules/mogo-module-tanlu/src/main/java/com/mogo/module/tanlu/map/ChString.java
deleted file mode 100755
index 1f32432da7..0000000000
--- a/modules/mogo-module-tanlu/src/main/java/com/mogo/module/tanlu/map/ChString.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package com.mogo.module.tanlu.map;
-
-public class ChString {
- public static final String Kilometer = "\u516c\u91cc";// "公里";
- public static final String Meter = "\u7c73";// "米";
- public static final String ByFoot = "\u6b65\u884c";// "步行";
- public static final String To = "\u53bb\u5f80";// "去往";
- public static final String Station = "\u8f66\u7ad9";// "车站";
- public static final String TargetPlace = "\u76ee\u7684\u5730";// "目的地";
- public static final String StartPlace = "\u51fa\u53d1\u5730";// "出发地";
- public static final String About = "\u5927\u7ea6";// "大约";
- public static final String Direction = "\u65b9\u5411";// "方向";
-
- public static final String GetOn = "\u4e0a\u8f66";// "上车";
- public static final String GetOff = "\u4e0b\u8f66";// "下车";
- public static final String Zhan = "\u7ad9";// "站";
-
- public static final String cross = "\u4ea4\u53c9\u8def\u53e3"; // 交叉路口
- public static final String type = "\u7c7b\u522b"; // 类别
- public static final String address = "\u5730\u5740"; // 地址
- public static final String PrevStep = "\u4e0a\u4e00\u6b65";
- public static final String NextStep = "\u4e0b\u4e00\u6b65";
- public static final String Gong = "\u516c\u4ea4";
- public static final String ByBus = "\u4e58\u8f66";
- public static final String Arrive = "\u5230\u8FBE";// 到达
-}
diff --git a/modules/mogo-module-tanlu/src/main/java/com/mogo/module/tanlu/map/DrivingRouteOverlay.java b/modules/mogo-module-tanlu/src/main/java/com/mogo/module/tanlu/map/DrivingRouteOverlay.java
deleted file mode 100755
index 8e95c5fde3..0000000000
--- a/modules/mogo-module-tanlu/src/main/java/com/mogo/module/tanlu/map/DrivingRouteOverlay.java
+++ /dev/null
@@ -1,384 +0,0 @@
-package com.mogo.module.tanlu.map;
-
-import android.content.Context;
-import android.graphics.Color;
-
-import com.amap.api.maps.AMap;
-import com.amap.api.maps.model.BitmapDescriptor;
-import com.amap.api.maps.model.BitmapDescriptorFactory;
-import com.amap.api.maps.model.LatLng;
-import com.amap.api.maps.model.LatLngBounds;
-import com.amap.api.maps.model.Marker;
-import com.amap.api.maps.model.MarkerOptions;
-import com.amap.api.maps.model.PolylineOptions;
-import com.amap.api.services.core.LatLonPoint;
-import com.amap.api.services.route.DrivePath;
-import com.amap.api.services.route.DriveStep;
-import com.amap.api.services.route.TMC;
-import com.mogo.module.tanlu.R;
-
-import java.util.ArrayList;
-import java.util.List;
-
-
-/**
- * 导航路线图层类
- */
-public class DrivingRouteOverlay extends RouteOverlay {
- private DrivePath drivePath;
- private List throughPointList;
- private List throughPointMarkerList = new ArrayList();
- private boolean throughPointMarkerVisible = true;
- private List tmcs;
- private PolylineOptions mPolylineOptions;
- private PolylineOptions mPolylineOptionscolor;
- private Context mContext;
- private boolean isColorfulline = true;
- private float mWidth = 4;
- private List mLatLngsOfPath;
-
- public void setIsColorfulline(boolean iscolorfulline) {
- this.isColorfulline = iscolorfulline;
- }
-
- /**
- * 根据给定的参数,构造一个导航路线图层类对象。
- *
- * @param amap 地图对象。
- * @param path 导航路线规划方案。
- * @param context 当前的activity对象。
- */
- public DrivingRouteOverlay(Context context, AMap amap, DrivePath path,
- LatLonPoint start, LatLonPoint end, List throughPointList) {
- super(context);
- mContext = context;
- mAMap = amap;
- this.drivePath = path;
- startPoint = AMapUtil.convertToLatLng(start);
- endPoint = AMapUtil.convertToLatLng(end);
- this.throughPointList = throughPointList;
-
- initBitmapDescriptor();
- }
-
- public float getRouteWidth() {
- return mWidth;
- }
-
- /**
- * 设置路线宽度
- *
- * @param mWidth 路线宽度,取值范围:大于0
- */
- public void setRouteWidth(float mWidth) {
- this.mWidth = mWidth;
- }
-
- /**
- * 添加驾车路线添加到地图上显示。
- */
- public void addToMap() {
- initPolylineOptions();
- try {
- if (mAMap == null) {
- return;
- }
-
- if (mWidth == 0 || drivePath == null) {
- return;
- }
- mLatLngsOfPath = new ArrayList();
- tmcs = new ArrayList();
- List drivePaths = drivePath.getSteps();
- mPolylineOptions.add(startPoint);
- for (int i = 0; i < drivePaths.size(); i++) {
- DriveStep step = drivePaths.get(i);
- List latlonPoints = step.getPolyline();
- List tmclist = step.getTMCs();
- tmcs.addAll(tmclist);
- addDrivingStationMarkers(step, convertToLatLng(latlonPoints.get(0)));
- for (LatLonPoint latlonpoint : latlonPoints) {
- mPolylineOptions.add(convertToLatLng(latlonpoint));
- mLatLngsOfPath.add(convertToLatLng(latlonpoint));
- }
- }
- mPolylineOptions.add(endPoint);
- if (startMarker != null) {
- startMarker.remove();
- startMarker = null;
- }
-
- if (endMarker != null) {
- endMarker.remove();
- endMarker = null;
- }
-// addStartAndEndMarker();
-// addThroughPointMarker();
- if (isColorfulline && tmcs.size() > 0) {
- colorWayUpdate(tmcs);
- showcolorPolyline();
- } else {
- showPolyline();
- }
-
- } catch (Throwable e) {
- e.printStackTrace();
- }
- }
-
- /**
- * 初始化线段属性
- */
- private void initPolylineOptions() {
- mPolylineOptions = null;
- mPolylineOptions = new PolylineOptions();
- mPolylineOptions.color(getDriveColor()).width(getRouteWidth());
- }
-
- private void showPolyline() {
- addPolyLine(mPolylineOptions);
- }
-
- private void showcolorPolyline() {
- addPolyLine(mPolylineOptionscolor);
- }
-
- /**
- * 根据不同的路段拥堵情况展示不同的颜色
- *
- * @param tmcSection
- */
- private void colorWayUpdate(List tmcSection) {
- if (mAMap == null) {
- return;
- }
- if (tmcSection == null || tmcSection.size() <= 0) {
- return;
- }
- TMC segmentTrafficStatus;
- mPolylineOptionscolor = null;
- mPolylineOptionscolor = new PolylineOptions();
- mPolylineOptionscolor.width(getRouteWidth());
- List colorList = new ArrayList();
- List bitmapDescriptors = new ArrayList();
- List points = new ArrayList<>();
- List texIndexList = new ArrayList();
-// mPolylineOptionscolor.add(startPoint);
-// mPolylineOptionscolor.add(AMapUtil.convertToLatLng(tmcSection.get(0).getPolyline().get(0)));
-
- points.add(startPoint);
- points.add(AMapUtil.convertToLatLng(tmcSection.get(0).getPolyline().get(0)));
- colorList.add(getDriveColor());
- bitmapDescriptors.add(defaultRoute);
-
- BitmapDescriptor bitmapDescriptor = null;
- int textIndex = 0;
- texIndexList.add(textIndex);
- texIndexList.add(++textIndex);
- for (int i = 0; i < tmcSection.size(); i++) {
- segmentTrafficStatus = tmcSection.get(i);
- int color = getcolor(segmentTrafficStatus.getStatus());
- bitmapDescriptor = getTrafficBitmapDescriptor(segmentTrafficStatus.getStatus());
- List mployline = segmentTrafficStatus.getPolyline();
- for (int j = 0; j < mployline.size(); j++) {
-// mPolylineOptionscolor.add(AMapUtil.convertToLatLng(mployline.get(j)));
- points.add(AMapUtil.convertToLatLng(mployline.get(j)));
- colorList.add(color);
-
- texIndexList.add(++textIndex);
- bitmapDescriptors.add(bitmapDescriptor);
- }
- }
-
- points.add(endPoint);
- colorList.add(getDriveColor());
- bitmapDescriptors.add(defaultRoute);
- texIndexList.add(++textIndex);
- mPolylineOptionscolor.addAll(points);
- mPolylineOptionscolor.colorValues(colorList);
-
-// mPolylineOptionscolor.setCustomTextureIndex(texIndexList);
-// mPolylineOptionscolor.setCustomTextureList(bitmapDescriptors);
- }
-
- private BitmapDescriptor defaultRoute = null;
- private BitmapDescriptor unknownTraffic = null;
- private BitmapDescriptor smoothTraffic = null;
- private BitmapDescriptor slowTraffic = null;
- private BitmapDescriptor jamTraffic = null;
- private BitmapDescriptor veryJamTraffic = null;
-
- private void initBitmapDescriptor() {
- defaultRoute = BitmapDescriptorFactory.fromResource(R.drawable.amap_route_color_texture_6_arrow);
- smoothTraffic = BitmapDescriptorFactory.fromResource(R.drawable.amap_route_color_texture_4_arrow);
- unknownTraffic = BitmapDescriptorFactory.fromResource(R.drawable.amap_route_color_texture_0_arrow);
- slowTraffic = BitmapDescriptorFactory.fromResource(R.drawable.amap_route_color_texture_3_arrow);
- jamTraffic = BitmapDescriptorFactory.fromResource(R.drawable.amap_route_color_texture_2_arrow);
- veryJamTraffic = BitmapDescriptorFactory.fromResource(R.drawable.amap_route_color_texture_9_arrow);
- }
-
- private BitmapDescriptor getTrafficBitmapDescriptor(String status) {
- if (status.equals("畅通")) {
- return smoothTraffic;
- } else if (status.equals("缓行")) {
- return slowTraffic;
- } else if (status.equals("拥堵")) {
- return jamTraffic;
- } else if (status.equals("严重拥堵")) {
- return veryJamTraffic;
- } else {
- return defaultRoute;
- }
- }
-
-
- private int getcolor(String status) {
- if (status.equals("畅通")) {
- return Color.GREEN;
- } else if (status.equals("缓行")) {
- return Color.YELLOW;
- } else if (status.equals("拥堵")) {
- return Color.RED;
- } else if (status.equals("严重拥堵")) {
- return Color.parseColor("#990033");
- } else {
- return Color.GREEN;
- }
- }
-
- public LatLng convertToLatLng(LatLonPoint point) {
- return new LatLng(point.getLatitude(), point.getLongitude());
- }
-
- /**
- * @param driveStep
- * @param latLng
- */
- private void addDrivingStationMarkers(DriveStep driveStep, LatLng latLng) {
- addStationMarker(new MarkerOptions()
- .position(latLng)
- .title("\u65B9\u5411:" + driveStep.getAction()
- + "\n\u9053\u8DEF:" + driveStep.getRoad())
- .snippet(driveStep.getInstruction()).visible(nodeIconVisible)
- .anchor(0.5f, 0.5f).icon(getDriveBitmapDescriptor()));
- }
-
- @Override
- protected LatLngBounds getLatLngBounds() {
- LatLngBounds.Builder b = LatLngBounds.builder();
- b.include(new LatLng(startPoint.latitude, startPoint.longitude));
- b.include(new LatLng(endPoint.latitude, endPoint.longitude));
- if (this.throughPointList != null && this.throughPointList.size() > 0) {
- for (int i = 0; i < this.throughPointList.size(); i++) {
- b.include(new LatLng(
- this.throughPointList.get(i).getLatitude(),
- this.throughPointList.get(i).getLongitude()));
- }
- }
- return b.build();
- }
-
- public void setThroughPointIconVisibility(boolean visible) {
- try {
- throughPointMarkerVisible = visible;
- if (this.throughPointMarkerList != null
- && this.throughPointMarkerList.size() > 0) {
- for (int i = 0; i < this.throughPointMarkerList.size(); i++) {
- this.throughPointMarkerList.get(i).setVisible(visible);
- }
- }
- } catch (Throwable e) {
- e.printStackTrace();
- }
- }
-
- private void addThroughPointMarker() {
- if (this.throughPointList != null && this.throughPointList.size() > 0) {
- LatLonPoint latLonPoint = null;
- for (int i = 0; i < this.throughPointList.size(); i++) {
- latLonPoint = this.throughPointList.get(i);
- if (latLonPoint != null) {
- throughPointMarkerList.add(mAMap
- .addMarker((new MarkerOptions())
- .position(
- new LatLng(latLonPoint
- .getLatitude(), latLonPoint
- .getLongitude()))
- .visible(throughPointMarkerVisible)
- .icon(getThroughPointBitDes())
- .title("\u9014\u7ECF\u70B9")));
- }
- }
- }
- }
-
- private BitmapDescriptor getThroughPointBitDes() {
- return BitmapDescriptorFactory.fromResource(R.drawable.amap_through);
-
- }
-
- /**
- * 获取两点间距离
- *
- * @param start
- * @param end
- * @return
- */
- public static int calculateDistance(LatLng start, LatLng end) {
- double x1 = start.longitude;
- double y1 = start.latitude;
- double x2 = end.longitude;
- double y2 = end.latitude;
- return calculateDistance(x1, y1, x2, y2);
- }
-
- public static int calculateDistance(double x1, double y1, double x2, double y2) {
- final double NF_pi = 0.01745329251994329; // 弧度 PI/180
- x1 *= NF_pi;
- y1 *= NF_pi;
- x2 *= NF_pi;
- y2 *= NF_pi;
- double sinx1 = Math.sin(x1);
- double siny1 = Math.sin(y1);
- double cosx1 = Math.cos(x1);
- double cosy1 = Math.cos(y1);
- double sinx2 = Math.sin(x2);
- double siny2 = Math.sin(y2);
- double cosx2 = Math.cos(x2);
- double cosy2 = Math.cos(y2);
- double[] v1 = new double[3];
- v1[0] = cosy1 * cosx1 - cosy2 * cosx2;
- v1[1] = cosy1 * sinx1 - cosy2 * sinx2;
- v1[2] = siny1 - siny2;
- double dist = Math.sqrt(v1[0] * v1[0] + v1[1] * v1[1] + v1[2] * v1[2]);
-
- return (int) (Math.asin(dist / 2) * 12742001.5798544);
- }
-
-
- //获取指定两点之间固定距离点
- public static LatLng getPointForDis(LatLng sPt, LatLng ePt, double dis) {
- double lSegLength = calculateDistance(sPt, ePt);
- double preResult = dis / lSegLength;
- return new LatLng((ePt.latitude - sPt.latitude) * preResult + sPt.latitude, (ePt.longitude - sPt.longitude) * preResult + sPt.longitude);
- }
-
- /**
- * 去掉DriveLineOverlay上的线段和标记。
- */
- @Override
- public void removeFromMap() {
- try {
- super.removeFromMap();
- if (this.throughPointMarkerList != null
- && this.throughPointMarkerList.size() > 0) {
- for (int i = 0; i < this.throughPointMarkerList.size(); i++) {
- this.throughPointMarkerList.get(i).remove();
- }
- this.throughPointMarkerList.clear();
- }
- } catch (Throwable e) {
- e.printStackTrace();
- }
- }
-}
\ No newline at end of file
diff --git a/modules/mogo-module-tanlu/src/main/java/com/mogo/module/tanlu/map/RouteOverlay.java b/modules/mogo-module-tanlu/src/main/java/com/mogo/module/tanlu/map/RouteOverlay.java
deleted file mode 100755
index 47a63582b5..0000000000
--- a/modules/mogo-module-tanlu/src/main/java/com/mogo/module/tanlu/map/RouteOverlay.java
+++ /dev/null
@@ -1,236 +0,0 @@
-package com.mogo.module.tanlu.map;
-
-import android.content.Context;
-import android.graphics.Bitmap;
-import android.graphics.Color;
-
-import com.amap.api.maps.AMap;
-import com.amap.api.maps.CameraUpdateFactory;
-import com.amap.api.maps.model.BitmapDescriptor;
-import com.amap.api.maps.model.BitmapDescriptorFactory;
-import com.amap.api.maps.model.LatLng;
-import com.amap.api.maps.model.LatLngBounds;
-import com.amap.api.maps.model.Marker;
-import com.amap.api.maps.model.MarkerOptions;
-import com.amap.api.maps.model.Polyline;
-import com.amap.api.maps.model.PolylineOptions;
-import com.mogo.module.tanlu.R;
-
-import java.util.ArrayList;
-import java.util.List;
-
-
-public class RouteOverlay {
- protected List stationMarkers = new ArrayList();
- protected List allPolyLines = new ArrayList();
- protected Marker startMarker;
- protected Marker endMarker;
- protected LatLng startPoint;
- protected LatLng endPoint;
- protected AMap mAMap;
- private Context mContext;
- private Bitmap startBit, endBit, busBit, walkBit, driveBit;
- protected boolean nodeIconVisible = true;
-
- public RouteOverlay(Context context) {
- mContext = context;
- }
-
- /**
- * 去掉BusRouteOverlay上所有的Marker。
- *
- * @since V2.1.0
- */
- public void removeFromMap() {
- if (startMarker != null) {
- startMarker.remove();
-
- }
- if (endMarker != null) {
- endMarker.remove();
- }
- for (Marker marker : stationMarkers) {
- marker.remove();
- }
- for (Polyline line : allPolyLines) {
- line.remove();
- }
- destroyBit();
- }
-
- private void destroyBit() {
- if (startBit != null) {
- startBit.recycle();
- startBit = null;
- }
- if (endBit != null) {
- endBit.recycle();
- endBit = null;
- }
- if (busBit != null) {
- busBit.recycle();
- busBit = null;
- }
- if (walkBit != null) {
- walkBit.recycle();
- walkBit = null;
- }
- if (driveBit != null) {
- driveBit.recycle();
- driveBit = null;
- }
- }
-
- /**
- * 给起点Marker设置图标,并返回更换图标的图片。如不用默认图片,需要重写此方法。
- *
- * @return 更换的Marker图片。
- * @since V2.1.0
- */
- protected BitmapDescriptor getStartBitmapDescriptor() {
- return BitmapDescriptorFactory.fromResource(R.drawable.amap_start);
- }
-
- /**
- * 给终点Marker设置图标,并返回更换图标的图片。如不用默认图片,需要重写此方法。
- *
- * @return 更换的Marker图片。
- * @since V2.1.0
- */
- protected BitmapDescriptor getEndBitmapDescriptor() {
- return BitmapDescriptorFactory.fromResource(R.drawable.amap_end);
- }
-
- /**
- * 给公交Marker设置图标,并返回更换图标的图片。如不用默认图片,需要重写此方法。
- *
- * @return 更换的Marker图片。
- * @since V2.1.0
- */
- protected BitmapDescriptor getBusBitmapDescriptor() {
- return BitmapDescriptorFactory.fromResource(R.drawable.amap_bus);
- }
-
- /**
- * 给步行Marker设置图标,并返回更换图标的图片。如不用默认图片,需要重写此方法。
- *
- * @return 更换的Marker图片。
- * @since V2.1.0
- */
- protected BitmapDescriptor getWalkBitmapDescriptor() {
- return BitmapDescriptorFactory.fromResource(R.drawable.amap_man);
- }
-
- protected BitmapDescriptor getDriveBitmapDescriptor() {
- return BitmapDescriptorFactory.fromResource(R.drawable.amap_car);
- }
-
- protected void addStartAndEndMarker() {
- startMarker = mAMap.addMarker((new MarkerOptions())
- .position(startPoint).icon(getStartBitmapDescriptor())
- .title("\u8D77\u70B9"));
- // startMarker.showInfoWindow();
-
- endMarker = mAMap.addMarker((new MarkerOptions()).position(endPoint)
- .icon(getEndBitmapDescriptor()).title("\u7EC8\u70B9"));
- // mAMap.moveCamera(CameraUpdateFactory.newLatLngZoom(startPoint,
- // getShowRouteZoom()));
- }
-
- /**
- * 移动镜头到当前的视角。
- *
- * @since V2.1.0
- */
- public void zoomToSpan() {
- if (startPoint != null) {
- if (mAMap == null)
- return;
- try {
- LatLngBounds bounds = getLatLngBounds();
- mAMap.animateCamera(CameraUpdateFactory
- .newLatLngBounds(bounds, 50));
- } catch (Throwable e) {
- e.printStackTrace();
- }
- }
- }
-
- protected LatLngBounds getLatLngBounds() {
- LatLngBounds.Builder b = LatLngBounds.builder();
- b.include(new LatLng(startPoint.latitude, startPoint.longitude));
- b.include(new LatLng(endPoint.latitude, endPoint.longitude));
- for (Polyline polyline : allPolyLines) {
- for (LatLng point : polyline.getPoints()) {
- b.include(point);
- }
- }
- return b.build();
- }
-
- /**
- * 路段节点图标控制显示接口。
- *
- * @param visible true为显示节点图标,false为不显示。
- * @since V2.3.1
- */
- public void setNodeIconVisibility(boolean visible) {
- try {
- nodeIconVisible = visible;
- if (this.stationMarkers != null && this.stationMarkers.size() > 0) {
- for (int i = 0; i < this.stationMarkers.size(); i++) {
- this.stationMarkers.get(i).setVisible(visible);
- }
- }
- } catch (Throwable e) {
- e.printStackTrace();
- }
- }
-
- protected void addStationMarker(MarkerOptions options) {
- if (options == null) {
- return;
- }
- Marker marker = mAMap.addMarker(options);
- if (marker != null) {
- stationMarkers.add(marker);
- }
-
- }
-
- protected void addPolyLine(PolylineOptions options) {
- if (options == null) {
- return;
- }
- Polyline polyline = mAMap.addPolyline(options);
- if (polyline != null) {
- allPolyLines.add(polyline);
- }
- }
-
- protected float getRouteWidth() {
- return 18f;
- }
-
- protected int getWalkColor() {
- return Color.parseColor("#6db74d");
- }
-
- /**
- * 自定义路线颜色。
- * return 自定义路线颜色。
- *
- * @since V2.2.1
- */
- protected int getBusColor() {
- return Color.parseColor("#537edc");
- }
-
- protected int getDriveColor() {
- return Color.parseColor("#537edc");
- }
-
- // protected int getShowRouteZoom() {
- // return 15;
- // }
-}
diff --git a/modules/mogo-module-tanlu/src/main/java/com/mogo/module/tanlu/model/End.java b/modules/mogo-module-tanlu/src/main/java/com/mogo/module/tanlu/model/End.java
new file mode 100644
index 0000000000..4e937f983a
--- /dev/null
+++ b/modules/mogo-module-tanlu/src/main/java/com/mogo/module/tanlu/model/End.java
@@ -0,0 +1,16 @@
+package com.mogo.module.tanlu.model;
+
+/**
+ * @author lixiaopeng
+ * @description
+ * @since 2020-01-09
+ */
+public class End {
+ public Double lat;
+ public Double lon;
+
+ public End(Double lat, Double lon) {
+ this.lat = lat;
+ this.lon = lon;
+ }
+}
diff --git a/modules/mogo-module-tanlu/src/main/java/com/mogo/module/tanlu/model/InformationAndLiveCarResult.java b/modules/mogo-module-tanlu/src/main/java/com/mogo/module/tanlu/model/InformationAndLiveCarResult.java
new file mode 100644
index 0000000000..d40d7ec8e9
--- /dev/null
+++ b/modules/mogo-module-tanlu/src/main/java/com/mogo/module/tanlu/model/InformationAndLiveCarResult.java
@@ -0,0 +1,38 @@
+package com.mogo.module.tanlu.model;
+
+import com.mogo.commons.data.BaseData;
+
+/**
+ * @author lixiaopeng
+ * @description
+ * @since 2020-01-09
+ */
+public class InformationAndLiveCarResult extends BaseData {
+ private Result onTheWayData;
+ private Result infoMationResult;
+ private Sns snResult;
+
+ public Result getOnTheWayData() {
+ return onTheWayData;
+ }
+
+ public void setOnTheWayData(Result onTheWayData) {
+ this.onTheWayData = onTheWayData;
+ }
+
+ public Result getInfoMationResult() {
+ return infoMationResult;
+ }
+
+ public void setInfoMationResult(Result infoMationResult) {
+ this.infoMationResult = infoMationResult;
+ }
+
+ public Sns getSnResult() {
+ return snResult;
+ }
+
+ public void setSnResult(Sns snResult) {
+ this.snResult = snResult;
+ }
+}
diff --git a/modules/mogo-module-tanlu/src/main/java/com/mogo/module/tanlu/model/InformationAndLiveCarResult.kt b/modules/mogo-module-tanlu/src/main/java/com/mogo/module/tanlu/model/InformationAndLiveCarResult.kt
deleted file mode 100644
index 24bc41b302..0000000000
--- a/modules/mogo-module-tanlu/src/main/java/com/mogo/module/tanlu/model/InformationAndLiveCarResult.kt
+++ /dev/null
@@ -1,18 +0,0 @@
-package com.mogo.module.tanlu.model
-
-/**
- * @author congtaowang
- * @since 2019-11-20
- *
- * 根据范围请求情报+在线车机结果
- */
-data class InformationAndLiveCarResult(
- var onTheWayData: Result,
- var infoMationResult: Result,
- var snResult: Sns
-) {
- fun getInformation(): Result = if (onTheWayData == null
- || onTheWayData.informations == null
- || onTheWayData.informations.isEmpty()
- ) infoMationResult else onTheWayData
-}
\ No newline at end of file
diff --git a/modules/mogo-module-tanlu/src/main/java/com/mogo/module/tanlu/model/LocationCarsWithRadius.kt b/modules/mogo-module-tanlu/src/main/java/com/mogo/module/tanlu/model/LocationCarsWithRadius.kt
new file mode 100644
index 0000000000..f853fe51bb
--- /dev/null
+++ b/modules/mogo-module-tanlu/src/main/java/com/mogo/module/tanlu/model/LocationCarsWithRadius.kt
@@ -0,0 +1,21 @@
+package com.mogo.module.tanlu.model
+
+class LocationCarsWithRadius {
+ var coordinates: List
+ var radius: Int
+ var type: String
+ var keyWord: String? = null
+
+ constructor(coordinates: List, radius: Int, type: String, keyWord: String) {
+ this.coordinates = coordinates
+ this.radius = radius
+ this.type = type
+ this.keyWord = keyWord
+ }
+
+ constructor(coordinates: List, radius: Int, type: String) {
+ this.coordinates = coordinates
+ this.radius = radius
+ this.type = type
+ }
+}
\ No newline at end of file
diff --git a/modules/mogo-module-tanlu/src/main/java/com/mogo/module/tanlu/model/NaviLatLng.java b/modules/mogo-module-tanlu/src/main/java/com/mogo/module/tanlu/model/NaviLatLng.java
new file mode 100644
index 0000000000..a24ea22360
--- /dev/null
+++ b/modules/mogo-module-tanlu/src/main/java/com/mogo/module/tanlu/model/NaviLatLng.java
@@ -0,0 +1,17 @@
+package com.mogo.module.tanlu.model;
+
+/**
+ * @author lixiaopeng
+ * @description
+ * @since 2020-01-09
+ */
+public class NaviLatLng {
+ public Start start;
+ public End end;
+
+ NaviLatLng(Start start, End end) {
+ this.start = start;
+ this.end = end;
+ }
+
+}
diff --git a/modules/mogo-module-tanlu/src/main/java/com/mogo/module/tanlu/model/NaviLatLngInfo.java b/modules/mogo-module-tanlu/src/main/java/com/mogo/module/tanlu/model/NaviLatLngInfo.java
new file mode 100644
index 0000000000..fc090e7876
--- /dev/null
+++ b/modules/mogo-module-tanlu/src/main/java/com/mogo/module/tanlu/model/NaviLatLngInfo.java
@@ -0,0 +1,55 @@
+package com.mogo.module.tanlu.model;
+
+import java.io.Serializable;
+
+/**
+ * @author lixiaopeng
+ * @description
+ * @since 2020-01-09
+ */
+public class NaviLatLngInfo implements Serializable {
+ public String FromPoiLatitude = "";
+ public String FromPoiLongitude = "";
+ public String ToPoiLatitude = "";
+ public String ToPoiLongitude= "";
+
+// public Start fromStart() {
+// return Start(Double.parseDouble(FromPoiLatitude), Double.parseDouble(FromPoiLongitude));
+// }
+//
+// public End toEnd() {
+// return End(ToPoiLatitude.toDouble(), ToPoiLongitude.toDouble());
+// }
+
+ public String getFromPoiLatitude() {
+ return FromPoiLatitude;
+ }
+
+ public void setFromPoiLatitude(String fromPoiLatitude) {
+ FromPoiLatitude = fromPoiLatitude;
+ }
+
+ public String getFromPoiLongitude() {
+ return FromPoiLongitude;
+ }
+
+ public void setFromPoiLongitude(String fromPoiLongitude) {
+ FromPoiLongitude = fromPoiLongitude;
+ }
+
+ public String getToPoiLatitude() {
+ return ToPoiLatitude;
+ }
+
+ public void setToPoiLatitude(String toPoiLatitude) {
+ ToPoiLatitude = toPoiLatitude;
+ }
+
+ public String getToPoiLongitude() {
+ return ToPoiLongitude;
+ }
+
+ public void setToPoiLongitude(String toPoiLongitude) {
+ ToPoiLongitude = toPoiLongitude;
+ }
+}
diff --git a/modules/mogo-module-tanlu/src/main/java/com/mogo/module/tanlu/model/NaviLatLngInfo.kt b/modules/mogo-module-tanlu/src/main/java/com/mogo/module/tanlu/model/NaviLatLngInfo.kt
new file mode 100644
index 0000000000..b4d7c77b88
--- /dev/null
+++ b/modules/mogo-module-tanlu/src/main/java/com/mogo/module/tanlu/model/NaviLatLngInfo.kt
@@ -0,0 +1,19 @@
+package com.mogo.module.tanlu.model
+
+import java.io.Serializable
+
+fun NaviLatLngInfo.fromStart(): Start {
+ return Start(FromPoiLatitude.toDouble(), FromPoiLongitude.toDouble())
+}
+
+fun NaviLatLngInfo.toEnd(): End {
+ return End(ToPoiLatitude.toDouble(), ToPoiLongitude.toDouble())
+}
+
+class NaviLatLngInfo1 : Serializable {
+ var FromPoiLatitude: String = ""
+ var FromPoiLongitude: String = ""
+ var ToPoiLatitude: String = ""
+ var ToPoiLongitude: String = ""
+
+}
\ No newline at end of file
diff --git a/modules/mogo-module-tanlu/src/main/java/com/mogo/module/tanlu/model/SearchOnlineInfo.kt b/modules/mogo-module-tanlu/src/main/java/com/mogo/module/tanlu/model/SearchOnlineInfo.kt
new file mode 100644
index 0000000000..bd80487735
--- /dev/null
+++ b/modules/mogo-module-tanlu/src/main/java/com/mogo/module/tanlu/model/SearchOnlineInfo.kt
@@ -0,0 +1,10 @@
+package com.mogo.module.tanlu.model
+
+data class SearchOnlineInfo(
+ val address: String,
+ val cityId: String,
+ val size: Int,
+// val radius: Int,
+ val center: Center,
+ val adcode: String
+)
diff --git a/modules/mogo-module-tanlu/src/main/java/com/mogo/module/tanlu/model/Start.java b/modules/mogo-module-tanlu/src/main/java/com/mogo/module/tanlu/model/Start.java
new file mode 100644
index 0000000000..1e43cb6883
--- /dev/null
+++ b/modules/mogo-module-tanlu/src/main/java/com/mogo/module/tanlu/model/Start.java
@@ -0,0 +1,16 @@
+package com.mogo.module.tanlu.model;
+
+/**
+ * @author lixiaopeng
+ * @description
+ * @since 2020-01-09
+ */
+public class Start {
+ public Double lat;
+ public Double lon;
+
+ public Start(Double lat, Double lon) {
+ this.lat = lat;
+ this.lon = lon;
+ }
+}
diff --git a/modules/mogo-module-tanlu/src/main/java/com/mogo/module/tanlu/model/TanluModelData.java b/modules/mogo-module-tanlu/src/main/java/com/mogo/module/tanlu/model/TanluModelData.java
new file mode 100644
index 0000000000..132f12e0da
--- /dev/null
+++ b/modules/mogo-module-tanlu/src/main/java/com/mogo/module/tanlu/model/TanluModelData.java
@@ -0,0 +1,175 @@
+package com.mogo.module.tanlu.model;
+
+import android.content.Context;
+import android.util.Log;
+
+import com.alibaba.android.arouter.launcher.ARouter;
+import com.google.gson.Gson;
+import com.mogo.commons.debug.DebugConfig;
+import com.mogo.commons.network.ParamsProvider;
+import com.mogo.commons.network.SubscribeImpl;
+import com.mogo.module.tanlu.callback.AlongTheWayCallback;
+import com.mogo.module.tanlu.callback.RoadLineCallback;
+import com.mogo.module.tanlu.callback.VoiceSearchCallback;
+import com.mogo.module.tanlu.constant.HttpConst;
+import com.mogo.module.tanlu.constant.TanluConstants;
+import com.mogo.module.tanlu.net.TanluApiService;
+import com.mogo.service.MogoServicePaths;
+import com.mogo.service.network.IMogoNetwork;
+import com.mogo.utils.logger.Logger;
+import com.mogo.utils.network.RequestOptions;
+import com.mogo.utils.storage.SharedPrefsMgr;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+import io.reactivex.android.schedulers.AndroidSchedulers;
+import io.reactivex.schedulers.Schedulers;
+
+import static com.mogo.commons.network.Utils.getSn;
+
+/**
+ * @author lixiaopeng
+ * @description 探路接口数据处理
+ * @since 2020-01-09
+ */
+public class TanluModelData {
+
+ private final Context mContext;
+ private TanluApiService mTanluApiService;
+ private static final String TAG = "TanluModelData";
+
+ public TanluModelData(Context context) {
+ this.mContext = context;
+ IMogoNetwork network = (IMogoNetwork) ARouter.getInstance().build(MogoServicePaths.PATH_SERVICES_NETWORK).navigation(context);
+ mTanluApiService = network.create(TanluApiService.class, DebugConfig.getNetMode() == 3 ? HttpConst.HOST_PRODUCT : HttpConst.HOST_TEST);
+ }
+
+ /**
+ * 声音控制道理数据
+ */
+ public void getVoiceControlRoadData(String keywords, String cityId, Double lon, Double lat,
+ String adCode, final VoiceSearchCallback callback) {
+ Gson gson = new Gson();
+ SearchOnlineInfo searchOnlineInfo = new SearchOnlineInfo(keywords, cityId, 50, new Center(lat, lon), adCode);
+ String searchInformationStr = gson.toJson(searchOnlineInfo);
+
+ List list = new ArrayList<>();
+ list.add(lon);
+ list.add(lat);
+ LocationCarsWithRadius locCarsWithRadius = new LocationCarsWithRadius(list, 20000, "circle");
+ String locCarsWithRadiusStr = gson.toJson(locCarsWithRadius);
+
+ final Map params = new ParamsProvider.Builder(mContext)
+ .append("sn", getSn())
+ .append("data", searchInformationStr)
+ .append("getSnData", locCarsWithRadiusStr)
+ .build();
+ mTanluApiService.searchOnLineInformation(params)
+ .subscribeOn(Schedulers.io())
+ .observeOn(AndroidSchedulers.mainThread())
+ .subscribe(new SubscribeImpl(RequestOptions.create(mContext)) {
+ @Override
+ public void onSuccess(VoiceSearchResult o) {
+ super.onSuccess(o);
+ callback.onSuccess(o);
+ Logger.d(TAG, "getVoiceControlRoadData onSuccess ------>");
+ }
+
+ @Override
+ public void onError(String message, int code) {
+ super.onError(message, code);
+ callback.onFail(message, code);
+ Logger.e(TAG, "getVoiceControlRoadData onError message= " + message + ">>code =" + code);
+ }
+ });
+ }
+
+
+ /**
+ * 通勤族 事件,监听消息自己请求路线数据
+ */
+ public void getRoadLineData(final RoadLineCallback callback) {
+ if (mTanluApiService != null) {
+ final Map params = new ParamsProvider.Builder(mContext)
+ .append("sn", getSn())
+ .build();
+ mTanluApiService.getRoadLineInfo(params)
+ .subscribeOn(Schedulers.io())
+ .observeOn(AndroidSchedulers.mainThread())
+ .subscribe(new SubscribeImpl(RequestOptions.create(mContext)) {
+ @Override
+ public void onSuccess(PathLineResult o) {
+ super.onSuccess(o);
+ callback.onSuccess(o);
+ Logger.d(TAG, "getRoadLineData onSuccess ------>");
+ }
+
+ @Override
+ public void onError(String message, int code) {
+ super.onError(message, code);
+ callback.onFail(message, code);
+ Logger.e(TAG, "getRoadLineData onError message= " + message + ">>code =" + code);
+ }
+ });
+ }
+ }
+
+
+ /**
+ * 导航路线数据事件
+ */
+ public void getNavigationLineData(Double lon, Double lat, final AlongTheWayCallback callback) {
+ Gson gson = new Gson();
+// NaviLatLng coordinates = new NaviLatLng(getNaviInfo(lon, lat).fromStart(), getNaviInfo(lon, lat).toEnd());
+
+ List list = new ArrayList<>();
+ list.add(lon);
+ list.add(lat);
+ LocationCarsWithRadius locCarsWithRadius = new LocationCarsWithRadius(list, 20000, "circle");
+ String locCarsWithRadiusStr = gson.toJson(locCarsWithRadius);
+
+ final Map params = new ParamsProvider.Builder(mContext)
+// .append("onTheWayData", gson.toJson(coordinates))
+ .append("getSnData", locCarsWithRadiusStr)
+ .build();
+
+ mTanluApiService.requestInformationAlongTheWay(getSn(), params)
+ .subscribeOn(Schedulers.io())
+ .observeOn(AndroidSchedulers.mainThread())
+ .subscribe(new SubscribeImpl(RequestOptions.create(mContext)) {
+ @Override
+ public void onSuccess(InformationAndLiveCarResult data) {
+ super.onSuccess(data);
+ callback.onSuccess(data);
+ Logger.d(TAG, "getNavigationLineData onSuccess ------>");
+ }
+
+ @Override
+ public void onError(String message, int code) {
+ super.onError(message, code);
+ callback.onFail(message, code);
+ Logger.e(TAG, "getNavigationLineData onError message= " + message + ">>code =" + code);
+ }
+ });
+ }
+
+
+ //获取Location,如果没有location数据为空,则使用首次或者上次定位点,并且更新SP,需要抽取公共方法
+ public NaviLatLngInfo getNaviInfo(Double lon, Double lat) {
+ String naviInfo = SharedPrefsMgr.getInstance(mContext).getString(TanluConstants.NAVI_INFO);
+ Log.d(TAG, " getNaviInfo naviInfo =" + naviInfo);
+ NaviLatLngInfo naviLatLngInfo = new Gson().fromJson(naviInfo, NaviLatLngInfo.class);
+ Log.d(TAG, "getLocNaviInfo lat = $lat -----> lon = $lon");
+ if (lon == 0.0 || lat == 0.0) {
+ return naviLatLngInfo;
+ } else {
+ naviLatLngInfo.setFromPoiLatitude(lat + "");
+ naviLatLngInfo.setFromPoiLongitude(lon + "");
+ SharedPrefsMgr.getInstance(mContext).putString(TanluConstants.NAVI_INFO, new Gson().toJson(naviLatLngInfo));
+ return naviLatLngInfo;
+ }
+ }
+
+}
diff --git a/modules/mogo-module-tanlu/src/main/java/com/mogo/module/tanlu/net/TanluApiService.java b/modules/mogo-module-tanlu/src/main/java/com/mogo/module/tanlu/net/TanluApiService.java
index f2157fa456..d2400b7112 100644
--- a/modules/mogo-module-tanlu/src/main/java/com/mogo/module/tanlu/net/TanluApiService.java
+++ b/modules/mogo-module-tanlu/src/main/java/com/mogo/module/tanlu/net/TanluApiService.java
@@ -22,26 +22,24 @@ public interface TanluApiService {
/**
* 探路沿途数据
*
- * @return
*/
@FormUrlEncoded
@POST("deva/car/path/no/getOnTheWayDataAndSn/v1")
- Observable requestInformationAlongTheWay(@Query("sn") String sn, @FieldMap Map parameters);
+ Observable requestInformationAlongTheWay(@Query("sn") String sn, @FieldMap Map parameters);
/**
* 获取上班族路线的坐标集
*/
@FormUrlEncoded
@POST("yycp-travel-condition/travelDetail/info/no/commuter/v1")
- Observable getRoadLineInfo(@FieldMap Map infoBody);
-
+ Observable getRoadLineInfo(@FieldMap Map infoBody);
/**
* 基于地理信息词缀的空间情报检索
*/
@FormUrlEncoded
@POST("deva/car/search/no/searchInforationByAddress/v1")
- Observable searchOnLineInformation(@FieldMap Map infoBody);
+ Observable searchOnLineInformation(@FieldMap Map infoBody);
}
diff --git a/modules/mogo-module-tanlu/src/main/java/com/mogo/module/tanlu/util/ActivityStatusUtil.java b/modules/mogo-module-tanlu/src/main/java/com/mogo/module/tanlu/util/ActivityStatusUtil.java
new file mode 100644
index 0000000000..fa9bb7614b
--- /dev/null
+++ b/modules/mogo-module-tanlu/src/main/java/com/mogo/module/tanlu/util/ActivityStatusUtil.java
@@ -0,0 +1,46 @@
+package com.mogo.module.tanlu.util;
+
+import android.app.ActivityManager;
+import android.content.ComponentName;
+import android.content.Context;
+import android.text.TextUtils;
+
+import java.util.List;
+
+import static android.content.Context.ACTIVITY_SERVICE;
+
+/**
+ * @author lixiaopeng
+ * @description
+ * @since 2019-09-26
+ */
+public class ActivityStatusUtil {
+ /**
+ * 判断某个activity是否在前台显示
+ */
+ public static boolean isForeground(Context activity) {
+ return isForeground(activity, "com.zhidao.roadcondition.main_module.MainActivity");
+ }
+
+ /**
+ * 判断某个界面是否在前台,返回true,为显示,否则不是
+ */
+ public static boolean isForeground(Context context, String className) {
+ if (context == null || TextUtils.isEmpty(className)) {
+ return false;
+ }
+ ActivityManager am = (ActivityManager) context.getSystemService(ACTIVITY_SERVICE);
+ List list = am.getRunningTasks(1);
+ if (list != null && list.size() > 0) {
+ ComponentName cpn = list.get(0).topActivity;
+ if (className.equals(cpn.getClassName())) {
+ return true;
+ } else {
+
+ }
+ }
+
+ return false;
+ }
+
+}
diff --git a/modules/mogo-module-tanlu/src/main/java/com/mogo/module/tanlu/util/StringUitl.kt b/modules/mogo-module-tanlu/src/main/java/com/mogo/module/tanlu/util/StringUitl.kt
index bc4ceace53..bf287acdb0 100644
--- a/modules/mogo-module-tanlu/src/main/java/com/mogo/module/tanlu/util/StringUitl.kt
+++ b/modules/mogo-module-tanlu/src/main/java/com/mogo/module/tanlu/util/StringUitl.kt
@@ -1,6 +1,7 @@
package com.mogo.module.tanlu.util
import android.text.format.DateFormat
+import com.google.gson.Gson
import java.text.DecimalFormat
const val format = "yy/MM/dd kk:mm:ss"
@@ -29,3 +30,7 @@ fun handleDistances(distance: Int): String {
}
}
+
+
+
+
diff --git a/modules/mogo-module-tanlu/src/main/java/com/mogo/module/tanlu/util/Utils.java b/modules/mogo-module-tanlu/src/main/java/com/mogo/module/tanlu/util/Utils.java
index afb74a6fac..c88085e0f5 100644
--- a/modules/mogo-module-tanlu/src/main/java/com/mogo/module/tanlu/util/Utils.java
+++ b/modules/mogo-module-tanlu/src/main/java/com/mogo/module/tanlu/util/Utils.java
@@ -20,4 +20,12 @@ public class Utils {
}
}
+ //保留整数,四舍五入
+ public static int getIntervalValue(int listSize){
+// var floatSize = listSize.toFloat();
+ int transformSize = listSize / 15;
+ DecimalFormat df = new DecimalFormat("0");
+ return Integer.parseInt((df.format(transformSize)));
+ }
+
}
\ No newline at end of file
diff --git a/modules/mogo-module-tanlu/src/main/java/com/mogo/module/tanlu/voice/VoiceController.kt b/modules/mogo-module-tanlu/src/main/java/com/mogo/module/tanlu/voice/VoiceController.kt
new file mode 100644
index 0000000000..5b623fb41f
--- /dev/null
+++ b/modules/mogo-module-tanlu/src/main/java/com/mogo/module/tanlu/voice/VoiceController.kt
@@ -0,0 +1,57 @@
+package com.mogo.module.tanlu.voice
+
+import com.zhidao.auto.platform.voice.VoiceClient
+
+/**
+ * @description 声音控制类
+ *
+ * @author lixiaopeng
+ * @since 2019-11-01
+ */
+object VoiceController {
+ private lateinit var voiceClient: VoiceClient
+
+// fun initVoice() {
+// voiceClient = VoiceClient.getInstance(BaseApplication.getAppContext())
+// }
+
+ /**
+ * 设置语音命令回调接口
+ * @param callBack
+ */
+ fun setCallBack(callBack: VoiceClient.VoiceCmdCallBack) {
+ voiceClient.setCallBack(callBack)
+ }
+
+ /**
+ * @param speakText 语音播报内容
+ */
+ fun speakVoice(speakText: String) {
+ voiceClient.speakDefault(speakText)
+ }
+
+ /**
+ * 注册免唤醒命令
+ * @param customType 命令
+ * @param customWakeupCmd 命令对应的唤醒词集合
+ */
+ fun registerCustomWakeupCmd(customType: String, customWakeupCmd: Array) {
+ voiceClient.registerCustomWakeupCmd(customType, customWakeupCmd)
+ }
+
+ /**
+ * 取消免唤醒命令
+ * @param customType 命令
+ */
+ fun unRegisterCustomWakeupCmd(customType: String) {
+ voiceClient.unRegisterCustomWakeupCmd(customType)
+ }
+
+ /**
+ * 释放资源(界面销毁的时候调用)
+ */
+ fun release() {
+ voiceClient.release()
+ }
+
+}
\ No newline at end of file
diff --git a/modules/mogo-module-tanlu/src/main/res/drawable-xhdpi/main_video_play_btn_normal.png b/modules/mogo-module-tanlu/src/main/res/drawable-xhdpi/main_video_play_btn_normal.png
new file mode 100644
index 0000000000..7db2e805ee
Binary files /dev/null and b/modules/mogo-module-tanlu/src/main/res/drawable-xhdpi/main_video_play_btn_normal.png differ
diff --git a/modules/mogo-module-tanlu/src/main/res/drawable-xhdpi/media_next.png b/modules/mogo-module-tanlu/src/main/res/drawable-xhdpi/media_next.png
new file mode 100644
index 0000000000..9dd91f20d1
Binary files /dev/null and b/modules/mogo-module-tanlu/src/main/res/drawable-xhdpi/media_next.png differ
diff --git a/modules/mogo-module-tanlu/src/main/res/drawable-xhdpi/media_previous.png b/modules/mogo-module-tanlu/src/main/res/drawable-xhdpi/media_previous.png
new file mode 100644
index 0000000000..2b3c15b3d4
Binary files /dev/null and b/modules/mogo-module-tanlu/src/main/res/drawable-xhdpi/media_previous.png differ
diff --git a/modules/mogo-module-tanlu/src/main/res/layout/tanlu_item_main_media_recycler.xml b/modules/mogo-module-tanlu/src/main/res/layout/tanlu_item_main_media_recycler.xml
index f1bfc32a7c..19eac6b2f2 100644
--- a/modules/mogo-module-tanlu/src/main/res/layout/tanlu_item_main_media_recycler.xml
+++ b/modules/mogo-module-tanlu/src/main/res/layout/tanlu_item_main_media_recycler.xml
@@ -86,6 +86,8 @@
android:layout_height="wrap_content"
android:layout_below="@+id/media_layout"
android:layout_marginTop="10dp"
+ android:layout_marginLeft="16dp"
+ android:layout_marginRight="16dp"
android:layout_marginBottom="21dp">
@@ -107,11 +110,12 @@
android:layout_height="45dp"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
- android:layout_marginRight="16dp"
+ android:layout_centerHorizontal="true"
+ android:paddingRight="40dp"
+ android:paddingLeft="35dp"
android:background="@drawable/shape_bg_222533"
- android:drawableRight="@drawable/default_image"
- android:gravity="center_vertical|center_horizontal"
- android:paddingRight="10dp"
+ android:drawableRight="@drawable/media_next"
+ android:gravity="center_vertical"
android:text="@string/tanlu_next"
android:textColor="@color/color_545362"
android:textSize="13dp" />