diff --git a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/model/TaxiPassengerModel.java b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/model/TaxiPassengerModel.java index 43937448f5..06ce8ec0f4 100644 --- a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/model/TaxiPassengerModel.java +++ b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/model/TaxiPassengerModel.java @@ -194,7 +194,7 @@ public class TaxiPassengerModel implements IOCHTaxiPassengerNaviChangedCallback } /** - * 订单轮询 + * 订单轮询 初始化主Fragment的Presenter init 调用 */ public void startOrStopOrderLoop(){ if (NetworkUtils.isConnected(mContext)) { @@ -202,6 +202,9 @@ public class TaxiPassengerModel implements IOCHTaxiPassengerNaviChangedCallback } } + /** + * 关闭订单轮训 页面摧毁时 + */ public void release() { startOrStopOrderLoop(false); startOrStopQueryOrderRemaining(false); @@ -255,6 +258,11 @@ public class TaxiPassengerModel implements IOCHTaxiPassengerNaviChangedCallback CallLimitingVelocityListenerManager.INSTANCE.removeListener(limitingVelocityListener); } + /** + * 订单轮训 + * @param start true 开启订单轮训 + * false 关闭订单轮训 + */ private void startOrStopOrderLoop(boolean start) { CallerLogger.INSTANCE.d(M_TAXI_P + TAG, "startOrStopOrderLoop() " + start); if (start) { @@ -671,6 +679,9 @@ public class TaxiPassengerModel implements IOCHTaxiPassengerNaviChangedCallback } } + /** + * 查询订单剩余里程和时间 + */ public void queryOrderRemaining(){ if (mCurrentOCHOrder == null) return; TaxiPassengerServiceManager.getInstance().queryOrderRemaining(mContext, mCurrentOCHOrder.orderNo, new TaxiPassengerServiceCallback() { diff --git a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/model/TaxiPassengerModelLoopManager.java b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/model/TaxiPassengerModelLoopManager.java index ee85371b35..1ce646c93c 100644 --- a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/model/TaxiPassengerModelLoopManager.java +++ b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/model/TaxiPassengerModelLoopManager.java @@ -126,7 +126,9 @@ public class TaxiPassengerModelLoopManager { } } - + /** + * 轮训查下 查询订单剩余里程和时间 + */ public void startQueryOrderRemainingtLoop() { if (mQueryOrderRemainingDisposable != null && !mQueryOrderRemainingDisposable.isDisposed()) { return; diff --git a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/presenter/BaseTaxiPassengerPresenter.java b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/presenter/BaseTaxiPassengerPresenter.java index fe32a0c5ca..056b46c0ff 100644 --- a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/presenter/BaseTaxiPassengerPresenter.java +++ b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/presenter/BaseTaxiPassengerPresenter.java @@ -119,7 +119,8 @@ public class BaseTaxiPassengerPresenter extends Presenter = RemoteCallbackList() + var checkIndex = OverlayLeftViewUtils.LIVE + private var lastClickTime = 0L + private const val FAST_CLICK_DELAY_TIME = 1000 // 防止事件发送过快 + + fun setValue( windowView: View, wl: WindowManager.LayoutParams?, @@ -70,7 +78,8 @@ object LeftMenuOpen { val iterator = dragList.iterator() while (iterator.hasNext()) { val next = iterator.next() - unRegisterDragView(next) + unRegisterDragView(next,false) + iterator.remove() } } @@ -169,8 +178,10 @@ object LeftMenuOpen { } } - fun unRegisterDragView(view: View?) { - dragList.remove(view) + fun unRegisterDragView(view: View?,remove:Boolean) { + if(remove) { + dragList.remove(view) + } view?.let { it.setOnTouchListener(null) it.setOnClickListener(null) @@ -220,15 +231,29 @@ object LeftMenuOpen { } fun callCallBack(meters: Long,timeInSecond: Long,speed:Float){ - val len = icallbacks.beginBroadcast() - for (i in 0 until len) { - try { - icallbacks.getBroadcastItem(i).onResult(meters,timeInSecond,speed) - } catch (e: RemoteException) { - e.printStackTrace() + if(checkIndex == OverlayLeftViewUtils.CONSULT||checkIndex == OverlayLeftViewUtils.MOVIE) { + if (System.currentTimeMillis() - lastClickTime < FAST_CLICK_DELAY_TIME){ + return } + lastClickTime = System.currentTimeMillis() + + Observable.empty().subscribeOn(Schedulers.io()) + .subscribe(object : Observer { + override fun onCompleted() { + val len = icallbacks.beginBroadcast() + for (i in 0 until len) { + try { + icallbacks.getBroadcastItem(i).onResult(meters, timeInSecond, speed) + } catch (e: RemoteException) { + e.printStackTrace() + } + } + icallbacks.finishBroadcast() + } + override fun onError(e: Throwable?) {} + override fun onNext(t: String?) {} + }) } - icallbacks.finishBroadcast() } fun invoKeyByEventType(typeID:Int){ diff --git a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/leftmenu/OverlayLeftViewUtils.kt b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/leftmenu/OverlayLeftViewUtils.kt index bb083da531..50a5e225b5 100644 --- a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/leftmenu/OverlayLeftViewUtils.kt +++ b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/leftmenu/OverlayLeftViewUtils.kt @@ -105,6 +105,7 @@ object OverlayLeftViewUtils { val liveSelected = object :ListAdapter.OnTabSelectListener{ override fun onSelect(isCurrentProcess:Boolean) { + LeftMenuOpen.checkIndex = LIVE if(isCurrentProcess) { close(view, windowManager) }else { @@ -124,6 +125,7 @@ object OverlayLeftViewUtils { val overViewSelected = object :ListAdapter.OnTabSelectListener{ override fun onSelect(isCurrentProcess:Boolean) { + LeftMenuOpen.checkIndex = OVERVIEW if(isCurrentProcess) { close(view, windowManager) }else { @@ -143,6 +145,7 @@ object OverlayLeftViewUtils { val consultSelect = object :ListAdapter.OnTabSelectListener{ override fun onSelect(isCurrentProcess:Boolean) { + LeftMenuOpen.checkIndex = CONSULT if(isCurrentProcess) { close(view, windowManager) //计算订单起点和终点距离 @@ -154,6 +157,7 @@ object OverlayLeftViewUtils { val entertainmentSelect = object :ListAdapter.OnTabSelectListener{ override fun onSelect(isCurrentProcess:Boolean) { + LeftMenuOpen.checkIndex = MOVIE if(isCurrentProcess) { close(view, windowManager) val sumDis = SharedPrefsMgr.getInstance(context).getInt(TaxiPassengerConst.SP_KEY_ORDER_SUM_DIS, 0) @@ -178,6 +182,9 @@ object OverlayLeftViewUtils { windowManager!!.addView(overlayView, params) checkProcess() isShowing = true + } catch (e: WindowManager.BadTokenException) { + isShowing = true; + dismissOverlayView(false) } catch (e: Exception) { e.printStackTrace() } @@ -260,7 +267,7 @@ object OverlayLeftViewUtils { } fun removeDragTarget(view: View?){ - LeftMenuOpen.unRegisterDragView(view) + LeftMenuOpen.unRegisterDragView(view,true) } /** @@ -365,6 +372,10 @@ object OverlayLeftViewUtils { } } + fun getStatus():Boolean{ + return isShowing + } + /** * 移除覆盖View在Activity上面 */ @@ -387,7 +398,12 @@ object OverlayLeftViewUtils { try { if (windowManager != null && overlayView != null) { windowManager!!.removeViewImmediate(overlayView) + params = null + } + if(windowManager!=null){ windowManager = null + } + if(params!=null){ params = null } if (overlayView!=null) { diff --git a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/video/VideoActivity.kt b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/video/VideoActivity.kt index 2863f1e589..d3da306254 100644 --- a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/video/VideoActivity.kt +++ b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/video/VideoActivity.kt @@ -16,10 +16,10 @@ import com.mogo.och.common.module.utils.NumberFormatUtil import com.mogo.och.taxi.passenger.R import com.mogo.och.taxi.passenger.bean.TaxiPassengerVideoPlay import com.mogo.och.taxi.passenger.constant.TaxiPassengerConst +import com.mogo.och.taxi.passenger.event.FinishActivity import com.mogo.och.taxi.passenger.mulprocess.ICallback import com.mogo.och.taxi.passenger.ui.leftmenu.LeftMenuOpen import com.mogo.och.taxi.passenger.ui.leftmenu.OverlayLeftViewUtils -import com.mogo.och.taxi.passenger.event.FinishActivity import com.mogo.och.taxi.passenger.ui.video.layoutmanage.CarouselLayoutManager import com.mogo.och.taxi.passenger.ui.video.layoutmanage.CarouselZoomPostLayoutListener import com.mogo.och.taxi.passenger.ui.video.layoutmanage.CenterScrollListener @@ -33,7 +33,14 @@ import com.shuyu.gsyvideoplayer.video.base.GSYVideoView import org.greenrobot.eventbus.EventBus import org.greenrobot.eventbus.Subscribe import org.greenrobot.eventbus.ThreadMode -import java.util.* +import rx.Observable +import rx.Observer +import rx.Subscription +import rx.android.schedulers.AndroidSchedulers +import rx.schedulers.Schedulers +import java.util.Calendar +import java.util.concurrent.TimeUnit +import kotlin.collections.ArrayList import kotlin.math.floor @@ -44,6 +51,7 @@ class VideoActivity : AppCompatActivity() { private lateinit var clContain: ConstraintLayout private lateinit var acivTitleIcon: AppCompatImageView private lateinit var tvTitle: TextView + private var subscribe: Subscription?=null private val arrayListOf = ArrayList() @@ -297,7 +305,7 @@ class VideoActivity : AppCompatActivity() { acivTitleIcon = findViewById(R.id.aciv_title_icon) tvTitle = findViewById(R.id.tv_mogo_consult) acivTitleIcon.setOnClickListener { - finish() + //finish() } } @@ -344,7 +352,25 @@ class VideoActivity : AppCompatActivity() { } } - + subscribe = Observable.interval(0, 8, TimeUnit.SECONDS) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(object : Observer { + override fun onCompleted() {} + override fun onError(e: Throwable?) {} + override fun onNext(t: Long?) { + if (!OverlayLeftViewUtils.getStatus()) { + when (videotype){ + VIDEOTYPE_CONSULT -> { + OverlayLeftViewUtils.showOverlayView(this@VideoActivity,isOpen = false, checkIndex = OverlayLeftViewUtils.CONSULT) + } + VIDEOTYPE_MOIES -> { + OverlayLeftViewUtils.showOverlayView(this@VideoActivity,isOpen = false, checkIndex = OverlayLeftViewUtils.MOVIE) + } + } + } + } + }) } override fun onPause() { @@ -361,6 +387,11 @@ class VideoActivity : AppCompatActivity() { } } } + subscribe?.let { + if(it.isUnsubscribed){ + it.unsubscribe() + } + } } @Subscribe(threadMode = ThreadMode.MAIN)