package com.aoleyun.sn.activity; import androidx.localbroadcastmanager.content.LocalBroadcastManager; import android.app.AlertDialog; import android.content.BroadcastReceiver; import android.content.Context; import android.content.DialogInterface; import android.content.Intent; import android.content.IntentFilter; import android.graphics.Bitmap; import android.os.Handler; import android.os.Message; import android.os.SystemClock; import android.util.Log; import android.view.KeyEvent; import android.view.View; import android.widget.Button; import android.widget.TextView; import com.aoleyun.sn.R; import com.aoleyun.sn.activity.main.MainContact; import com.aoleyun.sn.activity.main.MainPresenter; import com.aoleyun.sn.base.BaseActivity; import com.aoleyun.sn.service.MainService; import com.aoleyun.sn.utils.ApkUtils; import com.aoleyun.sn.utils.ExampleUtil; import com.aoleyun.sn.utils.JGYUtils; import com.aoleyun.sn.utils.SaveListUtils; import com.aoleyun.sn.utils.SysSettingUtils; import com.aoleyun.sn.utils.ToastUtil; import com.aoleyun.sn.utils.Utils; import com.blankj.utilcode.util.NetworkUtils; import com.google.gson.JsonObject; import butterknife.BindView; import butterknife.ButterKnife; import pl.droidsonroids.gif.GifImageView; public class CheckNetActivity extends BaseActivity implements MainContact.MainView, NetworkUtils.OnNetworkStatusChangedListener { @BindView(R.id.giv_1) GifImageView giv_1; @BindView(R.id.giv_2) GifImageView giv_2; @BindView(R.id.giv_3) GifImageView giv_3; @BindView(R.id.tv_1) TextView tv_1; @BindView(R.id.tv_2) TextView tv_2; @BindView(R.id.tv_3) TextView tv_3; @BindView(R.id.bt_confirm) Button bt_confirm; private static final String TAG = CheckNetActivity.class.getSimpleName(); private MainPresenter mPresenter; private boolean netWorkIsRunning = false; private boolean updateApp = false; //for receive customer msg from jpush server private MessageReceiver mMessageReceiver; public static final String MESSAGE_RECEIVED_ACTION = "com.aoleyun.sn.MESSAGE_RECEIVED_ACTION"; public static final String KEY_TITLE = "title"; public static final String KEY_MESSAGE = "message"; public static final String KEY_EXTRAS = "extras"; private static Handler mHandler; @Override public void onDisconnected() { Log.e("OnNetworkStatusChanged", "onDisconnected: "); } @Override public void onConnected(NetworkUtils.NetworkType networkType) { Log.e("OnNetworkStatusChanged", "onConnected: "); timeMillis = SystemClock.elapsedRealtime(); //直接获取数据 mPresenter.getLockedState(); } @Override public int getLayoutId() { return R.layout.activity_checknet; } boolean isAvailable = false; int runTimes = 0; @Override public void initView() { ButterKnife.bind(this); mPresenter = new MainPresenter(this); mPresenter.attachView(this); mPresenter.setProvider(this); JGYUtils.startServices(CheckNetActivity.this); Log.e(TAG, "initView: " + "start request"); NetworkUtils.registerNetworkStatusChangedListener(this); mHandler = new Handler() { @Override public void handleMessage(Message msg) { super.handleMessage(msg); Resut resut = (Resut) msg.obj; if (isAvailable == true || runTimes == 10) { if (resut.isAvailable) { giv_1.setImageResource(R.drawable.succeed); } else { giv_1.setImageResource(R.drawable.failed); } mPresenter.getLockedState(); } } }; checkNetworkIsAvailable(); bt_confirm.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { MainService.mPresenter.getLockedState(); finish(); } }); } private static class Resut { int Times; boolean isAvailable; } private void checkNetworkIsAvailable() { new Thread(new Runnable() { @Override public void run() { while (!isAvailable && runTimes < 10) { runTimes++; Log.e("initView", "run: " + "第" + runTimes + "次检测网络"); if (NetworkUtils.isAvailable()) { isAvailable = true; Resut resut = new Resut(); resut.Times = runTimes; resut.isAvailable = true; Message message = new Message(); message.obj = resut; mHandler.sendMessage(message); } else { Resut resut = new Resut(); resut.Times = runTimes; resut.isAvailable = false; Message message = new Message(); message.obj = resut; mHandler.sendMessage(message); } try { synchronized (this) { wait(1200); } } catch (InterruptedException e) { e.printStackTrace(); } } } }).start(); } //执行所有接口耗时 long timeMillis; @Override public void initData() { // JPushInterface.init(this); registerMessageReceiver(); Log.e("getMacAddress", Utils.getAndroid10MAC(this)); timeMillis = SystemClock.elapsedRealtime(); startService(new Intent(CheckNetActivity.this, MainService.class)); // mPresenter.getStudesInfo(); } @Override public void setQRImage(Bitmap qrImage) { } @Override public void setBatchText(String text, int visibility) { } @Override public void setClassText(String text, int visibility) { } @Override public void setNumberText(String text, int visibility) { } @Override public void setNameText(String text, int visibility) { } @Override public void setHead(String url) { } /** * @param loocked 后台1是锁定,底层0是锁定 */ @Override public void setLockedState(boolean loocked) { //发送设备mac地址和信息 mPresenter.sendMACAddress(); //设置极光推送别名 mPresenter.setJpushAlias(); if (loocked) { //上传APP信息 ApkUtils.getAppInfo(this); if (netWorkIsRunning || MainService.netWorkIsRunning) { //如果正在执行,不执行 return; } SaveListUtils.getList(); //获取系统管控 mPresenter.setPushTags(); netWorkIsRunning = true; } else { netWorkIsRunning = false; SysSettingUtils.setEnableSetting(this); } } /** * 首次使用默认关闭所有功能 * * @param state */ @Override public void setFirstConnect(boolean state) { Log.e(TAG, "isFirstConnect: " + "end request"); if (state) { mPresenter.setDisableSetting(); } else { } } @Override public void sendMACFinish() { mPresenter.updateDeviceInfo(); } @Override public void updateDeviceInfoFinish() { mPresenter.getSnTimeControl(); } @Override public void getSnTimeControlFinish() { mPresenter.getEBagCode(); } @Override public void getEBagCodeFinish() { } @Override public void setAliasFinish() { mPresenter.checkStoreUpdate(); } @Override public void setJpushPlatformTagsFinish() { } @Override public void checkStoreUpdateFinish() { mPresenter.checkInfoUpdate(); } @Override public void checkInfoUpdateFinish() { mPresenter.checkDesktopUpdate(); } @Override public void checkDesktopUpdateFinish() { mPresenter.checkNotifyUpdate(); } @Override public void checkNotifyUpdateFinish() { mPresenter.checkBrowserUpdate(); } @Override public void checkBrowserUpdateFinish() { mPresenter.checkTestUpdate(); } @Override public void buttonCheckUpdateFinish(boolean update, JsonObject jsonObject) { } @Override public void checkTestUpdateFinish() { } /** * @param noTag 为空,没有,错误都返回true * 设备可以没有批次,但是没有批次相当于没有数据了,就不执行下面的请求了 */ @Override public void setTagsFinish(boolean noTag) { if (mPresenter.isRequestSucceeded()) { giv_2.setImageResource(R.drawable.succeed); giv_3.setImageResource(R.drawable.succeed); } else { giv_2.setImageResource(R.drawable.failed); giv_3.setImageResource(R.drawable.failed); } if (noTag) { Log.e(TAG, "setTagsFinished: " + "not set tag"); netWorkIsRunning = false; Log.e(TAG, "SettingFinished: " + (SystemClock.elapsedRealtime() - timeMillis) + " ms"); } else { mPresenter.getSystemSettingbegin(); } } private void showDialog(JsonObject jsonObject) { AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setTitle("更新:"); builder.setMessage("检测到有新版本,是否更新?"); builder.setIcon(R.mipmap.ic_launcher); builder.setCancelable(true); //设置正面按钮 builder.setPositiveButton("更新", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { JGYUtils.getInstance().installAPK(jsonObject); dialog.dismiss(); } }); //设置反面按钮 builder.setNegativeButton("取消", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); } }); builder.show(); } @Override public void getSystemSettingbegin() { mPresenter.getAppLimit(); } @Override public void getAppLimitFinish(String packageList) { mPresenter.getDeviceBatch(packageList); } @Override public void getDeviceBatchFinish() { mPresenter.getForceDownload(); } @Override public void getForceDownloadFinish() { mPresenter.getBrowserList(); } @Override public void getBrowserListFinish(String whitelist) { mPresenter.getBrowserBookmarks(whitelist); } @Override public void getBrowserBookmarksFinish() { mPresenter.getBrowserWhiteList(); mPresenter.getDesktopIcon(); } @Override public void getDesktopIconFinish() { mPresenter.getAppAutoStartUpdateAndNet(); } @Override public void getAppAutoStartUpdateAndNetFinish() { mPresenter.getAppIDControl(); } @Override public void getAppIDControlFinish() { mPresenter.setAppinsideWeb(); } @Override public void setAppinsideWebFinish() { mPresenter.setSystemSetting(); } @Override public void setSystemSettingFinish() { mPresenter.getDefaultApp(); } @Override public void setDefaultAppFinish() { mPresenter.getROMApp(); } @Override public void getROMAppFinish() { mPresenter.getDeveloper(); } @Override public void getDeveloperFinish() { mPresenter.setLogoImg(); } @Override public void setLogoImgFinish() { mPresenter.setTopApp(); } @Override public void setTopAppFinish() { mPresenter.getDefaultDesktop(); } @Override public void getDefaultDesktopFinish() { netWorkIsRunning = false; if (mPresenter.isRequestSucceeded()) { giv_2.setImageResource(R.drawable.succeed); giv_3.setImageResource(R.drawable.succeed); } else { giv_2.setImageResource(R.drawable.failed); giv_3.setImageResource(R.drawable.failed); } Log.e(TAG, "SettingFinished: " + (SystemClock.elapsedRealtime() - timeMillis) + " ms"); } @Override public void setPoweroffTime() { } @Override public void setWiFiPasswd() { } @Override public void setScreenLockStateFinish(boolean locked, String tips) { } @Override protected void onStop() { super.onStop(); } @Override protected void onPause() { super.onPause(); } @Override protected void onResume() { super.onResume(); } @Override protected void onDestroy() { super.onDestroy(); mPresenter.detachView(); JGYUtils.startServices(CheckNetActivity.this); NetworkUtils.unregisterNetworkStatusChangedListener(this); MainService.mPresenter.getLockedState(); } @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_DOWN) { lazyExit(); return true; } return super.onKeyDown(keyCode, event); } private long mPreClickTime; private void lazyExit() { if (System.currentTimeMillis() - mPreClickTime > 3000) { ToastUtil.show("再按一次,退出"); mPreClickTime = System.currentTimeMillis(); } else { finish(); } } //jiguang public void registerMessageReceiver() { mMessageReceiver = new CheckNetActivity.MessageReceiver(); IntentFilter filter = new IntentFilter(); filter.setPriority(IntentFilter.SYSTEM_HIGH_PRIORITY); filter.addAction(MESSAGE_RECEIVED_ACTION); LocalBroadcastManager.getInstance(this).registerReceiver(mMessageReceiver, filter); } public static class MessageReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { try { if (MESSAGE_RECEIVED_ACTION.equals(intent.getAction())) { String messge = intent.getStringExtra(KEY_MESSAGE); String extras = intent.getStringExtra(KEY_EXTRAS); StringBuilder showMsg = new StringBuilder(); showMsg.append(KEY_MESSAGE + " : " + messge + "\n"); if (!ExampleUtil.isEmpty(extras)) { showMsg.append(KEY_EXTRAS + " : " + extras + "\n"); } } } catch (Exception e) { } } } }