1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396 |
- package com.sunzee.service;
- import android.annotation.SuppressLint;
- import android.app.AlarmManager;
- import android.app.Notification;
- import android.app.NotificationManager;
- import android.app.PendingIntent;
- import android.app.Service;
- import android.content.Context;
- import android.content.Intent;
- import android.os.Build;
- import android.os.Bundle;
- import android.os.Environment;
- import android.os.Handler;
- import android.os.IBinder;
- import android.os.SystemClock;
- import android.support.annotation.Nullable;
- import android.support.annotation.RequiresApi;
- import android.telephony.TelephonyManager;
- import android.telephony.gsm.GsmCellLocation;
- import android.text.TextUtils;
- import android.util.Log;
- import android.view.WindowManager;
- import com.google.gson.Gson;
- import com.google.gson.reflect.TypeToken;
- import com.hboxs.serialport.frame.ResponseFrame;
- import com.hboxs.serialport.message.Message;
- import com.hboxs.serialport.util.AsciiUtils;
- import com.hboxs.serialport.util.ByteUtils;
- import com.hboxs.serialport.util.HexUtils;
- import com.orhanobut.hawk.Hawk;
- import com.sunzee.R;
- import com.sunzee.base.BaseApplication;
- import com.sunzee.db.WarringBeanDao;
- import com.sunzee.model.Heartbeat;
- import com.sunzee.model.HoleInformation;
- import com.sunzee.model.HttpResult;
- import com.sunzee.model.StateToilet;
- import com.sunzee.model.ToiletState;
- import com.sunzee.model.domain.AddAlarmRecordBean;
- import com.sunzee.model.domain.ErrorBean;
- import com.sunzee.model.domain.GetAdBean;
- import com.sunzee.model.domain.HeartbeatBean;
- import com.sunzee.model.domain.Name;
- import com.sunzee.model.domain.ParameterBean;
- import com.sunzee.model.domain.TimeRuleBean;
- import com.sunzee.model.domain.WarringBean;
- import com.sunzee.model.message.ApiMessageEvent;
- import com.sunzee.model.message.DownLoadMessageEvent;
- import com.sunzee.receiver.Alarmreceiver;
- import com.sunzee.retrofit.ApiCallback;
- import com.sunzee.retrofit.ApiClient;
- import com.sunzee.retrofit.ApiStores;
- import com.sunzee.thread.advanceparameter.ThreadPoolAdvanceParameter;
- import com.sunzee.thread.myservice.ThreadPoolMyservice;
- import com.sunzee.ui.dialog.WarringDialog;
- import com.sunzee.utils.FileUtil;
- import com.sunzee.utils.HexadecimalUtil;
- import com.sunzee.utils.PreventSpeedClickUtil;
- import com.sunzee.utils.SharedPreferencesUtils;
- import com.sunzee.utils.TimeUtil;
- import com.sunzee.utils.ToastUtil;
- import com.sunzee.utils.UiUtil;
- import com.wuxiaolong.androidutils.library.LogUtil;
- import org.greenrobot.eventbus.EventBus;
- import org.greenrobot.eventbus.Subscribe;
- import org.greenrobot.eventbus.ThreadMode;
- import java.io.File;
- import java.text.SimpleDateFormat;
- import java.util.ArrayList;
- import java.util.Arrays;
- import java.util.Calendar;
- import java.util.Date;
- import java.util.HashMap;
- import java.util.LinkedHashMap;
- import java.util.LinkedList;
- import java.util.List;
- import java.util.Map;
- import java.util.Timer;
- import java.util.TimerTask;
- import java.util.concurrent.CopyOnWriteArrayList;
- import io.reactivex.Observable;
- import io.reactivex.android.schedulers.AndroidSchedulers;
- import io.reactivex.disposables.CompositeDisposable;
- import io.reactivex.observers.DisposableObserver;
- import io.reactivex.schedulers.Schedulers;
- import okhttp3.RequestBody;
- public class MyService extends Service {
- private static final String TAG = "MyService";
- private ThreadPoolMyservice mThreadPoolMyservice = new ThreadPoolMyservice();//读取一些需要一直读取,或者属于myservice的地址
- private boolean isRead = true;
- private boolean isRegularCleaning = false;
- private ThreadPoolAdvanceParameter mPoolAdvanceParameter = new ThreadPoolAdvanceParameter();
- private final static int TOTAL_SUM = 6;
- //存储两个数据:是否上过厕所,一开始上厕所的时间是什么时候
- //CopyOnWriteArrayList并不是完全意义上的线程安全,如果涉及到remove操作,一定要谨慎处理。
- //写操作是加锁,读操作是不加锁的。多读少写时使用
- private static List<HoleInformation> sHoleInformationList = new LinkedList<>();
- private static LinkedList<Integer> sCleaningLocationList = new LinkedList<>();//存储要清洗的位置。
- private static List<Integer> sToiletList = new CopyOnWriteArrayList<>();//存储是否上过厕所 0表示上过,1表示没有。2表示没有状态。
- private static volatile boolean isCleanOK = false;
- @Nullable
- @Override
- public IBinder onBind(Intent intent) {
- return null;
- }
- @Override
- public void onCreate() {
- super.onCreate();
- Log.d(TAG, "MyServiceonCreate: ");
- EventBus.getDefault().register(this);
- for (int i = 0; i < TOTAL_SUM; i++) {
- sHoleInformationList.add(i, new HoleInformation(2, 0));//初始化
- // sToiletList.add(i, 1);//初始化,一开始都是没上过厕所的。
- }
- }
- @RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN)
- @Override
- public int onStartCommand(Intent intent, int flags, int startId) {
- Log.e(TAG, "onStartCommand: 开始心跳3");
- Bundle extras = null;
- if (intent != null) {
- extras = intent.getExtras();
- }
- if (extras != null) {
- int heartbeat = extras.getInt("heartbeat");
- if (heartbeat == 3) {
- stopHeartbeat();
- Log.w(TAG, "onStartCommand: 开始心跳" + heartbeat);
- Log.e(TAG, "onStartCommand: 开始心跳1");
- startHeartbeat();
- }
- int first = extras.getInt("first");
- if (first == 4) {
- //第一次启动心跳
- checkHeartData();
- mPoolAdvanceParameter.stopAll();
- mPoolAdvanceParameter.startALLRead();
- }
- }
- //进程保活相关
- flags = START_STICKY;
- //启用前台服务,主要是startForeground()
- String ns = Context.NOTIFICATION_SERVICE;
- //获得通知管理器
- NotificationManager manager1 = (NotificationManager) getSystemService(ns);
- Notification.Builder builder = new Notification.Builder(getApplicationContext());
- builder.setSmallIcon(R.drawable.login_logo);
- builder.setTicker("服务正在运行");
- builder.setContentTitle("服务正在运行");
- builder.setContentText("服务正在运行");
- builder.setWhen(System.currentTimeMillis()); //设置时间
- Notification notification = builder.build();
- //定义通知行为
- manager1.notify(0, notification);
- AlarmManager manager = (AlarmManager) getSystemService(ALARM_SERVICE);
- //读者可以修改此处的Minutes从而改变提醒间隔时间
- //此处是设置每隔55分钟启动一次
- //这是55分钟的毫秒数
- int Minutes = 55 * 60 * 1000;
- //SystemClock.elapsedRealtime()表示1970年1月1日0点至今所经历的时间
- long triggerAtTime = SystemClock.elapsedRealtime() + Minutes;
- //此处设置开启AlarmReceiver这个Service
- Intent i = new Intent(this, Alarmreceiver.class);
- PendingIntent pi = PendingIntent.getBroadcast(this, 0, i, 0);
- //ELAPSED_REALTIME_WAKEUP表示让定时任务的出发时间从系统开机算起,并且会唤醒CPU。
- manager.set(AlarmManager.ELAPSED_REALTIME_WAKEUP, triggerAtTime, pi);
- if (warringDialog == null) {
- warringBeanDao = BaseApplication.getInstances().getDaoSession().getWarringBeanDao();
- }
- if (isRead) {
- isRead = !isRead;
- mThreadPoolMyservice.stopReadM600();
- mThreadPoolMyservice.stopReadD2();
- mThreadPoolMyservice.startALLRead();
- }
- //startRead();
- return super.onStartCommand(intent, flags, startId);
- //进程保活相关
- //return START_STICKY ;
- }
- @Override
- public void onDestroy() {
- super.onDestroy();
- mThreadPoolMyservice.stopALLRead();
- EventBus.getDefault().unregister(this);
- }
- //------------------------------------------------------------------------心跳 start---------------------------------
- private Timer timerHeartbeat;
- private TimerTask taskHeartbeat;
- /**
- * 开始心跳
- */
- private void startHeartbeat() {
- Log.e(TAG, "startHeartbeat: 开始心跳");
- timerHeartbeat = new Timer();
- taskHeartbeat = new TimerTask() {
- @Override
- public void run() {
- //经纬度不为0
- //系统管理不为空
- String managerId = (String) SharedPreferencesUtils.getParam(Name.SYSTEM_ID, "");
- if (managerId != null && !TextUtils.isEmpty(managerId)) {
- sendHeart();
- }
- }
- };
- timerHeartbeat.schedule(taskHeartbeat, 1000, 1000 * 60 * 5);
- }
- /**
- * 发送心跳
- */
- private void sendHeart() {
- Heartbeat.managerId = (String) SharedPreferencesUtils.getParam(Name.SYSTEM_ID, "");
- Heartbeat.lastUpdateTime = TimeUtil.getStrCurTime();
- HeartbeatBean heartbeatBean = new HeartbeatBean();
- heartbeatBean.setCabinetHd(Heartbeat.cabinetHd);
- heartbeatBean.setCabinetTm(Heartbeat.cabinetTm);
- heartbeatBean.setFurnaceSp("0");
- heartbeatBean.setFurnaceTm(Heartbeat.furnaceTm);
- heartbeatBean.setLastUpdateTime(Heartbeat.lastUpdateTime);
- heartbeatBean.setLatitude(Heartbeat.latitude);
- heartbeatBean.setLongitude(Heartbeat.longitude);
- heartbeatBean.setManagerId(Heartbeat.managerId);
- heartbeatBean.setOdorConcentration(Heartbeat.odorConcentration);
- heartbeatBean.setCleaner(Heartbeat.cleaner);
- heartbeatBean.setDisinfectant(Heartbeat.disinfectant);
- heartbeatBean.setPeopleCounting(Heartbeat.peopleCounting);
- int netType = (int) SharedPreferencesUtils.getParam(Name.NET_TYPE, -1);
- if (netType == 0) {
- Heartbeat.netWorkingMode = "4g";
- } else if (netType == 1) {
- Heartbeat.netWorkingMode = "wifi";
- } else {
- Heartbeat.netWorkingMode = "no";
- }
- heartbeatBean.setNetWorkingMode(Heartbeat.netWorkingMode);
- heartbeatBean.setGtClientId(Heartbeat.clientId);
- heartbeatBean.setClientId(Heartbeat.deviceId);
- Gson gson = new Gson();
- String json = gson.toJson(heartbeatBean);
- RequestBody body = RequestBody.create(okhttp3.MediaType.parse("application/json;charset=utf-8"), json);
- addSubscription(apiStores.heart(body), new ApiCallback<HttpResult<String>>() {
- @Override
- public void onSuccess(HttpResult<String> model) {
- Log.d(TAG, "heartonSuccess: " + model);
- }
- @Override
- public void onFailure(String msg) {
- Log.d(TAG, "heartononFailure: " + msg);
- }
- @Override
- public void onFinish() {
- }
- });
- }
- /**
- * 检测心跳数据以及开始心跳
- */
- private void checkHeartData() {
- //系统管理不为空
- Heartbeat.managerId = (String) SharedPreferencesUtils.getParam(Name.SYSTEM_ID, "");
- if (Heartbeat.managerId != null && !TextUtils.isEmpty(Heartbeat.managerId)) {
- Log.e(TAG, "checkHeartData: 开始心跳2");
- startHeartbeat();
- LogUtil.i(TAG + "系统管理id为" + Heartbeat.managerId);
- } else {
- LogUtil.i(TAG + "系统管理id为空");
- }
- }
- /**
- * 停止心跳
- */
- private void stopHeartbeat() {
- if (timerHeartbeat != null) {
- taskHeartbeat.cancel();
- timerHeartbeat.cancel();
- timerHeartbeat = null;
- }
- }
- //------------------------------------------------------------------------心跳 end---------------------------------
- //——-----------------------------------------------------------------------请求 start------------------------------
- @Subscribe(threadMode = ThreadMode.MAIN)
- public void event(ApiMessageEvent messageEvent) {
- switch (messageEvent.getName()) {
- case "statusType1":
- //同步数据
- //showSyncDialog();
- break;
- case "DOWNKOADADCID":
- //上传设备id,返回该id的的广告资源
- Log.d(TAG, "event: DOWNKOADADCID");
- downAdvertising((String) messageEvent.getData());
- break;
- case "startClean":
- Log.d(TAG, "onReceive:闹钟响了26 " + messageEvent.getData());
- //开始清洗。全蹲位。
- /**
- * 1.首先检查是否过期了,是否有次数
- */
- isCleaned();
- break;
- case "updataParamSet":
- if (!PreventSpeedClickUtil.isFastClick()) {
- return;
- }
- isRegularCleaning = false;
- startSet(messageEvent.getData());
- break;
- case "updataParamRst":
- if (!PreventSpeedClickUtil.isFastClick()) {
- return;
- }
- isRegularCleaning = false;
- startRst(messageEvent.getData());
- break;
- case "updataParamWrite":
- if (!PreventSpeedClickUtil.isFastClick()) {
- return;
- }
- startWrite(messageEvent.getData());
- case "clientid":
- stopHeartbeat();
- startHeartbeat();
- Log.d(TAG, "GTevent clientid:" + messageEvent.getData());
- break;
- case "cleanPositionNum":
- if (!PreventSpeedClickUtil.isFastClick()) {
- return;
- }
- //开始清洗 随机清洗,会给要清洗的蹲位是
- cleanPositionNum(messageEvent.getData());
- break;
- default:
- break;
- }
- }
- private void cleanPositionNum(Object data) {
- mThreadPoolMyservice.stopWriteD120();
- mThreadPoolMyservice.startWriteD120("D120", "000" + data);
- }
- private void startWrite(Object kindData) {
- String[] split = (String[]) kindData;
- String address = split[0];
- String data = split[1].trim();
- String text = ByteUtils.decimal2fitHex(Integer.valueOf(data));
- mThreadPoolMyservice.stopWrite();
- mThreadPoolMyservice.startWrite(address, HexUtils.hexStr2BinStr(text));
- }
- private void startRst(Object data) {
- mThreadPoolMyservice.stopRst();
- mThreadPoolMyservice.startRst((String) data);
- }
- private void startSet(Object data) {
- mThreadPoolMyservice.stopSet();
- mThreadPoolMyservice.startSet((String) data);
- }
- private void isCleaned() {
- addSubscription(apiStores.getBackgroundTime(), new ApiCallback<HttpResult<String>>() {
- @Override
- public void onSuccess(HttpResult<String> model) {
- try {
- String timedata = model.getData();
- Calendar calendar = Calendar.getInstance();
- calendar.setTime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(timedata));
- //第一次就会出现报错。
- Long overdueDate = (Long) Hawk.get(Name.OVERDUE_DATE);//购买的到期的时间
- Long timeInMillis = calendar.getTimeInMillis();//当前时间
- String data = (String) Hawk.get(Name.REMAINING);
- long remaining = Long.valueOf(data);
- Log.d(TAG, "onSuccess: 时间过期remaining" + remaining);
- //如果时间没过期,那么可以继续制作
- if (overdueDate > timeInMillis) {
- Log.d(TAG, "onSuccess: 没有过期");
- //发送开始清洗的订单。
- getCleanReport(0);
- //如果还有次那么就开始购买。
- } else if (remaining > 0) {
- Log.d(TAG, "onSuccess: 时间过期,按次数计算");
- Hawk.put(Name.REMAINING, String.valueOf(remaining - 1));
- //发送开始清洗的订单。
- getCleanReport(0);
- } else {
- Log.d(TAG, "onSuccess: 全部过期,全部不能清洗");
- }
- } catch (Exception e) {
- }
- }
- @Override
- public void onFailure(String msg) {
- }
- @Override
- public void onFinish() {
- }
- });
- }
- private void getCleanReport(int i) {
- Map<String, String> params = new HashMap<>();
- params.put("clientId", Heartbeat.deviceId);
- params.put("type", i + "");
- params.put("water", 1 + "");
- params.put("electricity", 1 + "");
- addSubscription(apiStores.getCleanReport(params), new ApiCallback<HttpResult<String>>() {
- @Override
- public void onSuccess(HttpResult<String> model) {
- Log.d(TAG, "getCleanReportonSuccess: " + model);
- if ("success".equals(model.getData())) {
- startClean();
- } else {
- }
- }
- @Override
- public void onFailure(String msg) {
- }
- @Override
- public void onFinish() {
- }
- });
- }
- private void startClean() {
- isRegularCleaning = true;
- mThreadPoolMyservice.startSetM17();
- }
- @Subscribe(threadMode = ThreadMode.MAIN)
- public void event(DownLoadMessageEvent messageEvent) {
- switch (messageEvent.getType()) {
- case success:
- //先下载B屏广告 再下载A屏广告 然后窗口消失
- //下载成功
- ToastUtil.showToast("下载成功");
- Log.e(TAG, "event: 下载成功" + messageEvent.getData() + "index=" + currentIndex + " size-1=" + (getAdBeansBackup.size() - 1) + " size" + getAdBeansBackup.size());
- //只下载公司宣传视频
- if (messageEvent.getScreenType() == 0) {
- if (currentIndex == corporationAdBeans.size() - 1) {
- Log.e(TAG, "event: A屏下载完成");
- //B屏广告下完
- // if (syncDialog != null) {
- // syncDialog.setAdState(R.string.sync_success);
- //// syncDialog.dismiss();
- // }
- //不同的 删除本地文件(旧广告)
- for (int i = 0; i < allFileA.size(); i++) {
- File file = allFileA.get(i);
- if (file != null && file.exists()) {
- Log.e(TAG, "onNext:删除的A屏广告 " + file.getName());
- file.delete();
- }
- }
- getAdRuleId("1");
- Hawk.put("showAdA", getAdBeansA);
- Log.d(TAG, "GTIntentService:getAdBeansA2 " + getAdBeansA);
- //推送给购买页和制作页更新
- EventBus.getDefault().post(new DownLoadMessageEvent(DownLoadMessageEvent.Type.downloadAll, "", -1));
- return;
- }
- } else if (messageEvent.getScreenType() == 1) {
- //B屏最后一个下载完 保存数据
- if (currentIndex == getAdBeansBackup.size() - 1) {
- currentIndex = 0;
- Hawk.put("showAd", getAdBeans);
- //全部默认显示 添加数据
- for (int i = 0; i < getAdBeans.size(); i++) {
- GetAdBean getAdBean = getAdBeans.get(i);
- if (getAdBean.getLocationType().equals("棉花糖宣传广告")) {
- showSugar.put(i, getAdBean);
- }
- if (getAdBean.getLocationType().equals("外接广告")) {
- showOut.put(i, getAdBean);
- }
- }
- Log.d(TAG, "event: " + getAdBeans);
- Hawk.put("show_sugar", showSugar);
- Hawk.put("show_out", showOut);
- Log.d(TAG, "synAdSuccess:保存完成广告数据4" + getAdBeans.size());
- SharedPreferencesUtils.setParam(Name.SYSTEM_ID, Heartbeat.managerId);
- SharedPreferencesUtils.setParam(Name.CONNECT_STATE, 2);
- //不同的 删除本地文件(旧广告)
- for (int i = 0; i < allFile.size(); i++) {
- File file = allFile.get(i);
- if (file != null && file.exists()) {
- Log.e(TAG, "onNext:删除的B屏广告 " + file.getName());
- file.delete();
- }
- }
- //开始下载公司宣传视频
- currentIndex = 0;
- downLoadFile(currentIndex, "", corporationAdBeans);
- getAdBeansBackup.clear();
- return;
- }
- }
- if (messageEvent.getScreenType() == 1) {
- //开始下载B屏广告
- Log.e(TAG, "event: 开始下载B屏广告");
- currentIndex++;//下载成功一个
- if (currentIndex < getAdBeansBackup.size()) {
- downLoadFile(currentIndex, getAdBeansBackup.get(currentIndex).getAdType(), getAdBeansBackup);
- }
- } else if (messageEvent.getScreenType() == 0) {
- //开始下载A屏广告
- Log.e(TAG, "event: 开始下载A屏广告");
- currentIndex++;//下载成功一个
- if (currentIndex < corporationAdBeans.size()) {
- downLoadFile(currentIndex, corporationAdBeans.get(currentIndex).getAdType(), corporationAdBeans);
- }
- }
- break;
- case failed:
- //下载失败
- ToastUtil.showToast("下载失败" + messageEvent.getData());
- Log.d(TAG, "event: 下载失败" + messageEvent.getData());
- String strCurTime = TimeUtil.getStrCurTime();
- Map<String, String> parms = new HashMap();
- parms.put("clientId", Heartbeat.deviceId);
- parms.put("pushUpdateTime", strCurTime);
- addSubscription(apiStores.pushTimeUpdate(parms), new ApiCallback<HttpResult<String>>() {
- @Override
- public void onSuccess(HttpResult<String> model) {
- Log.e(TAG, "onNext: 上传失败成功 ");
- }
- @Override
- public void onFailure(String msg) {
- }
- @Override
- public void onFinish() {
- }
- });
- break;
- default:
- break;
- }
- }
- //——-----------------------------------------------------------------------请求 end------------------------------
- //_------------------------------------------------------------------------广告 start---------------------------------
- //要显示的棉花糖广告<index,name>
- private Map<Integer, GetAdBean> showSugar;
- //要显示的外接广告<index,name>
- private Map<Integer, GetAdBean> showOut;
- //显示的数据
- private ArrayList<GetAdBean> getAdBeans;
- private ArrayList<GetAdBean> getAdBeansA;
- //用于下载
- private ArrayList<GetAdBean> getAdBeansBackup;
- //公司宣传广告
- private ArrayList<GetAdBean> corporationAdBeans;
- //当前下载的索引
- private static int currentIndex;
- //下载成功后要删除的文件
- private ArrayList<File> allFile;
- private ArrayList<File> allFileA;
- /**
- * 上传设备id,返回该id的的广告资源
- *
- * @param s 要播放的数据
- */
- private void downAdvertising(String s) {
- showSugar = Hawk.get("show_sugar", new HashMap<Integer, GetAdBean>());
- showOut = Hawk.get("show_out", new HashMap<Integer, GetAdBean>());
- getAdBeans = new ArrayList<>();
- getAdBeansA = new ArrayList<>();
- getAdBeansBackup = new ArrayList<>();
- Gson gson = new Gson();
- //广告实体
- getAdBeans = gson.fromJson(s, new TypeToken<List<GetAdBean>>() {
- }.getType());
- getAdBeansBackup.addAll(getAdBeans);
- //只有公司宣传广告
- corporationAdBeans = new ArrayList<>();
- List<GetAdBean> indexList = new ArrayList<>();
- for (int i = 0; i < getAdBeansBackup.size(); i++) {
- if (getAdBeansBackup.get(i).getScreenType() == 0) {
- corporationAdBeans.add(getAdBeansBackup.get(i));
- indexList.add(getAdBeansBackup.get(i));
- }
- }
- for (int i = 0; i < indexList.size(); i++) {
- getAdBeansBackup.remove(indexList.get(i));
- getAdBeans.remove(indexList.get(i));
- }
- getAdBeansA.addAll(corporationAdBeans);
- currentIndex = 0;
- //全部默认显示 添加数据
- for (int i = 0; i < getAdBeansBackup.size(); i++) {
- showSugar.put(i, getAdBeansBackup.get(i));
- showOut.put(i, getAdBeansBackup.get(i));
- }
- // Hawk.put("show_sugar", showSugar);
- // Hawk.put("show_out", showOut);
- getFilesDir();
- LogUtil.d(TAG, "initView: " + getFilesDir().getName());
- //本地的所有广告数据
- File externalFilesDir = BaseApplication.getContext().getExternalFilesDir("");
- if (externalFilesDir == null) {
- externalFilesDir.mkdir();
- }
- if (!externalFilesDir.exists()) {
- externalFilesDir.mkdirs();
- }
- //1 本地的所有广告数据
- File[] allFiles = FileUtil.getAllFiles(Environment.getExternalStorageDirectory().getPath() + "/rightvideoimg/", "");
- //A屏
- File[] allFilesA = FileUtil.getAllFiles(Environment.getExternalStorageDirectory().getPath() + "/leftvideoimg/", "");
- allFile = new ArrayList<>();
- allFileA = new ArrayList<>();
- List<File> files = Arrays.asList(allFilesA);
- allFileA.addAll(files);
- if (allFiles != null && allFiles.length >= 0) {
- for (int i = 0; i < allFiles.length; i++) {
- allFile.add(allFiles[i]);
- }
- }
- //备份一个list用于删除
- //另外一个用于显示
- //相同 不下载(删除一个实体) 不删除本地文件
- ArrayList<File> unDeleteFiles = new ArrayList<>();
- if (allFiles != null) {
- for (int i = 0; i < allFiles.length; i++) {
- File file = allFiles[i];
- String name = allFiles[i].getName();
- LogUtil.d(TAG, "onNext: 本地的所有文件:" + name);
- for (int j = 0; j < getAdBeansBackup.size(); j++) {
- GetAdBean getAdBean = getAdBeansBackup.get(j);
- String id = getAdBean.getId();
- //前缀名
- String caselsh = name.substring(0, name.lastIndexOf("."));
- if (id.equals(caselsh)) {
- //相同的删除url 不下载
- LogUtil.e(TAG, "onNext不下载的文件: " + name);
- // timeDatas.remove(j);
- getAdBeansBackup.remove(j);
- //记住不删除的文件
- unDeleteFiles.add(file);
- }
- }
- }
- for (int i = 0; i < unDeleteFiles.size(); i++) {
- LogUtil.e(TAG, "onNext: unDeleteFiles name=" + unDeleteFiles.get(i).getName());
- }
- //只剩下删除的文件
- allFile.removeAll(unDeleteFiles);
- }
- ArrayList<File> unDeleteFilesA = new ArrayList<>();
- if (allFilesA != null) {
- for (int i = 0; i < allFilesA.length; i++) {
- File file = allFilesA[i];
- String name = allFilesA[i].getName();
- LogUtil.e(TAG, "onNext: A屏本地的所有文件:" + name);
- //时间,用于判断唯一
- //跟网络数据进行对比 如果id一样的不进行下载
- for (int j = 0; j < corporationAdBeans.size(); j++) {
- GetAdBean getAdBean = corporationAdBeans.get(j);
- String id = getAdBean.getId();
- //前缀名
- String caselsh = name.substring(0, name.lastIndexOf("."));
- if (id.equals(caselsh)) {
- //相同的删除url 不下载
- LogUtil.e(TAG, "onNext不下载的文件: " + name);
- corporationAdBeans.remove(j);
- //记住不删除的文件
- unDeleteFilesA.add(file);
- }
- }
- }
- //只剩下删除的文件
- allFileA.removeAll(unDeleteFilesA);
- }
- //3 下载数据
- if (getAdBeansBackup.size() <= 0) {
- LogUtil.e(TAG, "onNext: 推送过来的B屏数据相同,不下载");
- Hawk.put("showAd", getAdBeans);
- //全部默认显示 添加数据
- for (int i = 0; i < getAdBeans.size(); i++) {
- showSugar.put(i, getAdBeans.get(i));
- showOut.put(i, getAdBeans.get(i));
- }
- Log.d(TAG, "event: " + getAdBeans);
- Hawk.put("show_sugar", showSugar);
- Hawk.put("show_out", showOut);
- EventBus.getDefault().post(new ApiMessageEvent("pushTimeRule", null));
- LogUtil.d(TAG, "synAdSuccess:保存完成广告数据3" + getAdBeans.size());
- SharedPreferencesUtils.setParam(Name.SYSTEM_ID, Heartbeat.managerId);
- SharedPreferencesUtils.setParam(Name.CONNECT_STATE, 2);
- //todo
- // if (syncDialog != null) {
- // syncDiaLogUtil.setAdState(R.string.sync_success);
- // syncDiaLogUtil.dismiss();
- // }
- if (corporationAdBeans.size() <= 0) {
- LogUtil.e(TAG, "onNext: 推送过来的A屏数据相同,不下载");
- Hawk.put("showAdA", getAdBeansA);
- Log.d(TAG, "GTIntentService:getAdBeansA 1" + getAdBeansA);
- //todo
- // if (syncDialog != null) {
- // syncDiaLogUtil.setAdState(R.string.sync_success);
- // getAdRuleId("1");
- // }
- } else {
- downLoadFile(0, "", corporationAdBeans);
- }
- return;
- }
- downLoadFile(currentIndex, "", getAdBeansBackup);
- //开始下载
- LogUtil.e(TAG, "synProductSuccess:同步广告管理成功 ");
- LogUtil.e(TAG, "synProductSuccess:全部同步成功 ");
- }
- private CompositeDisposable mDisposables;
- protected ApiStores apiStores = ApiClient.retrofit().create(ApiStores.class);
- protected void addSubscription(Observable observable, DisposableObserver observer) {
- if (mDisposables == null) {
- mDisposables = new CompositeDisposable();
- }
- observable
- .unsubscribeOn(Schedulers.io())
- .subscribeOn(Schedulers.io())
- .observeOn(AndroidSchedulers.mainThread())
- .subscribe(observer);
- mDisposables.add(observer);
- }
- /**
- * 保存广告id
- */
- private void getAdRuleId(String id) {
- Map<String, String> params = new HashMap<>();
- params.put("clientId", Heartbeat.deviceId);
- addSubscription(apiStores.synTimeRule(params), new ApiCallback<HttpResult<String>>() {
- @Override
- public void onSuccess(HttpResult<String> model) {
- saveAdRules(model.getData());
- }
- @Override
- public void onFailure(String msg) {
- }
- @Override
- public void onFinish() {
- }
- });
- }
- /**
- * 保存广告id
- */
- private void saveAdRules(String id) {
- LogUtil.d(TAG, "ad_id ->" + id);
- Long lid = Long.valueOf(id);
- Map<String, Long> params = new HashMap<>();
- params.put("id", lid);
- addSubscription(apiStores.getTimeRule(params), new ApiCallback<HttpResult<String>>() {
- @Override
- public void onSuccess(HttpResult<String> rule) {
- //广告数据
- ArrayList<GetAdBean> adBeans = Hawk.get("showAd", new ArrayList<GetAdBean>());
- Gson gson = new Gson();
- List<TimeRuleBean> list = gson.fromJson(rule.getData(), new TypeToken<List<TimeRuleBean>>() {
- }.getType());
- //每个id对应的时间数
- Map<String, String> adRulesMap = new HashMap<>();
- for (int i = 0; i < adBeans.size(); i++) {
- GetAdBean getAdBean = adBeans.get(i);
- StringBuilder sb = new StringBuilder();
- for (int j = 0; j < list.size(); j++) {
- //每个规则里对应的广告
- List<String> ad = list.get(j).getAd();
- for (int k = 0; k < ad.size(); k++) {
- if (ad.get(k).equals(getAdBean.getId())) {
- sb.append(list.get(j).getTime() + "、");
- }
- }
- }
- if (sb.length() > 0) {
- sb.deleteCharAt(sb.length() - 1);
- }
- Log.e(TAG, "onNext: " + "ad_id=" + getAdBean.getId() + " rules=" + sb.toString());
- adRulesMap.put(getAdBean.getId(), sb.toString());
- }
- //保存对应的id对应的广告规则
- Hawk.put("ad_rules_map", adRulesMap);
- EventBus.getDefault().post(new ApiMessageEvent("pushTimeRule", null));// todo
- // if (syncDialog != null) {
- // syncDialog.setAdRuleState(R.string.sync_success);
- // syncDialog.dismiss();
- // }
- }
- @Override
- public void onFailure(String msg) {
- }
- @Override
- public void onFinish() {
- }
- });
- }
- /**
- * 下载文件
- *
- * @param index 下载索引 第几个
- * @param type 没有
- * @param datas 要下载数据列表
- */
- private void downLoadFile(int index, String type, ArrayList<GetAdBean> datas) {
- //开始下载
- Intent downloadApkIntent = new Intent(getApplicationContext(), DownServer.class);
- Bundle bundle = new Bundle();
- if (datas.size() <= 0) {
- return;
- }
- GetAdBean getAdBean = datas.get(index);
- String url = getAdBean.getUrl();
- if (TextUtils.isEmpty(url)) {
- //todo
- // if (syncDialog != null) {
- // syncDialog.setAdState(R.string.synchroniz_fail);
- // syncDialog.dismiss();
- // }
- ToastUtil.showToast(UiUtil.getStringRes(R.string.synchroniz_fail));
- return;
- }
- String type1 = url.substring(url.lastIndexOf(".") + 1);
- bundle.putString("downloadUrl", url);
- bundle.putString("download_name", getAdBean.getName());
- String time = TimeUtil.getNoTime(getAdBean.getCreateDate());
- Log.d(TAG, "downLoadFile: time=" + time);
- bundle.putString("title", getAdBean.getId());
- Log.d(TAG, "downLoadFile: 开始下载" + getAdBean.getId());
- bundle.putString("downloadtype", type1);
- bundle.putInt("scrrentype", getAdBean.getScreenType());
- downloadApkIntent.putExtra("download", bundle);
- getApplicationContext().startService(downloadApkIntent);
- }
- //------------------------------------------------------------------------广告 end---------------------------------
- @Subscribe(threadMode = ThreadMode.MAIN)
- public void event(Message messageEvent) {
- switch (messageEvent.getType()) {
- case connected:
- break;
- case sendError:
- break;
- case ack:
- Log.d(TAG, "Mevent: " + messageEvent.getName());
- mThreadPoolMyservice.stopSet();
- mThreadPoolMyservice.stopRst();
- mThreadPoolMyservice.stopWrite();
- if (messageEvent.getName().equals("D120")) {
- mThreadPoolMyservice.stopWriteD120();
- mThreadPoolMyservice.stopSetM8();
- mThreadPoolMyservice.startSetM8();
- } else if (messageEvent.getName().equals("DD120")) {
- mThreadPoolMyservice.stopWriteDD120();
- Log.d(TAG, "addCleanTime120event: 廁所位置寫入成功");
- mThreadPoolMyservice.stopSetM8();
- mThreadPoolMyservice.startSetM8();
- } else if (messageEvent.getName().equals("M17")) {
- mThreadPoolMyservice.stopSetM17();
- if (isRegularCleaning) {
- isRegularCleaning = false;
- mThreadPoolMyservice.stopSetM8();
- mThreadPoolMyservice.startSetM8();
- }
- } else if (messageEvent.getName().equals("M8")) {
- isCleanOK = true;
- mThreadPoolMyservice.stopSetM8();
- Log.d(TAG, "addCleanTime120event: 開始清洗");
- }
- mPoolAdvanceParameter.stopAll();
- mPoolAdvanceParameter.startALLRead();
- break;
- case nak:
- break;
- case disconnected:
- ToastUtil.showToast(messageEvent.getContent().toString());
- break;
- case response:
- ResponseFrame responseFrame = (ResponseFrame) messageEvent.getContent();
- String name = messageEvent.getName();
- if (responseFrame.isValidSum()) {
- //通过校验
- //1 获取本地存储的报警记录
- //2 将本地的报警记录进行对比
- //3 若没有的进行添加以及上传 没有的不管他
- //4 最好走完将他覆盖
- if (name.equals("M600")) {
- try {
- String result = AsciiUtils.asciiByteArray2HexStr(responseFrame.getData());
- List<String> strList = HexadecimalUtil.getStrList(result, 4);
- if (result.length() != 16) {
- return;
- }
- StringBuilder sb = new StringBuilder();
- for (int i = 0, len = strList.size(); i < len; i++) {
- String list = strList.get(i);
- String s1 = HexadecimalUtil.hexStringToByte(list);
- String s2 = HexadecimalUtil.flipString(s1, 8);
- sb.append(s2);
- }
- String s1 = sb.toString();
- List<String> lis = Arrays.asList(s1.split(""));
- ArrayList<String> list = new ArrayList(lis);
- list.remove(0);
- showErrorDialog(list);
- } catch (Exception e) {
- e.printStackTrace();
- }
- } else if (name.equals("X12")) {
- String results = HexadecimalUtil.hexStringToByte(AsciiUtils.asciiByteArray2HexStr(responseFrame.getData()));
- String s1 = HexadecimalUtil.flipString(results, 6).substring(0, TOTAL_SUM);//6个厕所蹲位
- List<String> lis = Arrays.asList(s1.split(""));//第0位会是空字符串
- ArrayList<String> result = new ArrayList(lis);//
- result.remove(0);
- if ("0".equals(result.get(0))) {
- //是否加入清洗
- synchronized (sCleaningLocationList) {//多线程操作需要加上同步锁
- isClean(0);
- }
- } else if ("1".equals(result.get(0))) {
- //记录
- synchronized (sCleaningLocationList) {//多线程操作需要加上同步锁
- addCleanTime(0);
- }
- }
- } else if (name.equals("D2")) {
- String data = String.valueOf(HexadecimalUtil.hex2dec(HexadecimalUtil.flipString(AsciiUtils.asciiByteArray2HexStr(responseFrame.getData())).get(0)));
- Log.d(TAG, "addCleanTimeD2event: "+data);
- switch (data) {
- case "1": //清洗完毕----清洗過程中還是清洗完畢
- /*if (isCleanOK) {
- synchronized (sCleaningLocationList) {//多线程操作需要加上同步锁
- isCleanOK = false;
- sCleaningLocationList.removeFirst();
- if (sCleaningLocationList.size() != 0) {
- cleanPositionNumX20(sCleaningLocationList.getFirst());
- }
- }
- }*/
- break;
- }
- } else {
- //通过校验
- Log.d(TAG, "event: " + name);
- String result = AsciiUtils.asciiByteArray2HexStr(responseFrame.getData());
- ArrayList<String> results = HexadecimalUtil.flipString(result);
- setAdvanced(name, results, mPoolAdvanceParameter);
- }
- break;
- }
- }
- }
- private void addCleanTime(int number) {
- Log.d(TAG, "厕所有人开始上厕所了。 ");
- /**
- * 1:
- * 将标志位变为0.,如果我为0 就不执行了。避免时间一直更新。
- * 存储当前的时间,到指定的集合中【标志位,0time】
- */
- HoleInformation holeInformation = sHoleInformationList.get(number);
- if (holeInformation.getState() != 1&&holeInformation.getState() != 3) {
- holeInformation.setState(1);//上厕所
- holeInformation.setTimeDuration(System.currentTimeMillis());//存储他上厕所的时间
- }else if(holeInformation.getState() == 1){
- if (System.currentTimeMillis() - holeInformation.getTimeDuration() > 20000) {
- //將其標誌位上過廁所。
- holeInformation.setState(3);
- Log.d(TAG, "addCleanTime: 上厕所超过20秒");
- }else{
- Log.d(TAG, "addCleanTime: 上厕所没超过20秒");
- }
- }
- }
- private void isClean(int number) {
- /**
- * 0:
- * 如果标志位为0,表示上一次是被上过厕所,根据存储的时间和现在的时间进行对比:
- * 超过20秒:【如果为1不判断是否超过20秒】
- * 表示没人在上厕所,那么判断是否上次为0,如果为0,那么就存储到集合里面开始清洗。
- * 如果为1,那么就什么都不做。
- * 没超过20秒:
- * 表示重新厕所了。
- * 设置一个变量存储为1,表示一直为1,没人。
- * 如果标志位为1,表示一直没上厕所
- * 什么都不做。
- */
- HoleInformation holeInformation = sHoleInformationList.get(number);
- Log.d(TAG, "x20event: " + holeInformation.toString());
- int state = holeInformation.getState();
- // if (state != 0) {
- if (state == 3) {
- holeInformation.setState(4);
- holeInformation.setOutTimeDuration(System.currentTimeMillis());//存储他上厕所的时间
- }else if(holeInformation.getState()==4){
- Log.d(TAG, "厕所event: " + holeInformation.getTimeDuration());
- Log.d(TAG, "厕所event: " + System.currentTimeMillis());
- if (System.currentTimeMillis() - holeInformation.getTimeDuration() > 20000) {
- //上廁所超過20秒,那麼將狀態改為上廁所狀態。
- if (sCleaningLocationList.size() == 0) {
- //开始清洗厕所。[往尾部添加]
- if (!sCleaningLocationList.contains(number)) {
- sCleaningLocationList.addLast(number);//如果里面已经有了,那么就需要在加入,并且添加
- cleanPositionNumX20(number);
- Log.d(TAG, "addCleanTimeisClean: "+"開始清洗");
- }
- } else {
- //todo 这里存在一个问题,就是如果刚好,没有清洗,并且长度大于0呢?存在多线程安全问题
- //那么我们就需要判断是否在清洗,通过一个标志位。清洗中,清洗完毕
- sCleaningLocationList.addLast(number);
- Log.d(TAG, "addCleanTime: 清洗集合個數大於0:");
- }
- holeInformation.setState(0);//改为2或者0都可以。
- Log.d(TAG, "addCleanTime: 出廁所使用超過5秒");
- } else {
- Log.d(TAG, "addCleanTime出厕所没有超过5秒: ");
- // holeInformation.setState(2);//为什么不是1,如果是1,那么
- }
- }else if (holeInformation.getState()==1){
- if (holeInformation.getState()!=2) {
- holeInformation.setState(2);
- Log.d(TAG, "addCleanTime重置狀態");
- }
- }
- /* }else{
- Log.d(TAG, "isClean: 不清洗廁所!");
- }*/
- }
- private void cleanPositionNumX20(int data) {
- mThreadPoolMyservice.stopWriteDD120();
- mThreadPoolMyservice.startWriteDD120("D120", "000" + data);
- }
- private boolean isOpenReadWarring = true;
- private List<String> errorListM600;
- //前进阻碍
- private boolean isadvance;
- //下降阻碍
- private boolean isdecline;
- private void showErrorDialog(ArrayList<String> list) {
- String json = (String) SharedPreferencesUtils.getParam("error_list_M600", "");
- Gson gson = new Gson();
- errorListM600 = gson.fromJson(json, new TypeToken<List<String>>() {
- }.getType());
- if (errorListM600 == null) {
- errorListM600 = new ArrayList<>();
- }
- ArrayList<String> errorList1 = new ArrayList<>();
- if (list.get(0).equals("1")) {
- //M600
- if (!isadvance) {
- showDialog(R.string.warring_forward_obstaclesM600);
- setError(0, UiUtil.getStringRes(R.string.warring_forward_obstaclesM600), errorList1, errorListM600, true);
- isadvance = true;
- }
- } else if (list.get(0).equals("0")) {
- //警告解除 弹窗消失
- if (isadvance) {
- if (warringDialog != null) {
- warringDialog.dismiss();
- isadvance = false;
- //延迟三秒再设置。
- new Handler().postDelayed(new Runnable() {
- @Override
- public void run() {
- SharedPreferencesUtils.setParam("isOpenReadWarring", true);
- }
- }, 3000);
- }
- }
- }
- if (list.get(1).equals("1")) {
- if (!isdecline) {
- //M601
- showDialog(R.string.warring_falling_blockM601);
- setError(1, UiUtil.getStringRes(R.string.warring_falling_blockM601), errorList1, errorListM600, true);
- isdecline = true;
- }
- } else if (list.get(1).equals("0")) {
- //警告解除 弹窗消失
- if (isdecline) {
- if (warringDialog != null) {
- warringDialog.dismiss();
- isdecline = false;
- //延迟三秒再设置。
- new Handler().postDelayed(new Runnable() {
- @Override
- public void run() {
- SharedPreferencesUtils.setParam("isOpenReadWarring", true);
- }
- }, 3000);
- }
- }
- }
- if (list.get(2).equals("1")) {
- //M602
- boolean isOpenReadWarring = (boolean) SharedPreferencesUtils.getParam("isOpenReadWarring", true);
- if (isOpenReadWarring) {
- showDialog(R.string.warring_x_axis_stepM602);
- setError(2, UiUtil.getStringRes(R.string.warring_x_axis_stepM602), errorList1, errorListM600, false);
- }
- }
- if (list.get(3).equals("1")) {
- //M603
- boolean isOpenReadWarring = (boolean) SharedPreferencesUtils.getParam("isOpenReadWarring", true);
- if (isOpenReadWarring) {
- showDialog(R.string.warring_y_axis_stepM603);
- setError(3, UiUtil.getStringRes(R.string.warring_y_axis_stepM603), errorList1, errorListM600, false);
- }
- }
- String s = gson.toJson(errorList1);
- SharedPreferencesUtils.setParam("error_list_M600", s);
- }
- private WarringDialog warringDialog;
- private void showDialog(int strId) {
- SharedPreferencesUtils.setParam("isOpenReadWarring", false);
- isOpenReadWarring = (boolean) SharedPreferencesUtils.getParam("isOpenReadWarring", true);
- if (warringDialog == null) {
- warringDialog = new WarringDialog(this);
- }
- warringDialog.setTvContent(strId);
- warringDialog.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);
- if (!warringDialog.isShowing()) {
- warringDialog.show();
- }
- }
- private WarringBeanDao warringBeanDao;
- /**
- * @param key
- * @param reason
- * @param errorList1 新建的
- * @param errorListM 存在本地的
- */
- public void setError(int key, String reason, ArrayList<String> errorList1, List<String> errorListM, boolean isM660) {
- long date = System.currentTimeMillis();
- SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
- Date curDate = new Date(date);
- String time = formatter.format(curDate);
- ErrorBean errorBean = new ErrorBean();
- errorBean.setTime(time);
- errorBean.setThingError(reason);
- errorBean.setRemark("");
- AddAlarmRecordBean addAlarmRecordBean = new AddAlarmRecordBean(reason, Heartbeat.deviceId, time, "");
- WarringBean warringBean = new WarringBean();
- warringBean.setTime(date);
- warringBean.setThingError(reason);
- warringBeanDao.insert(warringBean);
- errorList1.add(key + "");
- if (errorListM == null) {
- //只用于上传M666
- Log.d(TAG + "22", "setError: 上传");
- Gson gson = new Gson();
- String json = gson.toJson(addAlarmRecordBean);
- RequestBody body = RequestBody.create(okhttp3.MediaType.parse("application/json; charset=utf-8"), json);
- // //上传到服务器
- addSubscription(apiStores.addAlarmRecord(body), new ApiCallback<HttpResult<String>>() {
- @Override
- public void onSuccess(HttpResult<String> model) {
- if (model.getData() != null) {
- Log.d(TAG, "onSuccess: " + model);
- Log.d("AddAlarmRecordApi", "onNext: " + model.getData());
- }
- }
- @Override
- public void onFailure(String msg) {
- }
- @Override
- public void onFinish() {
- }
- });
- return;
- }
- if (!errorListM.contains(key + "")) {
- //不包含,上传
- Log.d(TAG + "22", "setError: 上传");
- Gson gson = new Gson();
- String json = gson.toJson(addAlarmRecordBean);
- RequestBody body = RequestBody.create(okhttp3.MediaType.parse("application/json; charset=utf-8"), json);
- //上传到服务器
- addSubscription(apiStores.addAlarmRecord(body), new ApiCallback<HttpResult<String>>() {
- @Override
- public void onSuccess(HttpResult<String> model) {
- Log.d(TAG, "onSuccess: " + model);
- if (model.getData() != null) {
- Log.d("AddAlarmRecordApi", "onNext: " + model.getData());
- }
- }
- @Override
- public void onFailure(String msg) {
- }
- @Override
- public void onFinish() {
- }
- });
- } else {
- Log.d(TAG + "22", "setError: 不上传");
- }
- }
- //-----------------------------------------------------------------------报警 end---------------------------------
- public void setAdvanced(String name, ArrayList<String> results, ThreadPoolAdvanceParameter threadGetParameter1) {
- if (name.equals("D426")) {
- if (!threadGetParameter1.isReceive1()) {
- threadGetParameter1.setReceive1(true);
- threadGetParameter1.stopReadD426();
- threadGetParameter1.getValues()[0] = String.valueOf(HexadecimalUtil.hex2dec(results.get(0)));
- }
- } else if (name.equals("D427")) {
- if (!threadGetParameter1.isReceive2()) {
- threadGetParameter1.setReceive2(true);
- threadGetParameter1.stopReadD427();
- threadGetParameter1.getValues()[1] = String.valueOf(HexadecimalUtil.hex2dec(results.get(0)));
- }
- } else if (name.equals("D428")) {
- if (!threadGetParameter1.isReceive3()) {
- threadGetParameter1.setReceive3(true);
- threadGetParameter1.stopReadD428();
- threadGetParameter1.getValues()[2] = String.valueOf(HexadecimalUtil.hex2dec(results.get(0)));
- }
- } else if (name.equals("D429")) {
- if (!threadGetParameter1.isReceive4()) {
- threadGetParameter1.setReceive4(true);
- //参数23 D278
- threadGetParameter1.stopReadD429();
- threadGetParameter1.getValues()[3] = String.valueOf(HexadecimalUtil.hex2dec(results.get(0)));
- }
- } else if (name.equals("D430")) {
- if (!threadGetParameter1.isReceive5()) {
- threadGetParameter1.setReceive5(true);
- threadGetParameter1.stopReadD430();
- threadGetParameter1.getValues()[4] = String.valueOf(HexadecimalUtil.hex2dec(results.get(0)));
- }
- } else if (name.equals("D431")) {
- if (!threadGetParameter1.isReceive6()) {
- threadGetParameter1.setReceive6(true);
- threadGetParameter1.stopReadD431();
- threadGetParameter1.getValues()[5] = String.valueOf(HexadecimalUtil.hex2dec(results.get(0)));
- }
- }
- if (threadGetParameter1.isReceive1() && threadGetParameter1.isReceive2() && threadGetParameter1.isReceive3() && threadGetParameter1.isReceive4() && threadGetParameter1.isReceive5() && threadGetParameter1.isReceive6()) {
- getDataSuccess();
- threadGetParameter1.setReceive1(false);
- threadGetParameter1.setReceive2(false);
- threadGetParameter1.setReceive3(false);
- threadGetParameter1.setReceive4(false);
- threadGetParameter1.setReceive5(false);
- threadGetParameter1.setReceive6(false);
- }
- }
- public void getDataSuccess() {
- String[] values = mPoolAdvanceParameter.getValues();
- ArrayList<ParameterBean> parameterBeans = new ArrayList<>();
- String[] paraAddress = {
- "D426", "D427", "D428", "D429",
- "D430", "D431"};
- for (int i = 0; i < values.length; i++) {
- parameterBeans.add(new ParameterBean(paraAddress[i], values[i]));
- }
- updateAdvanced(parameterBeans);
- }
- public void updateAdvanced(ArrayList<ParameterBean> parameterBeans) {
- String url = "/api/app_equipment/index/updateParam/1/" + Heartbeat.deviceId + ".htm";
- Gson gson = new Gson();
- String json = gson.toJson(parameterBeans);
- RequestBody body = RequestBody.create(okhttp3.MediaType.parse("application/json; charset=utf-8"), json);
- addSubscription(apiStores.updateParamApi(url, body), new ApiCallback<HttpResult<String>>() {
- @Override
- public void onSuccess(HttpResult<String> model) {
- Log.d(TAG, "onSuccess: " + model);
- }
- @Override
- public void onFailure(String msg) {
- }
- @Override
- public void onFinish() {
- }
- });
- }
- }
|