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

This commit is contained in:
wangcongtao
2020-01-15 15:20:23 +08:00
20 changed files with 413 additions and 151 deletions

View File

@@ -6,6 +6,7 @@ import com.mogo.map.MogoLatLng;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
/**
* @author congtaowang
@@ -52,6 +53,12 @@ public interface IMogoMarkerManager {
* @return
*/
List< IMogoMarker > getMarkers( String tag );
/**
* 获取所有类型的marker。
*
* @return
*/
Map< String, List< IMogoMarker > > getAllMarkers( );
/**
* 仅保留指定类型的tag

View File

@@ -77,6 +77,11 @@ public class MogoMarkersHandler implements IMogoMarkerClickListener, IMogoMarker
}
public synchronized Map< String, List< IMogoMarker > > getAllMarkers() {
return mServicesMarkers;
}
public synchronized void add( String tag, IMogoMarker marker ) {
if ( marker == null ) {
return;

View File

@@ -11,6 +11,7 @@ import com.mogo.map.marker.MogoMarkersHandler;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
/**
* @author congtaowang
@@ -78,6 +79,11 @@ public class MogoMarkerManager implements IMogoMarkerManager {
return MogoMarkersHandler.getInstance().getMarkers( tag );
}
@Override
public Map< String, List< IMogoMarker > > getAllMarkers() {
return MogoMarkersHandler.getInstance().getAllMarkers();
}
@Override
public void removeMarkersExcept( String tag ) {
MogoMarkersHandler.getInstance().deleteAllExcept( tag );

View File

@@ -1,13 +1,19 @@
package com.mogo.module.common.entity;
/**
* 新鲜事儿Marker数据
*/
public class MarkerNoveltyInfo {
private ContentData contentData;
private MarkerLocation location;
private String poiType;
private String type;
private MarkerLocation location;
private MarkerUserInfo userInfo;
/**
* @see MarkerPoiTypeEnum
*/
private String poiType;
private ContentData contentData;
public ContentData getContentData() {
return contentData;
@@ -50,7 +56,6 @@ public class MarkerNoveltyInfo {
}
public class ContentData {
private String content;
private String iconUrl;
private String imgUrl;

View File

@@ -0,0 +1,21 @@
package com.mogo.module.common.entity;
/**
* author : donghongyu
* e-mail : 1358506549@qq.com
* date : 2020-01-1514:47
* desc : 车机启动状态
* version: 1.0
*/
public interface MarkerPoiTypeEnum {
//加油站
public String GAS_STATION = "10001";
//交通检查
public String TRAFFIC_CHECK = "10002";
//封路
public String ROAD_CLOSED = "10003";
//商场打折
public String SHOP_DISCOUNT = "10004";
//4S店
public String FOURS_SHOP = "10005";
}

View File

@@ -92,9 +92,7 @@ public class MarkerShowEntity {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
MarkerShowEntity that = (MarkerShowEntity) o;
return isChecked == that.isChecked &&
isHighlighted == that.isHighlighted &&
Objects.equals(iconUrl, that.iconUrl) &&
return Objects.equals(iconUrl, that.iconUrl) &&
Objects.equals(textContent, that.textContent) &&
Objects.equals(markerType, that.markerType) &&
Objects.equals(bindObj, that.bindObj) &&
@@ -103,7 +101,7 @@ public class MarkerShowEntity {
@Override
public int hashCode() {
return Objects.hash(isChecked, isHighlighted, iconUrl, textContent, markerType, bindObj, markerLocation);
return Objects.hash(iconUrl, textContent, markerType, bindObj, markerLocation);
}
@Override

View File

@@ -30,8 +30,8 @@ import com.mogo.service.map.IMogoMapService;
import com.mogo.service.statusmanager.IMogoStatusManager;
import com.mogo.utils.logger.Logger;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
/**
* author : donghongyu
@@ -155,7 +155,7 @@ public class MarkerServiceHandler {
lastMarkerShowEntity.setChecked(false);
lastMarkerShowEntity.setHighlighted(false);
drawMapMarkerItem(lastMarkerShowEntity);
drawMapMarker(lastMarkerShowEntity);
lastMarker.remove();
}
@@ -167,38 +167,38 @@ public class MarkerServiceHandler {
markerShowEntity.setChecked(true);
markerShowEntity.setHighlighted(true);
lastMarker = drawMapMarkerItem(markerShowEntity);
lastMarker = drawMapMarker(markerShowEntity);
if (lastMarker != null) {
lastMarker.setAlpha(1f);
}
marker.remove();
return false;
}
}
// 记录所有的Marker
private static List<MarkerShowEntity> markerShowEntities;
// 对指定类型高亮处理
public static void highlightedMarker(String typeTag) {
if (markerShowEntities != null) {
if (lastMarker != null) {
// 将上次选中 Marker 设置为未选中状态
MarkerShowEntity lastMarkerShowEntity = (MarkerShowEntity) lastMarker.getObject();
lastMarkerShowEntity.setChecked(false);
lastMarkerShowEntity.setHighlighted(false);
drawMapMarkerItem(lastMarkerShowEntity);
}
lastMarker = null;
getMarkerManager().removeMarkers();
try {
Map<String, List<IMogoMarker>> allMarker = getMarkerManager().getAllMarkers();
for (Map.Entry<String, List<IMogoMarker>> entry : allMarker.entrySet()) {
String keyStr = entry.getKey();
List<IMogoMarker> markerList = entry.getValue();
for (MarkerShowEntity markerShowEntity : markerShowEntities) {
if (markerShowEntity.getMarkerType().equals(typeTag)) {
markerShowEntity.setHighlighted(true);
if (keyStr.equals(typeTag)) {
for (IMogoMarker marker : markerList) {
marker.setAlpha(1f);
}
} else {
markerShowEntity.setHighlighted(false);
for (IMogoMarker marker : markerList) {
marker.setAlpha(0.7f);
}
}
drawMapMarkerItem(markerShowEntity);
}
} catch (Exception e) {
e.printStackTrace();
}
}
/**
@@ -207,11 +207,6 @@ public class MarkerServiceHandler {
public static void drawMapMarker(MarkerResponse response) {
lastMarker = null;
getMarkerManager().removeMarkers();
if (markerShowEntities == null) {
markerShowEntities = new ArrayList<>();
} else {
markerShowEntities.clear();
}
// 解析不同的Marker类型然后对应的进行绘制
if (response != null && response.getResult() != null) {
@@ -299,7 +294,7 @@ public class MarkerServiceHandler {
}
}
// getMapUIController().changeZoom(8);
getMapUIController().changeZoom(12);
}
/**
@@ -316,15 +311,11 @@ public class MarkerServiceHandler {
.latitude(markerShowEntity.getMarkerLocation().getLat())
.longitude(markerShowEntity.getMarkerLocation().getLon());
options.icon(markerView);
options.alpha(0.8f);
IMogoMarker marker = getMarkerManager().addMarker(markerShowEntity.getMarkerType(), options);
marker.setOnMarkerClickListener(mogoMarkerClickListener);
marker.setObject(markerShowEntity);
if (markerShowEntities != null) {
markerShowEntities.add(markerShowEntity);
}
marker.setAlpha(0.7f);
return marker;
} else {
Logger.e(TAG, "Location 必须进行初始化!!!!!");
@@ -335,37 +326,4 @@ public class MarkerServiceHandler {
return null;
}
/**
* 绘制Marker这里绘制的不会添加到队列中
*/
public static IMogoMarker drawMapMarkerItem(MarkerShowEntity markerShowEntity) {
Logger.e(TAG, "绘制Marker====drawMapMarkerItem" + markerShowEntity);
try {
if (markerShowEntity.getMarkerLocation() != null) {
View markerView = MapMarkerAdapter.getMarkerView(mContext, markerShowEntity);
MogoMarkerOptions options = new MogoMarkerOptions()
.owner(markerShowEntity.getMarkerType())
.latitude(markerShowEntity.getMarkerLocation().getLat())
.longitude(markerShowEntity.getMarkerLocation().getLon());
options.icon(markerView);
if (markerShowEntity.isHighlighted()) {
options.alpha(1f);
} else {
options.alpha(0.8f);
}
IMogoMarker marker = getMarkerManager().addMarker(markerShowEntity.getMarkerType(), options);
marker.setOnMarkerClickListener(mogoMarkerClickListener);
marker.setObject(markerShowEntity);
return marker;
} else {
Logger.e(TAG, "Location 必须进行初始化!!!!!");
}
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
}

View File

@@ -11,7 +11,9 @@ import android.widget.TextView;
import androidx.annotation.Nullable;
import androidx.constraintlayout.widget.ConstraintLayout;
import com.mogo.module.common.entity.MarkerNoveltyInfo;
import com.mogo.module.common.entity.MarkerOnlineCar;
import com.mogo.module.common.entity.MarkerPoiTypeEnum;
import com.mogo.module.common.entity.MarkerShareMusic;
import com.mogo.module.common.entity.MarkerShowEntity;
import com.mogo.module.service.R;
@@ -68,6 +70,9 @@ public class MapMarkerInfoView extends MapMarkerBaseView {
case ServiceConst.CARD_TYPE_USER_DATA:
ivUserHead.setVisibility(View.VISIBLE);
ivIcon.setVisibility(View.INVISIBLE);
loadImageWithMarker(markerShowEntity);
ivCar.setImageResource(R.drawable.icon_map_marker_car_blue);
ivCar.setRotation((float) markerShowEntity.getMarkerLocation().getAngle());
if (bindObj instanceof MarkerOnlineCar) {
if (((MarkerOnlineCar) bindObj).getUserInfo().getGenderValue() == 0) {
@@ -78,15 +83,13 @@ public class MapMarkerInfoView extends MapMarkerBaseView {
ivReverseTriangle.setImageResource(R.drawable.bg_shape_reverse_triangle_purple);
}
}
loadImageWithMarker(markerShowEntity);
ivCar.setImageResource(R.drawable.icon_map_marker_car_blue);
ivCar.setRotation((float) markerShowEntity.getMarkerLocation().getAngle());
break;
case ServiceConst.CARD_TYPE_ROAD_CONDITION:
ivUserHead.setVisibility(View.INVISIBLE);
ivIcon.setVisibility(View.VISIBLE);
ivUserHead.setImageResource(R.drawable.icon_map_marker_road_block_up);
ivIcon.setImageResource(R.drawable.icon_map_marker_road_block_up);
clMarkerContent.setBackgroundResource(R.drawable.bg_map_marker_blue_info);
ivReverseTriangle.setImageResource(R.drawable.bg_shape_reverse_triangle_blue);
ivCar.setImageResource(R.drawable.icon_map_marker_location_blue);
@@ -94,16 +97,47 @@ public class MapMarkerInfoView extends MapMarkerBaseView {
case ServiceConst.CARD_TYPE_NOVELTY:
ivUserHead.setVisibility(View.INVISIBLE);
ivIcon.setVisibility(View.VISIBLE);
ivIcon.setImageResource(R.drawable.icon_map_marker_road_check);
clMarkerContent.setBackgroundResource(R.drawable.bg_map_marker_green_info);
ivReverseTriangle.setImageResource(R.drawable.bg_shape_reverse_triangle_green);
ivCar.setImageResource(R.drawable.icon_map_marker_location_blue);
if (bindObj instanceof MarkerNoveltyInfo) {
switch (((MarkerNoveltyInfo) bindObj).getPoiType()) {
case MarkerPoiTypeEnum.GAS_STATION:
ivIcon.setImageResource(R.drawable.icon_map_marker_refuel);
clMarkerContent.setBackgroundResource(R.drawable.bg_map_marker_orange_info);
ivReverseTriangle.setImageResource(R.drawable.bg_shape_reverse_triangle_orange);
break;
case MarkerPoiTypeEnum.TRAFFIC_CHECK:
ivIcon.setImageResource(R.drawable.icon_map_marker_road_check);
clMarkerContent.setBackgroundResource(R.drawable.bg_map_marker_green_info);
ivReverseTriangle.setImageResource(R.drawable.bg_shape_reverse_triangle_green);
break;
case MarkerPoiTypeEnum.ROAD_CLOSED:
ivIcon.setImageResource(R.drawable.icon_map_marker_road_block_off);
clMarkerContent.setBackgroundResource(R.drawable.bg_map_marker_dark_blue_info);
ivReverseTriangle.setImageResource(R.drawable.bg_shape_reverse_triangle_dark_blue);
break;
case MarkerPoiTypeEnum.SHOP_DISCOUNT:
break;
case MarkerPoiTypeEnum.FOURS_SHOP:
break;
default:
ivIcon.setImageResource(R.drawable.icon_map_marker_road_check);
clMarkerContent.setBackgroundResource(R.drawable.bg_map_marker_green_info);
ivReverseTriangle.setImageResource(R.drawable.bg_shape_reverse_triangle_green);
break;
}
}
break;
case ServiceConst.CARD_TYPE_SHARE_MUSIC:
ivUserHead.setVisibility(View.INVISIBLE);
ivIcon.setVisibility(View.VISIBLE);
clMarkerContent.setBackgroundResource(R.drawable.bg_map_marker_purple_info);
ivReverseTriangle.setImageResource(R.drawable.bg_shape_reverse_triangle_purple);
ivCar.setImageResource(R.drawable.icon_map_marker_location_blue);
if (bindObj instanceof MarkerShareMusic) {
// 2 为书籍听书3 为新闻,1 为qq音乐,int
switch (((MarkerShareMusic) bindObj).getShareType()) {
@@ -119,13 +153,16 @@ public class MapMarkerInfoView extends MapMarkerBaseView {
}
}
clMarkerContent.setBackgroundResource(R.drawable.bg_map_marker_purple_info);
ivReverseTriangle.setImageResource(R.drawable.bg_shape_reverse_triangle_purple);
ivCar.setImageResource(R.drawable.icon_map_marker_location_blue);
break;
}
if (!TextUtils.isEmpty(markerShowEntity.getTextContent())) {
tvMarkerContent.setText(markerShowEntity.getTextContent());
String content;
if (markerShowEntity.getTextContent().length() > 8) {
content = markerShowEntity.getTextContent().substring(0, 7) + "...";
} else {
content = markerShowEntity.getTextContent();
}
tvMarkerContent.setText(content);
}
} catch (Exception e) {

View File

@@ -8,7 +8,9 @@ import android.widget.ImageView;
import androidx.annotation.Nullable;
import com.mogo.module.common.entity.MarkerNoveltyInfo;
import com.mogo.module.common.entity.MarkerOnlineCar;
import com.mogo.module.common.entity.MarkerPoiTypeEnum;
import com.mogo.module.common.entity.MarkerShareMusic;
import com.mogo.module.common.entity.MarkerShowEntity;
import com.mogo.module.service.R;
@@ -59,6 +61,9 @@ public class MapMarkerView extends MapMarkerBaseView {
case ServiceConst.CARD_TYPE_USER_DATA:
ivUserHead.setVisibility(View.VISIBLE);
ivIcon.setVisibility(View.INVISIBLE);
loadImageWithMarker(markerShowEntity);
ivCar.setImageResource(R.drawable.icon_map_marker_car_blue);
ivCar.setRotation((float) markerShowEntity.getMarkerLocation().getAngle());
if (bindObj instanceof MarkerOnlineCar) {
if (((MarkerOnlineCar) bindObj).getUserInfo().getGenderValue() == 0) {
@@ -67,9 +72,6 @@ public class MapMarkerView extends MapMarkerBaseView {
ivBg.setImageResource(R.drawable.bg_map_marker_purple);
}
}
loadImageWithMarker(markerShowEntity);
ivCar.setImageResource(R.drawable.icon_map_marker_car_blue);
ivCar.setRotation((float) markerShowEntity.getMarkerLocation().getAngle());
break;
case ServiceConst.CARD_TYPE_ROAD_CONDITION:
ivUserHead.setVisibility(View.INVISIBLE);
@@ -83,13 +85,41 @@ public class MapMarkerView extends MapMarkerBaseView {
ivUserHead.setVisibility(View.INVISIBLE);
ivIcon.setVisibility(View.VISIBLE);
ivIcon.setImageResource(R.drawable.icon_map_marker_road_check);
ivBg.setImageResource(R.drawable.bg_map_marker_green);
ivCar.setImageResource(R.drawable.icon_map_marker_location_blue);
if (bindObj instanceof MarkerNoveltyInfo) {
switch (((MarkerNoveltyInfo) bindObj).getPoiType()) {
case MarkerPoiTypeEnum.GAS_STATION:
ivIcon.setImageResource(R.drawable.icon_map_marker_refuel);
ivBg.setImageResource(R.drawable.bg_map_marker_oragne);
break;
case MarkerPoiTypeEnum.TRAFFIC_CHECK:
ivIcon.setImageResource(R.drawable.icon_map_marker_road_check);
ivBg.setImageResource(R.drawable.bg_map_marker_green);
break;
case MarkerPoiTypeEnum.ROAD_CLOSED:
ivIcon.setImageResource(R.drawable.icon_map_marker_road_block_off);
ivBg.setImageResource(R.drawable.bg_map_marker_dark_blue);
break;
case MarkerPoiTypeEnum.SHOP_DISCOUNT:
break;
case MarkerPoiTypeEnum.FOURS_SHOP:
break;
default:
ivIcon.setImageResource(R.drawable.icon_map_marker_road_check);
ivBg.setImageResource(R.drawable.bg_map_marker_green);
break;
}
}
break;
case ServiceConst.CARD_TYPE_SHARE_MUSIC:
ivUserHead.setVisibility(View.INVISIBLE);
ivIcon.setVisibility(View.VISIBLE);
ivBg.setImageResource(R.drawable.bg_map_marker_purple);
ivCar.setImageResource(R.drawable.icon_map_marker_location_blue);
if (bindObj instanceof MarkerShareMusic) {
// 2 为书籍听书3 为新闻,1 为qq音乐,int
@@ -105,9 +135,6 @@ public class MapMarkerView extends MapMarkerBaseView {
break;
}
}
ivBg.setImageResource(R.drawable.bg_map_marker_purple);
ivCar.setImageResource(R.drawable.icon_map_marker_location_blue);
break;
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

View File

@@ -47,11 +47,11 @@
android:layout_height="@dimen/dp_45"
android:layout_gravity="center"
android:layout_marginTop="@dimen/dp_14"
android:src="@drawable/icon_map_marker_road_block_up"
android:visibility="gone"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:src="@drawable/icon_map_marker_road_block_up"
tools:visibility="visible" />
</merge >

View File

@@ -44,11 +44,11 @@
android:layout_height="@dimen/dp_45"
android:layout_gravity="center"
android:layout_marginLeft="@dimen/dp_14"
android:src="@drawable/icon_map_marker_road_block_up"
android:visibility="invisible"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:src="@drawable/icon_map_marker_road_block_up"
tools:visibility="visible" />
<TextView
@@ -58,7 +58,6 @@
android:layout_marginLeft="@dimen/dp_10"
android:ellipsize="end"
android:gravity="center"
android:maxLength="8"
android:singleLine="true"
android:textColor="#ffffff"
android:textSize="@dimen/sp_32"
@@ -66,7 +65,7 @@
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@+id/ivUserHead"
app:layout_constraintTop_toTopOf="@+id/ivUserHead"
tools:text="诗一样的女子诗诗一样的女子诗诗一样的女子诗" />
tools:text="诗一样的女子" />
</androidx.constraintlayout.widget.ConstraintLayout >
<ImageView

View File

@@ -11,4 +11,8 @@ public class TanluConstants {
public static final String TAG = "/tanlu/ui";
public static final String NAVI_INFO = "navi_info";
public static final String MODEL_NAME = "CARD_TYPE_ROAD_CONDITION";
public static final String UPLOAD_ROAD_CONDITION = "upload_road_condition";
}

View File

@@ -6,6 +6,7 @@ import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.text.Html;
import android.text.TextUtils;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
import android.widget.RelativeLayout;
@@ -15,10 +16,21 @@ 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.core.PoiItem;
import com.amap.api.services.geocoder.GeocodeAddress;
import com.amap.api.services.geocoder.GeocodeQuery;
import com.amap.api.services.geocoder.GeocodeResult;
import com.amap.api.services.geocoder.GeocodeSearch;
import com.amap.api.services.geocoder.RegeocodeResult;
import com.amap.api.services.poisearch.PoiResult;
import com.amap.api.services.poisearch.PoiSearch;
import com.google.gson.JsonObject;
import com.mogo.commons.mvp.IView;
import com.mogo.commons.mvp.MvpFragment;
import com.mogo.commons.mvp.Presenter;
import com.mogo.commons.voice.AIAssist;
import com.mogo.commons.voice.IMogoVoiceCmdCallBack;
import com.mogo.map.MogoLatLng;
import com.mogo.map.listener.IMogoMapListener;
import com.mogo.map.location.IMogoLocationClient;
@@ -35,9 +47,11 @@ import com.mogo.map.search.geo.MogoPoiItem;
import com.mogo.map.search.poisearch.IMogoPoiSearchListener;
import com.mogo.map.search.poisearch.MogoPoiResult;
import com.mogo.map.uicontroller.EnumMapUI;
import com.mogo.map.uicontroller.IMogoMapUIController;
import com.mogo.module.common.entity.MarkerExploreWay;
import com.mogo.module.common.entity.MarkerResponse;
import com.mogo.module.common.entity.MarkerShowEntity;
import com.mogo.module.service.receiver.MogoReceiver;
import com.mogo.module.tanlu.R;
import com.mogo.module.tanlu.callback.AlongTheWayCallback;
import com.mogo.module.tanlu.callback.RoadLineCallback;
import com.mogo.module.tanlu.callback.VoiceSearchCallback;
@@ -48,23 +62,22 @@ 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.util.Utils;
import com.mogo.service.MogoServicePaths;
import com.mogo.service.cardmanager.IMogoCardManager;
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.MogoServicePaths;
import com.mogo.service.cardmanager.IMogoCardManager;
import com.mogo.service.connection.IMogoSocketManager;
import com.mogo.service.imageloader.IMogoImageLoaderListener;
import com.mogo.service.imageloader.IMogoImageloader;
import com.mogo.service.intent.IMogoIntentListener;
import com.mogo.service.intent.IMogoIntentManager;
import com.mogo.service.map.IMogoMapService;
import com.mogo.service.module.IMogoModuleLifecycle;
import com.mogo.service.module.IMogoRegisterCenter;
import com.mogo.service.voice.IMogoVoiceListener;
import com.mogo.service.voice.IMogoVoiceManager;
import com.mogo.service.statusmanager.IMogoStatusManager;
import com.mogo.utils.TipToast;
import com.mogo.utils.logger.Logger;
import com.shuyu.gsyvideoplayer.builder.GSYVideoOptionBuilder;
@@ -105,7 +118,10 @@ public class TanluCardViewFragment extends MvpFragment<IView, Presenter<IView>>
private IMogoSocketManager mMogoSocketManager;
private IMogoLocationClient mLocationClient;
private IMogoCardManager iMogoCardManager;
private IMogoVoiceManager mMogoVoiceManager;
private IMogoStatusManager mMogoStatusManager;
private IMogoIntentManager mogoIntentManager; //免唤醒
private IMogoMapUIController mMApUIController;
private GeocodeSearch mGeocodeSearch;
//声音控制文字
private String voiceGetInfoMationTts;
@@ -131,9 +147,11 @@ public class TanluCardViewFragment extends MvpFragment<IView, Presenter<IView>>
private List<MarkerExploreWay> markerExploreWayList = new ArrayList<>();
private int currentPosition = 0; //卡片媒体当前位置
private Bitmap mMarkerIcon;
private Bitmap multiMarkerIcon;
private TanluModelData mTanluModelData;
private List<MogoLatLng> passedByPoints;
private IMogoRegisterCenter mMogoRegisterCenter;
private String mKeywords;
@Override
@@ -180,18 +198,96 @@ public class TanluCardViewFragment extends MvpFragment<IView, Presenter<IView>>
mogoImageloader = (IMogoImageloader) ARouter.getInstance().build(MogoServicePaths.PATH_UTILS_IMAGE_LOADER).navigation();
//地图marker
mMogoMapService = (IMogoMapService) ARouter.getInstance().build(MogoServicePaths.PATH_SERVICES_MAP).navigation(getActivity());
mMarkerManager = mMogoMapService.getMarkerManager(getContext());
//切换卡片操作
iMogoCardManager = (IMogoCardManager) ARouter.getInstance().build(MogoServicePaths.PATH_CARD_MANAGER).navigation(getActivity());
mMogoRegisterCenter = (IMogoRegisterCenter) ARouter.getInstance().build(MogoServicePaths.PATH_REGISTER_CENTER).navigation(getContext());
mMogoRegisterCenter.registerMogoModuleLifecycle(TanluConstants.MODEL_NAME, this);
mMogoRegisterCenter = (IMogoRegisterCenter) ARouter.getInstance().build(MogoServicePaths.PATH_REGISTER_CENTER).navigation(getContext());
//语音操作
mMogoVoiceManager = (IMogoVoiceManager) ARouter.getInstance().build(MogoServicePaths.PATH_VOICE_MANAGER).navigation(getContext());
}
//唤醒
mogoIntentManager = (IMogoIntentManager) ARouter.getInstance().build(MogoServicePaths.PATH_INTENT_MANAGER).navigation(getContext());
//地图操作
mMogoMapService = (IMogoMapService) ARouter.getInstance().build(MogoServicePaths.PATH_SERVICES_MAP).navigation(getContext());
mMApUIController = mMogoMapService.getMapUIController();
mGeocodeSearch = new GeocodeSearch(getContext());
mMogoStatusManager = (IMogoStatusManager) ARouter.getInstance().build(MogoServicePaths.PATH_STATUS_MANAGER).navigation(getContext());
//poi查询
mGeocodeSearch.setOnGeocodeSearchListener(new GeocodeSearch.OnGeocodeSearchListener() {
@Override
public void onRegeocodeSearched(RegeocodeResult regeocodeResult, int i) {
Logger.d(TAG, "onRegeocodeSearched -----> ");
}
@Override
public void onGeocodeSearched(GeocodeResult p0, int p1) {
Logger.d(TAG, "onGeocodeSearched ------mKeywords =" + mKeywords + ">>p1 =" + p1);
if (p1 == 1000) {
if (p0.getGeocodeAddressList() != null && p0.getGeocodeAddressList().size() != 0) {
GeocodeAddress geocodeAddress = p0.getGeocodeAddressList().get(0);
LatLonPoint latLon = geocodeAddress.getLatLonPoint();
Double longit; //经度
Double lat; //维度
if (mKeywords.equals("附近")) {
longit = TanluServiceHandler.getLocationClient().getLastKnowLocation().getLongitude();
lat = TanluServiceHandler.getLocationClient().getLastKnowLocation().getLatitude();
} else {
longit = latLon.getLongitude();
lat = latLon.getLatitude();
}
Log.d(TAG, "geoSearch keywords = $keywords --cityCode = $cityCode " +
"--longitude= longit --latitude = $lat");
getVoiceControlRoadData(mKeywords, lat, longit);
} else {
String cityCode = TanluServiceHandler.getLocationClient().getLastKnowLocation().getCityCode();
PoiSearch.Query query = new PoiSearch.Query(mKeywords, "", cityCode);
PoiSearch poiSearch = new PoiSearch(getContext(), query);
poiSearch.setOnPoiSearchListener(new PoiSearch.OnPoiSearchListener() {
@Override
public void onPoiSearched(PoiResult p0, int p1) {
Logger.d(TAG, "setOnPoiSearchListener ------mKeywords =" + mKeywords + ">>p1 =" + p1);
if (p1 == 1000) {
if (p0.getPois() != null && p0.getPois().size() != 0) {
PoiItem poi = p0.getPois().get(0);
LatLonPoint latLon = poi.getLatLonPoint();
Double longit; //经度
Double lat; //维度
if (mKeywords.equals("附近")) {
longit = TanluServiceHandler.getLocationClient().getLastKnowLocation().getLongitude();
lat = TanluServiceHandler.getLocationClient().getLastKnowLocation().getLatitude();
} else {
longit = latLon.getLongitude();
lat = latLon.getLatitude();
}
getVoiceControlRoadData(mKeywords, lat, longit);
Logger.d(TAG, "poi search keywords = $keywords --cityCode = $cityCode " +
"--longitude= $long --latitude = $lat");
} else {
Logger.e(TAG, "poi == null");
}
} else {
Logger.e(TAG, "poi search result code = $p1");
}
}
@Override
public void onPoiItemSearched(PoiItem poiItem, int i) {
}
});
poiSearch.searchPOIAsyn();
}
} else {
speakFailVoice(searchfaileVoiceStrings[2]);
}
}
});
}
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
@@ -236,9 +332,9 @@ public class TanluCardViewFragment extends MvpFragment<IView, Presenter<IView>>
}
@Override
public void onStartNavi() {
// initModelData();
// getNavigationLineData();
public void onStartNavi() { //开始导航
initModelData();
getNavigationLineData();
}
@Override
@@ -287,20 +383,85 @@ public class TanluCardViewFragment extends MvpFragment<IView, Presenter<IView>>
});
}
/**
* 处理关键词搜索
*
* @return
*/
private void handleActionFoo(String keywords) {
Logger.d(TAG, "handleActionFoo keywords = " + keywords);
speakSearchingVoice();
GeocodeQuery geocodeQuery;
String cityCode = TanluServiceHandler.getLocationClient().getLastKnowLocation().getCityCode();
geocodeQuery = new GeocodeQuery(keywords, cityCode);
geocodeQuery.setLocationName(keywords);
mGeocodeSearch.getFromLocationNameAsyn(geocodeQuery);
}
/**
* 注册listener监听
*/
private void initListener() {
//某某路堵不堵,某某地点堵不堵,附近堵不堵,播放路况
//上报路况,上报拥堵
mMogoVoiceManager.registerIntentListener("", new IMogoVoiceListener() {
@Override
public void onIntentReceived(String command, Intent intent) {
}
});
//某某路堵不堵,某某地点堵不堵,附近堵不堵,播放路况 TODO
//唤醒
mogoIntentManager.registerIntentListener(MogoReceiver.ADAS_ACTION, mogoIntentListener);
//免唤醒
AIAssist.getInstance(getActivity()).registerUnWakeupCommandCallback(TanluConstants.UPLOAD_ROAD_CONDITION, mogoVoiceListener);
}
/**
* 唤醒语音
*/
private IMogoIntentListener mogoIntentListener = new IMogoIntentListener() {
@Override
public void onIntentReceived(String intentStr, Intent intent) {
String data = intent.getStringExtra("data");
Logger.e(TAG, "唤醒 mogoIntentListener intentStr =" + intentStr + ">>data =" + data);
JsonObject jsonObject = new JsonObject();
mKeywords = jsonObject.get("location").toString();
handleActionFoo(mKeywords);
}
};
/**
* 免唤醒语音监听
*/
private IMogoVoiceCmdCallBack mogoVoiceListener = new IMogoVoiceCmdCallBack() {
@Override
public void onCmdSelected(String cmd) {
Logger.e(TAG, "免唤醒 onCmdSelected mogoVoiceListener cmd =" + cmd);
if (cmd.equals(TanluConstants.UPLOAD_ROAD_CONDITION)) {
//
Logger.d(TAG, "");
}
}
@Override
public void onCmdAction(String speakText) {
}
@Override
public void onCmdCancel(String speakText) {
}
@Override
public void onSpeakEnd(String speakText) {
}
@Override
public void onSpeakSelectTimeOut(String speakText) {
}
};
private MarkerExploreWay extractFromMarker(IMogoMarker marker) {
if (marker == null) {
return null;
@@ -333,7 +494,7 @@ public class TanluCardViewFragment extends MvpFragment<IView, Presenter<IView>>
// });
//TODO 更加广播类型判断
//TODO 广播类型判断
// getNavigationLineData();
// getRoadLineData();
@@ -514,7 +675,7 @@ public class TanluCardViewFragment extends MvpFragment<IView, Presenter<IView>>
*/
@Override
public void onPerform() {
Logger.d(TAG, "tanlu卡片 有效 ---->");
Logger.d(TAG, "tanlu卡片 onPerform 有效 ---->");
mMarkerManager = mMogoMapService.getMarkerManager(getActivity());
List<IMogoMarker> markers = mMarkerManager.getMarkers(TanluConstants.MODEL_NAME);
if (markers != null && markers.size() > 0) {
@@ -658,9 +819,10 @@ public class TanluCardViewFragment extends MvpFragment<IView, Presenter<IView>>
.owner(TanluConstants.MODEL_NAME)
.longitude(event.lon);
mMogoMapService = (IMogoMapService) ARouter.getInstance().build(MogoServicePaths.PATH_SERVICES_MAP).navigation(getContext());
mMarkerManager = mMogoMapService.getMarkerManager(getContext());
IMogoMarker marker = mMarkerManager.addMarker(TanluConstants.MODEL_NAME, options);
//TODO 请求分享接口
}
@Override
@@ -759,11 +921,9 @@ public class TanluCardViewFragment extends MvpFragment<IView, Presenter<IView>>
/**
* 声音控制道路数据
*/
public void getVoiceControlRoadData(String keywords) {
Double lat = TanluServiceHandler.getLocationClient().getLastKnowLocation().getLatitude();
Double lon = TanluServiceHandler.getLocationClient().getLastKnowLocation().getLongitude();
String cityCode = TanluServiceHandler.getLocationClient().getLastKnowLocation().getCityCode();
public void getVoiceControlRoadData(String keywords, final double lat, final double lon) {
String adCode = TanluServiceHandler.getLocationClient().getLastKnowLocation().getAdCode();
String cityCode = TanluServiceHandler.getLocationClient().getLastKnowLocation().getCityCode();
Logger.d(TAG, "getVoiceControlRoadData lat =" + lat + ">>>lon =" + lon + ">>>cityCode=" + cityCode + ">>>adCode =" + adCode);
mTanluModelData.getVoiceControlRoadData(keywords, cityCode, lon, lat, adCode, new VoiceSearchCallback() {
@Override
@@ -772,6 +932,41 @@ public class TanluCardViewFragment extends MvpFragment<IView, Presenter<IView>>
Logger.d(TAG, "getVoiceControlRoadData discription = " + discription);
if (o.getInformations() != null && o.getInformations().size() > 0) {
speakSuccessVoice(o.getInformations(), discription == null ? "" : discription);
List<Information> informationList = o.getInformations();
//移动
MogoLatLng latLng = new MogoLatLng(lat, lon);
mMApUIController.moveToCenter(latLng);
//清除探路之前的数据
mMarkerManager.removeMarkers(TanluConstants.MODEL_NAME);
mMogoStatusManager.setUserInteractionStatus(TanluConstants.MODEL_NAME, true, false);
//打点 TODO
ArrayList<MogoMarkerOptions> optionList = new ArrayList<>();
for (int i = 0; i < informationList.size(); i++) {
//根据type确定添加的图片
if (informationList.get(i).type == 0) { //图片
multiMarkerIcon = BitmapFactory.decodeResource(getResources(), R.drawable.ic_search_poi_location);
} else if (informationList.get(i).type == 1) { //视频
}
MogoMarkerOptions options = new MogoMarkerOptions()
.icon(multiMarkerIcon)
.latitude(informationList.get(i).lat)
.owner(TanluConstants.MODEL_NAME)
.longitude(informationList.get(i).lon);
optionList.add(options);
}
mMarkerManager.addMarkers(TanluConstants.MODEL_NAME, optionList, true);
//直接使用当前数据list作为切换的数据源
} else {
if (!TextUtils.isEmpty(discription)) {
AIAssist.getInstance(getContext()).speakTTSVoice(discription, null);
@@ -780,11 +975,6 @@ public class TanluCardViewFragment extends MvpFragment<IView, Presenter<IView>>
}
}
//TODO 展示数据
//清除探路之前的数据
//直接使用当前数据list作为切换的数据源
}
@Override
@@ -797,7 +987,8 @@ public class TanluCardViewFragment extends MvpFragment<IView, Presenter<IView>>
Random random = new Random();
private void speakSuccessVoice(List<Information> informations, String trafficStatus) {
private void speakSuccessVoice(List<Information> informations, String
trafficStatus) {
switch (informations.size()) {
case 0:
Logger.d(TAG, "speakSuccessVoice ----> " + random.nextInt(3));
@@ -850,6 +1041,10 @@ public class TanluCardViewFragment extends MvpFragment<IView, Presenter<IView>>
AIAssist.getInstance(getContext()).speakTTSVoice(string, null);
}
private void speakSearchingVoice() {
AIAssist.getInstance(getContext()).speakTTSVoice(searchingVoiceStrings[random.nextInt(3)], null);
}
//上报语音搜索
private void trackVoiceSearch(int type) {

View File

@@ -13,16 +13,16 @@ import java.util.ArrayList;
* @since 2020-01-05
*/
public class Information extends BaseData implements Parcelable {
private int type;
private Double lon;
private Double lat;
private String addr;
private Long generateTime;
private String cityName;
private ArrayList<Items> items;
private int distance;
private String nickName;
private String headImgUrl;
public int type;
public Double lon;
public Double lat;
public String addr;
public Long generateTime;
public String cityName;
public ArrayList<Items> items;
public int distance;
public String nickName;
public String headImgUrl;
@Override

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB