This commit is contained in:
wangcongtao
2020-01-10 10:49:19 +08:00
parent 316070cc45
commit d1dd1bf2d4
9 changed files with 86 additions and 6 deletions

View File

@@ -4,6 +4,7 @@ import android.content.Context;
import com.google.protobuf.ByteString;
import com.google.protobuf.InvalidProtocolBufferException;
import com.mogo.map.listener.IMogoMapListener;
import com.mogo.service.connection.IMogoMsgAckListener;
import com.mogo.service.connection.IMogoOnMessageListener;
import com.mogo.service.connection.IMogoSocketManager;
@@ -17,6 +18,9 @@ import com.zhidao.socketsdk.manager.OnSocketReceiveCallback;
import com.zhidao.socketsdk.manager.SocketConnManager;
import com.zhidao.socketsdk.manager.SocketConnManagerImpl;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
@@ -58,7 +62,7 @@ public class SocketManager implements IMogoSocketManager, OnSocketReceiveCallbac
* <p>
* key - msgType
*/
private Map< Integer, IMogoOnMessageListener > mListeners = new ConcurrentHashMap<>();
private Map< Integer, List< IMogoOnMessageListener > > mListeners = new ConcurrentHashMap<>();
/**
* 管理消息回执
@@ -83,9 +87,15 @@ public class SocketManager implements IMogoSocketManager, OnSocketReceiveCallbac
MogoConnsvr.Payload payload = MogoConnsvr.Payload.parseFrom( content );
int msgType = payload.getMsgType();
Logger.d( TAG, "received msg type = %d", msgType );
IMogoOnMessageListener listener = mListeners.get( msgType );
if ( listener != null ) {
listener.onMsgReceived( GsonUtil.objectFromJson( payload.getPayload().toStringUtf8(), listener.target() ) );
List< IMogoOnMessageListener > listeners = mListeners.get( msgType );
if ( listeners != null && !listeners.isEmpty() ) {
Iterator< IMogoOnMessageListener > iterator = listeners.iterator();
while ( iterator.hasNext() ) {
IMogoOnMessageListener listener = iterator.next();
if ( listener != null ) {
listener.onMsgReceived( GsonUtil.objectFromJson( payload.getPayload().toStringUtf8(), listener.target() ) );
}
}
}
} catch ( InvalidProtocolBufferException e ) {
Logger.e( TAG, e, "parse msg error." );
@@ -115,7 +125,10 @@ public class SocketManager implements IMogoSocketManager, OnSocketReceiveCallbac
if ( mListeners.containsKey( msgType ) ) {
Logger.w( TAG, "msgType %d is exist.", msgType );
}
mListeners.put( msgType, listener );
if ( !mListeners.containsKey( msgType ) ) {
mListeners.put( msgType, new ArrayList< IMogoOnMessageListener >() );
}
mListeners.get( msgType ).add( listener );
}
@Override
@@ -123,6 +136,20 @@ public class SocketManager implements IMogoSocketManager, OnSocketReceiveCallbac
mListeners.remove( msgType );
}
@Override
public void unregisterOnMessageListener( int msgType, IMogoOnMessageListener listener ) {
if ( listener == null ) {
return;
}
if ( !mListeners.containsKey( msgType ) ) {
return;
}
List< IMogoOnMessageListener > listeners = mListeners.get( msgType );
if ( listeners != null && listeners.contains( listener ) ) {
listeners.remove( listener );
}
}
@Override
public void sendMsg( MsgBody body, IMogoMsgAckListener listener ) {
Logger.d( TAG, "sendMsg." );

View File

@@ -163,6 +163,13 @@ public class NaviClient implements IMogoNavi {
}
}
@Override
public void clearCalculatePaths() {
if ( mAMapNaviListener != null ) {
mAMapNaviListener.clearCalculatePaths();
}
}
// -- end
private boolean checkAMapNavi() {

View File

@@ -179,4 +179,10 @@ public class NaviListenerAdapter extends AMapNaviListenerAdapter {
mNaviOverlayHelper.setLineClickInteraction( lineClickInteraction );
}
}
public void clearCalculatePaths(){
if ( mNaviOverlayHelper != null ) {
mNaviOverlayHelper.clearCalculatedOverlay();
}
}
}

View File

@@ -180,6 +180,7 @@ public class NaviOverlayHelper implements OnCalculatePathItemClickInteraction {
if ( mPaths != null ) {
mPaths.clear();
}
mLineClickInteraction = null;
}
/**

View File

@@ -89,4 +89,9 @@ public interface IMogoNavi {
* 设置线条点击回调
*/
void setLineClickInteraction( OnCalculatePathItemClickInteraction itemClickInteraction );
/**
* 清除规划的路线
*/
void clearCalculatePaths();
}

View File

@@ -120,4 +120,11 @@ public class MogoNavi implements IMogoNavi {
mDelegate.setLineClickInteraction( itemClickInteraction );
}
}
@Override
public void clearCalculatePaths() {
if ( mDelegate != null ) {
mDelegate.clearCalculatePaths();
}
}
}

View File

@@ -5,15 +5,18 @@ import android.view.View;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import com.alibaba.android.arouter.launcher.ARouter;
import com.mogo.commons.mvp.IView;
import com.mogo.commons.mvp.MvpFragment;
import com.mogo.commons.mvp.Presenter;
import com.mogo.module.common.MogoModulePaths;
import com.mogo.service.MogoServicePaths;
import com.mogo.service.cardmanager.IMogoCardManager;
import com.mogo.service.fragmentmanager.FragmentDescriptor;
import com.mogo.service.fragmentmanager.IMogoFragmentManager;
import com.mogo.service.module.IMogoModuleProvider;
/**
* @author congtaowang
@@ -33,6 +36,11 @@ public class AppNavigatorFragment extends MvpFragment< IView, Presenter< IView >
private AppsFragment mAppsFragment;
private IMogoFragmentManager mMogoFragmentManager;
/**
* 搜索莫模块
*/
private IMogoModuleProvider mSearchProvider;
@Override
protected int getLayoutId() {
return R.layout.module_apps_fragment_apps_navigator;
@@ -42,13 +50,16 @@ public class AppNavigatorFragment extends MvpFragment< IView, Presenter< IView >
protected void initViews() {
mCardManager = ( IMogoCardManager ) ARouter.getInstance().build( MogoServicePaths.PATH_CARD_MANAGER ).navigation( getContext() );
mMogoFragmentManager = ( IMogoFragmentManager ) ARouter.getInstance().build( MogoServicePaths.PATH_FRAGMENT_MANAGER ).navigation();
mNavigation = findViewById( R.id.module_apps_id_navigation );
mMusic = findViewById( R.id.module_apps_id_music );
mChat = findViewById( R.id.module_apps_id_chat );
mApps = findViewById( R.id.module_apps_id_apps );
mNavigation.setOnClickListener( view -> {
mCardManager.switch2( "CARD_TYPE_NAVIGATION" );
mSearchProvider = ( IMogoModuleProvider ) ARouter.getInstance().build( MogoModulePaths.PATH_MODULE_SEARCH ).navigation();
final Fragment fragment = mSearchProvider.createFragment( getContext(), null );
mMogoFragmentManager.push( new FragmentDescriptor.Builder().fragment( fragment ).tag( MogoModulePaths.PATH_FRAGMENT_SEARCH ).notifyMainModule( true ).build() );
} );
mMusic.setOnClickListener( view -> {
mCardManager.switch2( "CARD_TYPE_SHARE_MUSIC" );

View File

@@ -32,9 +32,18 @@ public interface IMogoSocketManager extends IProvider {
* 注销消息监听
*
* @param msgType 消息类型
* use {@link #unregisterOnMessageListener(int, IMogoOnMessageListener)} instead.
*/
@Deprecated
void unregisterOnMessageListener( int msgType );
/**
* 注销消息监听
*
* @param msgType 消息类型
*/
void unregisterOnMessageListener( int msgType, IMogoOnMessageListener listener );
/**
* 发送消息
*

View File

@@ -42,6 +42,13 @@ public class MogoSocketManager implements IMogoSocketManager {
}
}
@Override
public void unregisterOnMessageListener( int msgType, IMogoOnMessageListener listener ) {
if ( mDelegate != null ) {
mDelegate.unregisterOnMessageListener( msgType, listener );
}
}
@Override
public void sendMsg( MsgBody body, IMogoMsgAckListener listener ) {
if ( mDelegate != null ) {