diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index bb9630b495..5121884a7f 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -4,6 +4,7 @@ package="com.mogo.launcher"> + emptyInterface(); + + @POST("/") + @FormUrlEncoded + Observable uploadDelayCheckData(@FieldMap Map params); +} diff --git a/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/utils/DelayCheckUtil.java b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/utils/DelayCheckUtil.java new file mode 100644 index 0000000000..d4dc6cebf2 --- /dev/null +++ b/modules/mogo-module-extensions/src/main/java/com/mogo/module/extensions/utils/DelayCheckUtil.java @@ -0,0 +1,121 @@ +package com.mogo.module.extensions.utils; + +import android.content.Context; +import android.os.Handler; +import android.os.Message; +import android.os.SystemClock; + +import com.mogo.commons.data.BaseData; +import com.mogo.commons.network.SubscribeImpl; +import com.mogo.module.common.MogoApisHandler; +import com.mogo.module.extensions.net.DelayCheckApiServices; +import com.mogo.module.extensions.net.DztHttpConstant; +import com.mogo.utils.NetworkUtils; +import com.mogo.utils.network.RequestOptions; + +import java.util.HashMap; +import java.util.Map; + +import io.reactivex.schedulers.Schedulers; + +/** + * 延时验证工具类 + * + * @author tongchenfei + */ +public class DelayCheckUtil implements Handler.Callback { + + private final Handler handler = new Handler(this); + + private static final int MSG_CHECK_NET_CONNECT_STATUS = 1001; + private static final long CHECK_NET_CONNECT_STATUS_DELAY = 5000L; + + private static final int MSG_START_DELAY_CHECK = 1002; + private static final long DELAY_CHECK_DELAY = 10 * 60 * 1000; + + private Context context; + + public DelayCheckUtil(Context context) { + this.context = context; + } + + /** + * 每5s检查一下网络状态,网络状态为连接状态时,开始空接口请求以及后续的参数上报 + */ + public void waitingForCheck() { + handler.sendEmptyMessageDelayed(MSG_CHECK_NET_CONNECT_STATUS, CHECK_NET_CONNECT_STATUS_DELAY); + } + + private long requestTime, netDelay; + + @Override + public boolean handleMessage(Message msg) { + switch (msg.what) { + case MSG_CHECK_NET_CONNECT_STATUS: + if (NetworkUtils.isConnected(context)) { + handler.sendEmptyMessage(MSG_START_DELAY_CHECK); + } else { + handler.sendEmptyMessageDelayed(MSG_CHECK_NET_CONNECT_STATUS, CHECK_NET_CONNECT_STATUS_DELAY); + } + return true; + case MSG_START_DELAY_CHECK: + // 请求空接口 + startEmptyRequest(); + return true; + default: + return false; + } + } + + private void startEmptyRequest() { + requestTime = SystemClock.elapsedRealtime(); + MogoApisHandler.getInstance().getApis().getNetworkApi() + .create(DelayCheckApiServices.class, DztHttpConstant.getBaseUrl()) + .emptyInterface().subscribeOn(Schedulers.io()).observeOn(Schedulers.io()) + .subscribe(new SubscribeImpl(RequestOptions.create(context)) { + @Override + public void onSuccess(BaseData o) { + super.onSuccess(o); + netDelay = SystemClock.elapsedRealtime() - requestTime; + + startUpload(); + + } + + @Override + public void onError(Throwable e) { + super.onError(e); + } + + @Override + public void onError(String message, int code) { + super.onError(message, code); + } + }); + } + + private void startUpload(){ + Map params = new HashMap<>(); + MogoApisHandler.getInstance().getApis().getNetworkApi() + .create(DelayCheckApiServices.class, DztHttpConstant.getBaseUrl()) + .uploadDelayCheckData(params).observeOn(Schedulers.io()).subscribeOn(Schedulers.io()) + .subscribe(new SubscribeImpl(RequestOptions.create(context)) { + @Override + public void onSuccess(BaseData o) { + super.onSuccess(o); + + handler.sendEmptyMessageDelayed(MSG_START_DELAY_CHECK, DELAY_CHECK_DELAY); + } + + @Override + public void onError(String message, int code) { + super.onError(message, code); + } + + @Override + public void onError(Throwable e) { + super.onError(e); + } + }); + } +} diff --git a/modules/mogo-module-extensions/src/main/res/layout/include_debug_panel.xml b/modules/mogo-module-extensions/src/main/res/layout/include_debug_panel.xml index 560df074ee..4242b5b5e6 100644 --- a/modules/mogo-module-extensions/src/main/res/layout/include_debug_panel.xml +++ b/modules/mogo-module-extensions/src/main/res/layout/include_debug_panel.xml @@ -135,6 +135,5 @@ android:layout_height="wrap_content" android:id="@+id/groupDebugPanel" android:visibility="gone" - tools:visibility="visible" app:constraint_referenced_ids="btnCloseLog,btnOpenLog,btnOpenV2xPanel,tvObuSetTitle,tvLogSetTitle,tvV2xSetTitle,rgObuSet,ibDebugPanelClose,debugPanelBg" /> \ No newline at end of file diff --git a/modules/mogo-module-extensions/src/main/res/values/dimens.xml b/modules/mogo-module-extensions/src/main/res/values/dimens.xml index 30d6518fb6..ea9ab4a5eb 100644 --- a/modules/mogo-module-extensions/src/main/res/values/dimens.xml +++ b/modules/mogo-module-extensions/src/main/res/values/dimens.xml @@ -214,8 +214,8 @@ 464px 304px - 20px - 8px + 40px + 28px 100px 60px 48px diff --git a/modules/mogo-module-main/src/main/java/com/mogo/module/main/MainActivity.java b/modules/mogo-module-main/src/main/java/com/mogo/module/main/MainActivity.java index 664c95a6ef..e23dc28f2f 100644 --- a/modules/mogo-module-main/src/main/java/com/mogo/module/main/MainActivity.java +++ b/modules/mogo-module-main/src/main/java/com/mogo/module/main/MainActivity.java @@ -34,6 +34,7 @@ import com.mogo.service.fragmentmanager.IMogoFragmentManager; import com.mogo.service.module.IMogoModuleProvider; import com.mogo.service.statusmanager.IMogoStatusManager; import com.mogo.skin.support.SkinMode; +import com.mogo.utils.NetworkUtils; import com.mogo.utils.UiThreadHandler; import com.mogo.utils.logger.Logger; import com.zhidao.adasconfig.api.AdasConfigApiController; @@ -140,6 +141,8 @@ public class MainActivity extends MvpActivity< MainView, MainPresenter > impleme super.onCreate( savedInstanceState ); ContextHolderUtil.holdContext(this); mPresenter.postLoadModuleMsg(); + + NetworkUtils.listenNetStrength(this); } private void init() {