在分享模块增加了,监听高德巡航进行事件上报的功能

TODO 上报接口对接
This commit is contained in:
董宏宇
2020-11-05 11:57:53 +08:00
parent 404792a0e3
commit 4fe076436f
10 changed files with 252 additions and 6 deletions

View File

@@ -0,0 +1,130 @@
package com.mogo.map.impl.amap.navi;
import android.content.Context;
import com.amap.api.navi.AMapNavi;
import com.amap.api.navi.enums.AimLessMode;
import com.mogo.map.navi.IMogoAimless;
import com.mogo.utils.logger.Logger;
import com.mogo.utils.storage.SharedPrefsMgr;
/**
* @author donghongyu
* @since 2020-11-05
* <p>
* 高德巡航
*/
public class AimlessClient implements IMogoAimless {
/**
* 巡航状态控制
*/
public static final String KEY_AIMLESS_STATUS = "KEY_AIMLESS_STATUS";
private static final String TAG = "AimlessClient";
private final Context mContext;
private AMapNavi mAMapNavi;
private AimlessModeListenerAdapter mAimlessModeListener;
private static volatile AimlessClient sInstance;
/**
* 巡航模式配置状态
*/
private boolean mAimlessModeStatus;
/**
* 巡航状态
*/
private boolean mAimlessStatus;
private AimlessClient(Context context) {
mContext = context.getApplicationContext();
// 按需初始化高德导航组件
initAMapNavi();
}
/**
* 初始化导航组件
*/
private void initAMapNavi() {
Logger.d(TAG, "initAMapNavi");
if (mAMapNavi != null) {
return;
}
mAMapNavi = AMapNavi.getInstance(mContext);
mAMapNavi.setEmulatorNaviSpeed(120);
mAMapNavi.setUseInnerVoice(true, true);
// mAMapNavi.stopSpeak();
mAimlessModeListener = new AimlessModeListenerAdapter() {
};
mAMapNavi.addAimlessModeListener(mAimlessModeListener);
mAimlessModeStatus = SharedPrefsMgr.getInstance(mContext).getBoolean(KEY_AIMLESS_STATUS, false);
}
public static AimlessClient getInstance(Context context) {
if (sInstance == null) {
synchronized (AimlessClient.class) {
if (sInstance == null) {
sInstance = new AimlessClient(context);
}
}
}
return sInstance;
}
public synchronized void release() {
sInstance = null;
}
private boolean checkAMapNavi() {
if (mAMapNavi == null) {
Logger.e(TAG, "高德导航实例为空!!!");
return false;
}
return true;
}
@Override
public void startAimlessMode() {
if (!checkAMapNavi()) {
return;
}
if (mAimlessModeStatus) {
mAMapNavi.startAimlessMode(AimLessMode.CAMERA_AND_SPECIALROAD_DETECTED);
mAimlessStatus = true;
Logger.d(TAG, "开启巡航成功");
} else {
mAimlessStatus = false;
Logger.d(TAG, "开启巡航失败");
}
}
@Override
public void stopAimlessMode() {
if (!checkAMapNavi()) {
return;
}
mAMapNavi.stopAimlessMode();
mAimlessStatus = false;
Logger.d(TAG, "关闭巡航成功");
}
@Override
public void setAimlessModeStatus(boolean open) {
this.mAimlessModeStatus = open;
SharedPrefsMgr.getInstance(mContext).putBoolean(KEY_AIMLESS_STATUS, open);
if (open) {
if (!mAimlessStatus) {
startAimlessMode();
}
} else {
if (mAimlessStatus) {
stopAimlessMode();
}
}
}
}

View File

@@ -44,7 +44,6 @@ public class AimlessModeListenerAdapter implements AimlessModeListener {
@Override
public void updateAimlessModeCongestionInfo( AimLessModeCongestionInfo aimLessModeCongestionInfo ) {
Logger.d( TAG, "updateAimlessModeCongestionInfo " + GsonUtil.jsonFromObject(aimLessModeCongestionInfo));
MogoCongestionInfo congestionInfo = ObjectUtils.fromAMap( aimLessModeCongestionInfo );
if ( congestionInfo != null ) {
MogoNaviListenerHandler.getInstance().onUpdateCongestion( congestionInfo );

View File

@@ -13,12 +13,10 @@ import com.amap.api.navi.model.AMapNaviPath;
import com.amap.api.navi.model.NaviLatLng;
import com.mogo.commons.AbsMogoApplication;
import com.mogo.commons.debug.DebugConfig;
import com.mogo.commons.voice.AIAssist;
import com.mogo.map.MogoLatLng;
import com.mogo.map.impl.amap.AMapWrapper;
import com.mogo.map.impl.amap.message.AMapMessageManager;
import com.mogo.map.impl.amap.utils.ObjectUtils;
import com.mogo.map.navi.IMogoCarLocationChangedListener;
import com.mogo.map.navi.IMogoCarLocationChangedListener2;
import com.mogo.map.navi.IMogoNavi;
import com.mogo.map.navi.MogoCalculatePath;

View File

@@ -0,0 +1,28 @@
package com.mogo.map.navi;
/**
* @author donghongyu
* @since 2020-11-05
* <p>
* 巡航操作
*/
public interface IMogoAimless {
/**
* 打开巡航模式
*/
void startAimlessMode();
/**
* 关闭巡航模式
*/
void stopAimlessMode();
/**
* 设置巡航模式状态
*
* @param open
*/
void setAimlessModeStatus(boolean open);
}

View File

@@ -0,0 +1,60 @@
package com.mogo.map;
import android.content.Context;
import com.mogo.map.impl.amap.navi.AimlessClient;
import com.mogo.map.navi.IMogoAimless;
import com.mogo.map.navi.IMogoNavi;
/**
* @author donghongyu
* @since 2020-11-05
* <p>
* 巡航代理
*/
public class MogoAimless implements IMogoAimless {
private IMogoAimless mDelegate;
private static volatile MogoAimless sInstance;
private MogoAimless(Context context) {
mDelegate = AimlessClient.getInstance(context);
}
public static MogoAimless getInstance(Context context) {
if (sInstance == null) {
synchronized (MogoAimless.class) {
if (sInstance == null) {
sInstance = new MogoAimless(context);
}
}
}
return sInstance;
}
public synchronized void release() {
sInstance = null;
}
@Override
public void startAimlessMode() {
if (mDelegate != null) {
mDelegate.startAimlessMode();
}
}
@Override
public void stopAimlessMode() {
if (mDelegate != null) {
mDelegate.stopAimlessMode();
}
}
@Override
public void setAimlessModeStatus(boolean open) {
if (mDelegate != null) {
mDelegate.setAimlessModeStatus(open);
}
}
}

View File

@@ -1,8 +1,6 @@
package com.mogo.map;
import android.content.Context;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.graphics.Rect;
import android.location.Location;