och_taxi 升级socket长连接版本
This commit is contained in:
@@ -17,6 +17,7 @@ import com.mogo.och.taxi.ui.OCHTaxiUiController;
|
||||
import com.mogo.service.adas.IMogoAdasOCHCallback;
|
||||
import com.mogo.service.adas.RemoteControlAutoPilotParameters;
|
||||
import com.mogo.service.adas.entity.AdasOCHData;
|
||||
import com.mogo.service.connection.IMogoLifecycleListener;
|
||||
import com.mogo.service.connection.IMogoOnMessageListener;
|
||||
import com.mogo.service.intent.IMogoIntentListener;
|
||||
import com.mogo.utils.NetworkUtils;
|
||||
@@ -78,6 +79,7 @@ class MogoOCHTaxiModel {
|
||||
private Context mContext;
|
||||
private OCHTaxiOrderResponse mCurrentOCHOrder;
|
||||
private OCHArriveNotifyCallback mNotifyCallback;
|
||||
private OCHSocketLifeCycleLisnter mSocketLifeCycleLisnter;
|
||||
private IMogoCarLocationChangedListener2 mCarLocationChangedListener2;
|
||||
/**
|
||||
* 是否达到起始站点
|
||||
@@ -125,6 +127,10 @@ class MogoOCHTaxiModel {
|
||||
.getApis()
|
||||
.getSocketManagerApi( context )
|
||||
.registerOnMessageListener( 401019, mOrderStatusMsgListener = new OrderStatusMsgListener() );
|
||||
MogoApisHandler.getInstance()
|
||||
.getApis()
|
||||
.getSocketManagerApi(context)
|
||||
.registerLifecycleListener(10010,mSocketLifeCycleLisnter = new OCHSocketLifeCycleLisnter());
|
||||
MogoApisHandler.getInstance()
|
||||
.getApis()
|
||||
.getAdasControllerApi()
|
||||
@@ -153,13 +159,6 @@ class MogoOCHTaxiModel {
|
||||
|
||||
mOCHRHCarstatus = data.data.status == 1 ? 1:0;
|
||||
|
||||
if (mOCHRHCarstatus == 1){
|
||||
timeLoop();
|
||||
}else {
|
||||
if (mDisposable != null ){
|
||||
mDisposable.dispose();
|
||||
}
|
||||
}
|
||||
//更新view
|
||||
OCHTaxiUiController.getInstance().onOperationChanged(mOCHRHCarstatus==1);
|
||||
//刷新数据
|
||||
@@ -193,40 +192,9 @@ class MogoOCHTaxiModel {
|
||||
private void restoreOrderInfo() {
|
||||
Logger.d( TAG, "重新查询订单状态" );
|
||||
mRetryCounter = 0;
|
||||
// if ( mCurrentOCHOrder == null ) {
|
||||
// // 订单恢复
|
||||
// String orderInfo = SharedPrefsMgr.getInstance( mContext ).getString( SP_KEY_OCH_TAXI_ORDER );
|
||||
// Logger.d(TAG,"restoreOrderInfo:"+orderInfo);
|
||||
// if ( !TextUtils.isEmpty( orderInfo ) ) {
|
||||
// mCurrentOCHOrder = GsonUtil.objectFromJson( orderInfo, OCHTaxiOrderResponse.class );
|
||||
// }
|
||||
// }
|
||||
// query2RestoreOrderStatus(mCurrentOCHOrder == null ? null : mCurrentOCHOrder.orderNo);
|
||||
query2RestoreOrderStatus(null);
|
||||
}
|
||||
|
||||
// private void restoreOrderInfo_() {
|
||||
// Logger.d( TAG, "重新查询订单状态" );
|
||||
// mRetryCounter = 0;
|
||||
// if ( mCurrentOCHOrder == null ) {
|
||||
// // 订单恢复
|
||||
// String orderInfo = SharedPrefsMgr.getInstance( mContext ).getString( SP_KEY_OCH_TAXI_ORDER );
|
||||
// if ( !TextUtils.isEmpty( orderInfo ) ) {
|
||||
// mCurrentOCHOrder = GsonUtil.objectFromJson( orderInfo, OCHTaxiOrderResponse.class );
|
||||
// if ( mCurrentOCHOrder == null ) {
|
||||
// // 解决本地没有缓存订单号的问题
|
||||
// query2RestoreOrderStatus( null );
|
||||
// } else {
|
||||
// query2RestoreOrderStatus( mCurrentOCHOrder.orderNo );
|
||||
// }
|
||||
// } else {
|
||||
// // 解决本地没有缓存订单号的问题
|
||||
// query2RestoreOrderStatus( null );
|
||||
// }
|
||||
// } else {
|
||||
// query2RestoreOrderStatus( mCurrentOCHOrder.orderNo );
|
||||
// }
|
||||
// }
|
||||
/**
|
||||
* 查询订单状态,来恢复旧订单(因crash导致应用重启、断网没收到推送等)状态
|
||||
* <p>
|
||||
@@ -320,6 +288,58 @@ class MogoOCHTaxiModel {
|
||||
} );
|
||||
}
|
||||
|
||||
/**
|
||||
* 用于长连接
|
||||
* @param orderNo
|
||||
*/
|
||||
private void querryOrderStatusForMakeUp( String orderNo ) {
|
||||
Logger.e(TAG,"querryOrderStatusForMakeUp:"+orderNo);
|
||||
queryOCHOrderStatus( orderNo, new OCHOrderStatusCallback< OCHTaxiOrderResponse2 >() {
|
||||
@Override
|
||||
public void onSuccess( OCHTaxiOrderResponse2 data ) {
|
||||
Logger.d( TAG, "querryOrderStatusForMakeUp:"+ data.toString());
|
||||
if ( data == null || data.data == null) {
|
||||
Logger.d( TAG, "订单已取消或已完成" );
|
||||
clearCurrentOCHOrder();
|
||||
OCHTaxiUiController.getInstance().onOrderStatusChanged(OCHOrderStatus.None.getCode());
|
||||
return;
|
||||
}
|
||||
convertCurrentOrder( data );
|
||||
OCHOrderStatus status = OCHOrderStatus.valueOf( data.data.orderDispatchType );
|
||||
switch ( status ) {
|
||||
case JourneyCompleted:
|
||||
TipToast.shortTip( mContext.getString( R.string.module_och_taxi_order_completed ) );
|
||||
OCHTaxiUiController.getInstance().onOrderStatusChanged(data.data.orderDispatchType);
|
||||
clearCurrentOCHOrder();
|
||||
break;
|
||||
case Cancel:
|
||||
TipToast.shortTip( mContext.getString( R.string.module_och_taxi_order_cancel ) );
|
||||
OCHTaxiUiController.getInstance().onOrderStatusChanged(data.data.orderDispatchType);
|
||||
clearCurrentOCHOrder();
|
||||
break;
|
||||
case OnTheWayToStartStation:
|
||||
default:
|
||||
mIsArriveAtStartStation = false;
|
||||
mIsArriveAtEndStation = false;
|
||||
mIsOnTheWay2EndStation = false;
|
||||
OCHTaxiUiController.getInstance().onOrderStatusChanged(data.data.orderDispatchType);
|
||||
mOrderMsgListener.onMsgReceived( mCurrentOCHOrder );
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onError() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFail() {
|
||||
Logger.w( TAG, "查询订单失败" );
|
||||
}
|
||||
} );
|
||||
}
|
||||
|
||||
/**
|
||||
* 将查询到的订单转换成推送的订单数据,目前两者数据结构不一样
|
||||
*
|
||||
@@ -405,8 +425,6 @@ class MogoOCHTaxiModel {
|
||||
super.onSuccess(o);
|
||||
Logger.d(TAG,"OCHCarStatusResponse:"+o.data.status);
|
||||
mOCHRHCarstatus = o.data.status;
|
||||
// mIsWork = mOCHRHCarstatus.status == 1;
|
||||
// mOCHRHCarstatus.status = status;
|
||||
OCHTaxiUiController.getInstance().onOperationChanged(mOCHRHCarstatus == 1);
|
||||
updateData(mOCHRHCarstatus);
|
||||
Logger.d(TAG,"changeCarStatus:"+status);
|
||||
@@ -525,14 +543,6 @@ class MogoOCHTaxiModel {
|
||||
return mIsArriveAtEndStation;
|
||||
}
|
||||
|
||||
// /**
|
||||
// * 用户是否达到上车站点
|
||||
// *
|
||||
// * @return
|
||||
// */
|
||||
// public boolean isUserArriveAtStartStation() {
|
||||
// return mIsUserArriveAtStartStation;
|
||||
// }
|
||||
|
||||
/**
|
||||
* 设置去往终点状态
|
||||
@@ -583,7 +593,6 @@ class MogoOCHTaxiModel {
|
||||
if ( !isArriveAtStartStation() ) {
|
||||
registerCarLocationListener();
|
||||
}
|
||||
// OCHTaxiUiController.getInstance().addFragment();
|
||||
OCHTaxiUiController.getInstance().onOrderStatusChanged(mCurrentOCHOrder.orderDispatchType);
|
||||
}
|
||||
}
|
||||
@@ -624,6 +633,13 @@ class MogoOCHTaxiModel {
|
||||
.unregisterCarLocationChangedListener( TAG, mCarLocationChangedListener2 );
|
||||
}
|
||||
|
||||
public void unregisterSocketListener(){
|
||||
MogoApisHandler.getInstance()
|
||||
.getApis()
|
||||
.getSocketManagerApi(mContext)
|
||||
.unregisterLifecycleListener(10010);
|
||||
}
|
||||
|
||||
/**
|
||||
* 后端长链推送通知订单状态被改变
|
||||
*/
|
||||
@@ -648,12 +664,10 @@ class MogoOCHTaxiModel {
|
||||
switch ( status ) {
|
||||
case Cancel:
|
||||
clearCurrentOCHOrder();
|
||||
// OCHTaxiUiController.getInstance().removeFragment();
|
||||
OCHTaxiUiController.getInstance().onOrderStatusChanged(status.getCode());
|
||||
break;
|
||||
case UserArriveAtStartStation:
|
||||
mIsArriveAtStartStation = true;
|
||||
// mIsUserArriveAtStartStation = true;
|
||||
OCHTaxiUiController.getInstance().onUserArriveAtStartStation();
|
||||
break;
|
||||
default:
|
||||
@@ -663,6 +677,38 @@ class MogoOCHTaxiModel {
|
||||
}
|
||||
}
|
||||
|
||||
private class OCHSocketLifeCycleLisnter implements IMogoLifecycleListener {
|
||||
|
||||
@Override
|
||||
public void onConnectFailure() {
|
||||
Logger.e(TAG,"socket onConnectFailure");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onConnectSuccess() {
|
||||
Logger.e(TAG,"socket onConnectSuccess");
|
||||
stopSocketMakeUp();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onConnectLost() {
|
||||
Logger.e(TAG,"socket onConnectLost");
|
||||
startSocketMakeUp();
|
||||
}
|
||||
}
|
||||
|
||||
public void startSocketMakeUp(){
|
||||
if (mOCHRHCarstatus == 1){
|
||||
timeLoop();
|
||||
}
|
||||
}
|
||||
|
||||
public void stopSocketMakeUp(){
|
||||
if (mDisposable != null){
|
||||
mDisposable.dispose();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 自动驾驶本地通知订单到站
|
||||
*/
|
||||
@@ -853,7 +899,7 @@ class MogoOCHTaxiModel {
|
||||
}
|
||||
}
|
||||
|
||||
private static final int PERIOD = 3 * 1000;
|
||||
private static final int PERIOD = 1 * 1000;
|
||||
private static final int DELAY = 100;
|
||||
private Disposable mDisposable;
|
||||
/**
|
||||
@@ -864,6 +910,6 @@ class MogoOCHTaxiModel {
|
||||
.map((aLong -> aLong + 1))
|
||||
.subscribeOn(Schedulers.io())
|
||||
.observeOn(AndroidSchedulers.mainThread())
|
||||
.subscribe(aLong -> query2RestoreOrderStatus(null));
|
||||
.subscribe(aLong -> querryOrderStatusForMakeUp(null));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -232,7 +232,7 @@ class OCHTaxiFragment extends BaseOchFragment< OCHTaxiView, OCHTaxiPresenter > i
|
||||
@Override
|
||||
public void onSuccess( Object data ) {
|
||||
Logger.d( TAG, "更新状态成功" );
|
||||
// onOrderStatusChanged(OCHOrderStatus.ArriveAtEndStation.getCode());
|
||||
onOrderStatusChanged(OCHOrderStatus.ArriveAtEndStation.getCode());
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -279,6 +279,7 @@ class OCHTaxiFragment extends BaseOchFragment< OCHTaxiView, OCHTaxiPresenter > i
|
||||
.getRegisterCenterApi()
|
||||
.unregisterCarLocationChangedListener( TAG, this );
|
||||
MogoOCHTaxiModel.getInstance().unregisterCarLocationListener();
|
||||
MogoOCHTaxiModel.getInstance().unregisterSocketListener();
|
||||
mLocation = null;
|
||||
}
|
||||
|
||||
@@ -296,7 +297,7 @@ class OCHTaxiFragment extends BaseOchFragment< OCHTaxiView, OCHTaxiPresenter > i
|
||||
Logger.d( TAG, "更新状态成功" );
|
||||
MogoOCHTaxiModel.getInstance().clearCurrentOCHOrder();
|
||||
MogoOCHTaxiModel.getInstance().cancelAutopilot();
|
||||
// OCHTaxiUiController.getInstance().onOrderStatusChanged(0);
|
||||
OCHTaxiUiController.getInstance().onOrderStatusChanged(0);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -336,7 +337,7 @@ class OCHTaxiFragment extends BaseOchFragment< OCHTaxiView, OCHTaxiPresenter > i
|
||||
@Override
|
||||
public void onSuccess( Object data ) {
|
||||
Logger.d( TAG, "更新状态成功" );
|
||||
// onOrderStatusChanged(OCHOrderStatus.OnTheWayToEndStation.getCode());
|
||||
onOrderStatusChanged(OCHOrderStatus.OnTheWayToEndStation.getCode());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -4,13 +4,13 @@ apply from: "javadoc.gradle"
|
||||
|
||||
buildscript {
|
||||
repositories {
|
||||
maven { url 'http://maven.aliyun.com/nexus/content/groups/public/' }
|
||||
maven { url 'https://maven.aliyun.com/nexus/content/groups/public/' }
|
||||
maven { url 'https://maven.aliyun.com/repository/public' }
|
||||
maven { url 'https://maven.aliyun.com/repository/google' }
|
||||
maven { url 'https://maven.aliyun.com/repository/gradle-plugin' }
|
||||
maven { url 'https://maven.aliyun.com/repository/jcenter' }
|
||||
maven { url 'http://nexus.zhidaoauto.com/repository/maven-releases/' }
|
||||
maven { url 'http://nexus.zhidaoauto.com/repository/maven-public/' }
|
||||
maven { url 'https://nexus.zhidaoauto.com/repository/maven-releases/' }
|
||||
maven { url 'https://nexus.zhidaoauto.com/repository/maven-public/' }
|
||||
google()
|
||||
}
|
||||
dependencies {
|
||||
|
||||
@@ -8,11 +8,13 @@ import com.mogo.cloud.socket.IMogoCloudSocketMsgAckListener;
|
||||
import com.mogo.cloud.socket.IMogoCloudSocketOnMessageListener;
|
||||
import com.mogo.cloud.socket.SocketManager;
|
||||
import com.mogo.cloud.socket.entity.MsgBody;
|
||||
import com.mogo.service.connection.IMogoLifecycleListener;
|
||||
import com.mogo.service.connection.IMogoMsgAckListener;
|
||||
import com.mogo.service.connection.IMogoOnMessageListener;
|
||||
import com.mogo.service.connection.IMogoSocketManager;
|
||||
import com.mogo.utils.logger.Logger;
|
||||
import com.zhidao.ptech.connsvr.commom.protocol.MogoCommon;
|
||||
import com.zhidao.socket.ConnectionLifecycleListener;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
@@ -26,7 +28,7 @@ import java.util.concurrent.ConcurrentHashMap;
|
||||
* 长链实现:基于 netty
|
||||
*/
|
||||
@Keep
|
||||
public class MogoAiCloudSocketManager implements IMogoSocketManager {
|
||||
public class MogoAiCloudSocketManager extends ConnectionLifecycleListener implements IMogoSocketManager {
|
||||
|
||||
private static final String TAG = "MogoAiCloudSocketManager-apk";
|
||||
|
||||
@@ -54,6 +56,7 @@ public class MogoAiCloudSocketManager implements IMogoSocketManager {
|
||||
* key - msgType
|
||||
*/
|
||||
private final Map<Integer, List<IMogoOnMessageListener>> mListeners = new ConcurrentHashMap<>();
|
||||
private final Map<Integer, IMogoLifecycleListener> mLifeCycleListeners = new ConcurrentHashMap<>();
|
||||
|
||||
/**
|
||||
* 管理消息回执
|
||||
@@ -101,6 +104,24 @@ public class MogoAiCloudSocketManager implements IMogoSocketManager {
|
||||
SocketManager.getInstance().unregisterOnMessageListener(msgType, mogoCloudSocketOnMessageListener);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void registerLifecycleListener(int msgType, IMogoLifecycleListener listener) {
|
||||
if (mLifeCycleListeners.containsKey(msgType)) {
|
||||
return;
|
||||
}
|
||||
if (!mLifeCycleListeners.containsKey(msgType)) {
|
||||
mLifeCycleListeners.put(msgType, listener);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void unregisterLifecycleListener(int msgType) {
|
||||
if (!mLifeCycleListeners.containsKey(msgType)) {
|
||||
return;
|
||||
}
|
||||
mLifeCycleListeners.remove(msgType);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void sendMsg(MsgBody body, IMogoMsgAckListener listener) {
|
||||
Logger.d(TAG, "sendMsg.");
|
||||
@@ -150,4 +171,37 @@ public class MogoAiCloudSocketManager implements IMogoSocketManager {
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
@Override
|
||||
public void onConnectSuccess() {
|
||||
if (mLifeCycleListeners.size() > 0){
|
||||
for (IMogoLifecycleListener lifecycleListener : mLifeCycleListeners.values()){
|
||||
if (lifecycleListener != null){
|
||||
lifecycleListener.onConnectSuccess();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onConnectFailure() {
|
||||
if (mLifeCycleListeners.size() > 0){
|
||||
for (IMogoLifecycleListener lifecycleListener : mLifeCycleListeners.values()){
|
||||
if (lifecycleListener != null){
|
||||
lifecycleListener.onConnectFailure();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onConnectLost(boolean reconnect) {
|
||||
if (mLifeCycleListeners.size() > 0){
|
||||
for (IMogoLifecycleListener lifecycleListener : mLifeCycleListeners.values()){
|
||||
if (lifecycleListener != null){
|
||||
lifecycleListener.onConnectLost();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -158,21 +158,21 @@ LOGLIB_VERSION = 1.0.4
|
||||
|
||||
######## MogoAiCloudSDK Version
|
||||
# 网络请求
|
||||
MOGO_NETWORK_VERSION=1.1.21
|
||||
MOGO_NETWORK_VERSION=1.1.24
|
||||
# 鉴权
|
||||
MOGO_PASSPORT_VERSION=1.1.21
|
||||
MOGO_PASSPORT_VERSION=1.1.24
|
||||
# 常链接
|
||||
MOGO_SOCKET_VERSION=1.1.21
|
||||
MOGO_SOCKET_VERSION=1.1.24
|
||||
# 数据采集
|
||||
MOGO_REALTIME_VERSION=1.1.21
|
||||
MOGO_REALTIME_VERSION=1.1.24
|
||||
# 探路,道路事件发布,获取
|
||||
MOGO_TANLU_VERSION=1.1.21
|
||||
MOGO_TANLU_VERSION=1.1.24
|
||||
# 直播推流
|
||||
MOGO_LIVE_VERSION=1.1.21
|
||||
MOGO_LIVE_VERSION=1.1.24
|
||||
# 直播拉流
|
||||
MOGO_TRAFFICLIVE_VERSION=1.1.21
|
||||
MOGO_TRAFFICLIVE_VERSION=1.1.24
|
||||
# 定位服务
|
||||
MOGO_LOCATION_VERSION=1.1.21
|
||||
MOGO_LOCATION_VERSION=1.1.24
|
||||
|
||||
|
||||
######## Foundation MogoAiCloud Module
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
package com.mogo.service.connection;
|
||||
|
||||
public interface IMogoLifecycleListener {
|
||||
void onConnectFailure();
|
||||
|
||||
void onConnectSuccess();
|
||||
|
||||
void onConnectLost();
|
||||
}
|
||||
@@ -45,6 +45,9 @@ public interface IMogoSocketManager extends IProvider {
|
||||
*/
|
||||
void unregisterOnMessageListener( int msgType, IMogoOnMessageListener listener );
|
||||
|
||||
|
||||
void registerLifecycleListener(int msgType,IMogoLifecycleListener listener);
|
||||
void unregisterLifecycleListener(int msgType);
|
||||
/**
|
||||
* 发送消息
|
||||
*
|
||||
|
||||
Reference in New Issue
Block a user