Merge remote-tracking branch 'origin/feature/v1.0.0' into feature/v1.0.0

This commit is contained in:
董宏宇
2020-01-15 14:34:30 +08:00
7 changed files with 253 additions and 54 deletions

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