1. 车聊聊电话和音乐浮窗的互斥
2. 添加模块资源释放回调
This commit is contained in:
@@ -20,7 +20,7 @@ import com.mogo.service.module.ModuleType;
|
||||
public class MediaCardViewProvider implements IMogoModuleProvider {
|
||||
|
||||
private static final String TAG = "MediaCardViewProvider";
|
||||
|
||||
private MediaWindow2 mediaWindow2;
|
||||
|
||||
@Override
|
||||
public Fragment createFragment( Context context, Bundle data ) {
|
||||
@@ -33,7 +33,7 @@ public class MediaCardViewProvider implements IMogoModuleProvider {
|
||||
@Override
|
||||
public void init( Context context ) {
|
||||
ServiceMediaHandler.init( context );
|
||||
MediaWindow2 mediaWindow2 = new MediaWindow2();
|
||||
mediaWindow2 = new MediaWindow2();
|
||||
mediaWindow2.initMedia(context);
|
||||
}
|
||||
|
||||
@@ -88,4 +88,12 @@ public class MediaCardViewProvider implements IMogoModuleProvider {
|
||||
public String getAppName() {
|
||||
return "";
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDestroy() {
|
||||
if ( mediaWindow2 != null ) {
|
||||
mediaWindow2.onDestroy();
|
||||
}
|
||||
mediaWindow2 = null;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -11,6 +11,7 @@ import com.mogo.map.navi.IMogoNavi;
|
||||
import com.mogo.map.uicontroller.IMogoMapUIController;
|
||||
import com.mogo.module.authorize.authprovider.invoke.AuthorizeConstant;
|
||||
import com.mogo.module.authorize.authprovider.module.IMogoAuthorizeModuleManager;
|
||||
import com.mogo.module.carchattingprovider.ICarsChattingProvider;
|
||||
import com.mogo.service.MogoServicePaths;
|
||||
import com.mogo.service.adas.IMogoADASController;
|
||||
import com.mogo.service.analytics.IMogoAnalytics;
|
||||
@@ -53,6 +54,8 @@ public class ServiceMediaHandler {
|
||||
private static IMogoAuthorizeModuleManager mMogoAuthorizeModuleManager;
|
||||
private static IMogoMarkerService sMarkerService;
|
||||
|
||||
private static ICarsChattingProvider sCarsChattingProvider;
|
||||
|
||||
public static void init(Context context) {
|
||||
mApis = (MogoServiceApis) ARouter.getInstance().build(MogoServicePaths.PATH_SERVICE_APIS).navigation(context);
|
||||
mMapService = mApis.getMapServiceApi();
|
||||
@@ -73,6 +76,8 @@ public class ServiceMediaHandler {
|
||||
mMogoADASController = mApis.getAdasControllerApi();
|
||||
mMogoAuthorizeModuleManager = (IMogoAuthorizeModuleManager) ARouter.getInstance().build(AuthorizeConstant.PROVIDER_MODULE).navigation(context);
|
||||
sMarkerService = mApis.getMarkerService();
|
||||
|
||||
sCarsChattingProvider = ARouter.getInstance().navigation( ICarsChattingProvider.class );
|
||||
}
|
||||
|
||||
public static IMogoADASController getMogoADASController(){
|
||||
@@ -157,6 +162,10 @@ public class ServiceMediaHandler {
|
||||
return mMogoDataManager;
|
||||
}
|
||||
|
||||
public static MogoServiceApis getApis() {
|
||||
return mApis;
|
||||
}
|
||||
|
||||
/**
|
||||
* 这个注册的第一个参数是模块名称,目的是只给当前显示的卡片分发事件
|
||||
* @return
|
||||
@@ -183,6 +192,11 @@ public class ServiceMediaHandler {
|
||||
return sMarkerService;
|
||||
}
|
||||
|
||||
public static ICarsChattingProvider getCarsChattingApis() {
|
||||
isApisNull( sCarsChattingProvider );
|
||||
return sCarsChattingProvider;
|
||||
}
|
||||
|
||||
public static void isApisNull( Object object){
|
||||
if (isObjStaticNull(object)){
|
||||
init(AbsMogoApplication.getApp());
|
||||
|
||||
@@ -12,11 +12,13 @@ import android.widget.TextView;
|
||||
import com.mogo.commons.debug.DebugConfig;
|
||||
import com.mogo.commons.voice.AIAssist;
|
||||
import com.mogo.commons.voice.IMogoVoiceCmdCallBack;
|
||||
import com.mogo.module.carchattingprovider.ICallProviderResponse;
|
||||
import com.mogo.module.common.glide.SkinAbleBitmapTarget;
|
||||
import com.mogo.module.media.MediaConstants;
|
||||
import com.mogo.module.media.R;
|
||||
import com.mogo.module.media.ServiceMediaHandler;
|
||||
import com.mogo.module.media.constants.MusicConstant;
|
||||
import com.mogo.module.media.listener.CallProviderResponseAdapter;
|
||||
import com.mogo.module.media.listener.NoDoubleClickListener;
|
||||
import com.mogo.module.media.model.MediaInfoData;
|
||||
import com.mogo.module.media.presenter.BaseMediaPresenter;
|
||||
@@ -25,6 +27,7 @@ import com.mogo.module.media.presenter.PresenterFactory;
|
||||
import com.mogo.module.media.utils.Utils;
|
||||
import com.mogo.module.media.view.IMusicView;
|
||||
import com.mogo.module.media.widget.AnimCircleImageView;
|
||||
import com.mogo.service.statusmanager.IMogoStatusChangedListener;
|
||||
import com.mogo.service.statusmanager.StatusDescriptor;
|
||||
import com.mogo.utils.WindowUtils;
|
||||
import com.mogo.utils.glide.GlideApp;
|
||||
@@ -38,7 +41,7 @@ import com.tencent.wecarflow.flowoutside.sdk.FlowPlayControl;
|
||||
*
|
||||
* @author tongchenfei
|
||||
*/
|
||||
public class MediaWindow2 implements IMusicView {
|
||||
public class MediaWindow2 implements IMusicView , IMogoStatusChangedListener {
|
||||
|
||||
public static final String TAG = MediaWindow2.class.getName();
|
||||
private Context mContext;
|
||||
@@ -58,6 +61,9 @@ public class MediaWindow2 implements IMusicView {
|
||||
private boolean mHasAddWindow = false;
|
||||
private boolean mTwoChange = false;
|
||||
private boolean isFirstPlay = false;
|
||||
private boolean mIsCallChatWindowVisible;
|
||||
|
||||
private ICallProviderResponse mCallProviderResponse;
|
||||
|
||||
public void initMedia(Context context) {
|
||||
mContext = context;
|
||||
@@ -76,14 +82,34 @@ public class MediaWindow2 implements IMusicView {
|
||||
});
|
||||
}
|
||||
|
||||
ServiceMediaHandler.getIMogoStatusManager().registerStatusChangedListener(MediaConstants.MODULE_TYPE, StatusDescriptor.ACC_STATUS, (descriptor, isTrue) -> {
|
||||
if (descriptor == StatusDescriptor.ACC_STATUS&&!isTrue) {
|
||||
ServiceMediaHandler.getMogoWindowManager().removeView(mWindowView);
|
||||
mHasAddWindow = false;
|
||||
}
|
||||
});
|
||||
ServiceMediaHandler.getIMogoStatusManager().registerStatusChangedListener(MediaConstants.MODULE_TYPE, StatusDescriptor.ACC_STATUS, this);
|
||||
|
||||
isFirstPlay = true;
|
||||
// 车聊聊才是王
|
||||
mCallProviderResponse = new CallProviderResponseAdapter(){
|
||||
@Override
|
||||
public void callWindowStatus( boolean b ) {
|
||||
Logger.d( TAG, "callWindowStatus: "+ b);
|
||||
mIsCallChatWindowVisible = b;
|
||||
if ( !mHasAddWindow || mWindowView == null ) {
|
||||
return;
|
||||
}
|
||||
if ( mIsCallChatWindowVisible ) {
|
||||
mWindowView.setVisibility(View.GONE );
|
||||
} else {
|
||||
mWindowView.setVisibility(View.VISIBLE);
|
||||
}
|
||||
}
|
||||
};
|
||||
ServiceMediaHandler.getCarsChattingApis().registerCallWindowStatusListener( MediaConstants.MODULE_TYPE, mContext, mCallProviderResponse);
|
||||
isFirstPlay = true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onStatusChanged( StatusDescriptor descriptor, boolean isTrue ) {
|
||||
if (descriptor == StatusDescriptor.ACC_STATUS&&!isTrue) {
|
||||
ServiceMediaHandler.getMogoWindowManager().removeView(mWindowView);
|
||||
mHasAddWindow = false;
|
||||
}
|
||||
}
|
||||
|
||||
private void addWindowView() {
|
||||
@@ -93,16 +119,10 @@ public class MediaWindow2 implements IMusicView {
|
||||
return;
|
||||
}
|
||||
|
||||
if(!ServiceMediaHandler.getIMogoStatusManager().isMainPageOnResume()){
|
||||
Log.d(TAG, "not in front");
|
||||
return;
|
||||
}
|
||||
|
||||
if (!mHasAddWindow) {
|
||||
mHasAddWindow = true;
|
||||
mWindowView =
|
||||
LayoutInflater.from(mContext).inflate(R.layout.module_media_music_window_alert_layout, null);
|
||||
mWindowView.setVisibility(View.VISIBLE);
|
||||
mCircleImg = mWindowView.findViewById(R.id.window_circle_img);
|
||||
mScrollText = mWindowView.findViewById(R.id.window_scroll_txt);
|
||||
mWindowPlayPause = mWindowView.findViewById(R.id.window_play_pause);
|
||||
@@ -158,6 +178,12 @@ public class MediaWindow2 implements IMusicView {
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
if ( mIsCallChatWindowVisible ) {
|
||||
mWindowView.setVisibility(View.GONE);
|
||||
} else {
|
||||
mWindowView.setVisibility(View.VISIBLE);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -305,4 +331,10 @@ public class MediaWindow2 implements IMusicView {
|
||||
mWindowView.setVisibility(View.GONE);
|
||||
}
|
||||
}
|
||||
|
||||
public void onDestroy(){
|
||||
Logger.d(TAG, "onDestroy");
|
||||
ServiceMediaHandler.getCarsChattingApis().unRegisterCallWindowStatusListener( MediaConstants.MODULE_TYPE, mContext);
|
||||
ServiceMediaHandler.getIMogoStatusManager().unregisterStatusChangedListener(MediaConstants.MODULE_TYPE, StatusDescriptor.ACC_STATUS,this);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user