package eVVM.apk.common; import android.app.Dialog; import android.content.Intent; import android.content.pm.ActivityInfo; import android.graphics.drawable.Drawable; import android.provider.Settings; import android.support.annotation.DrawableRes; import android.support.annotation.Nullable; import android.support.annotation.StringRes; import android.util.Log; import android.view.Gravity; import android.view.View; import com.allen.library.RxHttpUtils; import com.allen.library.interceptor.Transformer; import com.allen.library.observer.CommonObserver; import com.google.gson.Gson; import com.hjq.bar.OnTitleBarListener; import com.hjq.bar.TitleBar; import com.hjq.base.BaseDialog; import com.hjq.dialog.MenuDialog; import com.hjq.toast.ToastUtils; import com.tianma.netdetector.lib.NetStateChangeObserver; import com.tianma.netdetector.lib.NetStateChangeReceiver; import com.tianma.netdetector.lib.NetworkType; import java.io.IOException; import java.util.ArrayList; import java.util.List; import java.util.Map; import butterknife.ButterKnife; import butterknife.Unbinder; import eVVM.apk.api.ApiService; import eVVM.apk.app.MyApplication; import eVVM.apk.db.netteconnectdb.NetReConnectDaoOpe; import eVVM.apk.db.nrcreportdb.NRCReportDaoOpe; import eVVM.apk.entity.NRCReportEntity; import eVVM.apk.entity.NetReConnectEntity; import eVVM.apk.helper.ActivityStackManager; import eVVM.apk.helper.DebugUtils; import eVVM.apk.helper.GPS.LocationUtils; import eVVM.apk.helper.NfcUtil; import eVVM.apk.other.EventBusManager; import eVVM.apk.other.StatusManager; import eVVM.apk.ui.bean.VnDetailBean; import eVVM.apk.ui.bean.VnListBean; import eVVM.apk.ui.vaccination.VnReportDetailForNctActivity; import eVVM.apk.widget.EvvmMsgDiago; import okhttp3.ResponseBody; public abstract class MyActivity extends UIActivity implements OnTitleBarListener, NetStateChangeObserver { @Override protected void initActivity() { super.initActivity(); ActivityStackManager.getInstance().onActivityCreated(this); } // ButterKnife 注解 private Unbinder mButterKnife; @Override protected void initLayout() { super.initLayout(); // 初始化标题栏的监听 if (getTitleId() > 0) { if (findViewById(getTitleId()) instanceof TitleBar) { ((TitleBar) findViewById(getTitleId())).setOnTitleBarListener(this); } } mButterKnife = ButterKnife.bind(this); EventBusManager.register(this); initOrientation(); } /** * 初始化横竖屏方向,会和 LauncherTheme 主题样式有冲突,注意不要同时使用 */ protected void initOrientation() { // 当前 Activity 不能是透明的并且没有指定屏幕方向,默认设置为竖屏 if (getRequestedOrientation() == ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED) { setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); } } /** * 设置标题栏的标题 */ @Override public void setTitle(int titleId) { setTitle(getText(titleId)); } /** * 设置标题栏的标题 */ @Override public void setTitle(CharSequence title) { super.setTitle(title); TitleBar titleBar = getTitleBar(); if (titleBar != null) { titleBar.setTitle(title); } } @Nullable public TitleBar getTitleBar() { if (getTitleId() > 0 && findViewById(getTitleId()) instanceof TitleBar) { return findViewById(getTitleId()); } return null; } @Override public boolean statusBarDarkFont() { //返回true表示黑色字体 return true; } /** * {@link OnTitleBarListener} */ // TitleBar 左边的View被点击了 @Override public void onLeftClick(View v) { onBackPressed(); } // TitleBar 中间的View被点击了 @Override public void onTitleClick(View v) { } // TitleBar 右边的View被点击了 @Override public void onRightClick(View v) { } @Override protected void onResume() { super.onResume(); // UmengClient.onResume(this); if (needRegisterNetworkChangeObserver()) { NetStateChangeReceiver.registerObserver(this); } } @Override protected void onPause() { // UmengClient.onPause(this); super.onPause(); } @Override protected void onStop() { super.onStop(); if (needRegisterNetworkChangeObserver()) { NetStateChangeReceiver.unregisterObserver(this); } } @Override protected void onDestroy() { super.onDestroy(); if (mButterKnife != null) mButterKnife.unbind(); EventBusManager.unregister(this); ActivityStackManager.getInstance().onActivityDestroyed(this); } private List toastList = new ArrayList<>(); /** * 显示吐司 */ public void toast(CharSequence s) { // ToastUtils.show(s); toastList.clear(); toastList.add(s.toString()); final BaseDialog show = new MenuDialog.Builder(this) .setCancel(null) // 设置 null 表示不显示取消按钮 .setAutoDismiss(false) // 设置点击按钮后不关闭对话框 .setList(toastList) .setGravity(Gravity.BOTTOM) .setAnimStyle(BaseDialog.AnimStyle.BOTTOM) .show(); postDelayed(new Runnable() { @Override public void run() { show.dismiss(); } }, 2000); } public void toast(@StringRes int id) { ToastUtils.show(getString(id)); } public void toast(Object object) { ToastUtils.show(object); } /** * 打印日志 */ public void log(Object object) { if (DebugUtils.isDebug(this)) { Log.v(getClass().getSimpleName(), object != null ? object.toString() : "null"); } } /** * 获取当前的 Application 对象 */ public final MyApplication getMyApplication() { return (MyApplication) getApplication(); } private final StatusManager mStatusManager = new StatusManager(); /** * 显示加载中 */ public void showLoading() { mStatusManager.showLoading(this); } /** * 显示加载完成 */ public void showComplete() { mStatusManager.showComplete(); } /** * 显示空提示 */ public void showEmpty() { mStatusManager.showEmpty(getContentView()); } /** * 显示错误提示 */ public void showError() { mStatusManager.showError(getContentView()); } /** * 显示自定义提示 */ public void showLayout(@DrawableRes int iconId, @StringRes int textId) { mStatusManager.showLayout(getContentView(), iconId, textId); } public void showLayout(Drawable drawable, CharSequence hint) { mStatusManager.showLayout(getContentView(), drawable, hint); } /** * 判断是否支持GPS和NFC功能 */ protected boolean checkGpsAndNfc() { switch (NfcUtil.isOPen(MyActivity.this)) { case 0: toast("您的手机没有NFC功能, 不能使用"); return false; case 1: toast("NFC功能未开启"); return false; } if (!LocationUtils.isOPen(MyActivity.this)) { toast("GPS功能未开启"); return false; } return true; } protected boolean needRegisterNetworkChangeObserver() { return true; } @Override public void onNetConnected(NetworkType networkType) { final List netReConnectEntities = NetReConnectDaoOpe.queryAll(this); if (netReConnectEntities.size() == 0) { // toast("wu"); return; } for (int i = 0; i < netReConnectEntities.size(); i++) { final NetReConnectEntity netReConnectEntity = netReConnectEntities.get(i); Map mapFromJson = getMapFromJson(netReConnectEntity.getJsonmap()); final int finalI = i; RxHttpUtils.createApi(ApiService.class) .netReConnect("" + netReConnectEntity.getInterfaceName(), "" + netReConnectEntity.getInterfaceUrl(), mapFromJson) .compose(Transformer.switchSchedulers()) .subscribe(new CommonObserver() { @Override protected void onError(String errorMsg) { toast(errorMsg+""); } @Override protected void onSuccess(ResponseBody data) { NetReConnectDaoOpe.deleteByKeyData(getActivity(), netReConnectEntity.getId()); try { String json = data.string(); Gson gson = new Gson(); if (netReConnectEntity.getType() == 1) { VnDetailBean vnDetailBean = gson.fromJson(json, VnDetailBean.class); if (vnDetailBean.getData() != null) { String vnDetailBeanTostr = new Gson().toJson(vnDetailBean); NRCReportEntity nrcReportEntity = new NRCReportEntity(); nrcReportEntity.setVnDetailBean(vnDetailBeanTostr); nrcReportEntity.setIsWarning(netReConnectEntity.getIsWarning()); NRCReportDaoOpe.insertData(getActivity(), nrcReportEntity); } Log.e("netReConnectEntity", "请求成功" + vnDetailBean.toString()); } else if (netReConnectEntity.getType() == 2) { VnListBean vnListBean = gson.fromJson(json, VnListBean.class); Log.e("netReConnectEntity", "请求成功" + vnListBean.toString()); } if (finalI == netReConnectEntities.size() - 1) { Log.e("netReConnectEntity", "最后一条"); List nrcReportEntities = NRCReportDaoOpe.queryAll(getActivity()); if (nrcReportEntities.size() > 0) { VnDetailBean vnDetailBean = new Gson().fromJson(nrcReportEntities.get(0).getVnDetailBean(), VnDetailBean.class); Intent in = new Intent(getActivity(), VnReportDetailForNctActivity.class); in.putExtra("dataBean", vnDetailBean.getData()); in.putExtra("isWarning", nrcReportEntities.get(0).getIsWarning()); in.putExtra("status", vnDetailBean.getData().getStatus()); startActivity(in); } } } catch (IOException e) { e.printStackTrace(); } } }); } } @Override public void onNetDisconnected() { showNetDialog(); } /** * map转string * * @param jsonString * @return */ public Map getMapFromJson(String jsonString) { Map map = new Gson().fromJson(jsonString, Map.class); return map; } /** * string转map * * @param map * @return */ public String mapToJson(Map map) { String jsonString = new Gson().toJson(map); return jsonString; } /** * 弹出设置网络框 */ private void showNetDialog() { //退出的操作 new EvvmMsgDiago.Builder(getActivity()) .setTitle("网络异常") // 标题可以不用填写 .setConfirm("设置") .setCancel("取消") // 设置 null 表示不显示取消按钮 //.setAutoDismiss(false) // 设置点击按钮后不关闭对话框 .setListener(new EvvmMsgDiago.OnListener() { @Override public void onConfirm(Dialog dialog) { Intent intent = new Intent(Settings.ACTION_WIFI_SETTINGS); startActivity(intent); } @Override public void onCancel(Dialog dialog) { //toast("取消了"); } }) .show(); } }