MQService.java 63 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397
  1. package com.bgy.autosale.payutil;
  2. import static com.hboxs.base_library.base.BaseApplication.getContext;
  3. import static com.hboxs.base_library.util.ToastUtil.showToast;
  4. import android.annotation.SuppressLint;
  5. import android.app.Service;
  6. import android.content.BroadcastReceiver;
  7. import android.content.Context;
  8. import android.content.Intent;
  9. import android.content.IntentFilter;
  10. import android.media.AudioManager;
  11. import android.net.ConnectivityManager;
  12. import android.net.NetworkInfo;
  13. import android.net.wifi.WifiManager;
  14. import android.os.Build;
  15. import android.os.Bundle;
  16. import android.os.Handler;
  17. import android.os.IBinder;
  18. import android.os.Message;
  19. import android.support.annotation.RequiresApi;
  20. import android.support.v4.app.Fragment;
  21. import android.support.v4.app.FragmentTransaction;
  22. import android.util.Log;
  23. import com.alibaba.android.arouter.facade.annotation.Route;
  24. import com.bgy.autosale.App;
  25. import com.bgy.autosale.Constant;
  26. import com.bgy.autosale.IceCreamDeviceConstants;
  27. import com.bgy.autosale.R;
  28. import com.bgy.autosale.RemoteSupportService;
  29. import com.bgy.autosale.entitys.MakeIceCreamBean;
  30. import com.bgy.autosale.helpers.CommunicationHelper;
  31. import com.bgy.autosale.interfaces.SendCallback;
  32. import com.bgy.autosale.ui.consumer.PaySuccessFragment;
  33. import com.bgy.autosale.ui.operator.LockActivity;
  34. import com.bgy.autosale.ui.MainActivity;
  35. import com.bgy.autosale.ui.operator.fragments.ControlFragment;
  36. import com.bgy.autosale.ui.operator.fragments.PriceFragment;
  37. import com.bgy.autosale.utils.SPUtils;
  38. import com.example.spunsugar.http.bean.GetAdBean;
  39. import com.hboxs.base_library.event.ApiMessageEvent;
  40. import com.google.gson.Gson;
  41. import com.google.gson.reflect.TypeToken;
  42. import com.hboxs.base_library.base.IView;
  43. import com.hboxs.base_library.beans.ProductsBean;
  44. import com.hboxs.base_library.constant.BaseConstant;
  45. import com.hboxs.base_library.constant.Global;
  46. import com.hboxs.base_library.constant.Heartbeat;
  47. import com.hboxs.base_library.constant.Name;
  48. import com.hboxs.base_library.http.NoPayOrderApi;
  49. import com.hboxs.base_library.http.NoPayOrderStringApi;
  50. import com.hboxs.base_library.http.exception.BaseException;
  51. import com.hboxs.base_library.http.exception.ExceptionFactory;
  52. import com.hboxs.base_library.http.observer.HttpResultNotActivityObserver;
  53. import com.hboxs.base_library.http.observer.HttpResultObserver;
  54. import com.hboxs.base_library.http.response.HttpResult;
  55. import com.hboxs.base_library.http.response.HttpResultHandler;
  56. import com.hboxs.base_library.http.response.HttpStringResultHandler;
  57. import com.hboxs.base_library.util.FileUtil;
  58. import com.hboxs.base_library.util.LogUtil;
  59. import com.hboxs.base_library.util.LogUtils;
  60. import com.hboxs.base_library.util.SharedPreferencesUtils;
  61. import com.hboxs.base_library.util.ToastUtil;
  62. import com.hboxs.base_library.util.UiUtil;
  63. import com.orhanobut.hawk.Hawk;
  64. import com.rabbitmq.client.AMQP;
  65. import com.rabbitmq.client.Channel;
  66. import com.rabbitmq.client.Connection;
  67. import com.rabbitmq.client.ConnectionFactory;
  68. import com.rabbitmq.client.DefaultConsumer;
  69. import com.rabbitmq.client.Envelope;
  70. import org.greenrobot.eventbus.EventBus;
  71. import java.io.ByteArrayOutputStream;
  72. import java.io.DataInputStream;
  73. import java.io.File;
  74. import java.io.FileInputStream;
  75. import java.io.FileOutputStream;
  76. import java.io.IOException;
  77. import java.io.InputStream;
  78. import java.io.OutputStream;
  79. import java.net.HttpURLConnection;
  80. import java.net.URL;
  81. import java.text.SimpleDateFormat;
  82. import java.util.ArrayList;
  83. import java.util.Arrays;
  84. import java.util.Date;
  85. import java.util.HashMap;
  86. import java.util.LinkedList;
  87. import java.util.List;
  88. import java.util.Map;
  89. import io.reactivex.Observable;
  90. import io.reactivex.android.schedulers.AndroidSchedulers;
  91. import io.reactivex.disposables.CompositeDisposable;
  92. import io.reactivex.observers.DisposableObserver;
  93. import io.reactivex.schedulers.Schedulers;
  94. @Route(path = "/module_app/mqservice")
  95. public class MQService extends Service implements SendCallback {
  96. private static final String TAG = "MQService";
  97. ConnectionFactory factory;
  98. private String userName = "admin";
  99. private String passWord = "admin";
  100. private String hostName = "112.74.63.148";
  101. // private String hostName = "192.168.0.184";//
  102. private int portNum = 5672;
  103. private String queueName = Heartbeat.deviceId; //队列
  104. public static volatile Boolean connect = false;
  105. final Handler handler = new Handler() {
  106. @Override
  107. public void handleMessage(Message msg) {
  108. Log.d(TAG, "handleMessage: " + msg);
  109. getMessage(msg);
  110. }
  111. };
  112. public int pushNumber = 0;
  113. private List<PriceFragment.PriceBean> priceBeans; //保存价格
  114. private File file = new File(FileUtil.FILEPATH + FileUtil.getFileName());
  115. private File fileMkdirs = new File(FileUtil.FILEPATH);
  116. private SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  117. private String date = format.format(new Date(System.currentTimeMillis()));
  118. private FileOutputStream mFileOutputStream;
  119. private boolean isSetSuccess = false; //是否置为成功
  120. private boolean isRstSuccess = false; //是否复位成功
  121. private NetWorkBroadCastReciver mNetWorkBroadCastReciver;
  122. private boolean isManualMake = false;
  123. @SuppressLint("NewApi")
  124. private void getMessage(Message msg) {
  125. String message = msg.getData().getString("msg");
  126. Gson gson = new Gson();
  127. Log.d(TAG, ":BJQXUserlogin getMessage: " + message);
  128. BaseBean baseBean = gson.fromJson(message, BaseBean.class);
  129. Log.d(TAG, baseBean.getKind() + ":BJQXUserlogin getMessage: " + message + baseBean);
  130. String kind = baseBean.getKind();
  131. // if (TextUtils.isEmpty(Heartbeat.managerId)) return;
  132. Log.d(TAG, "MQ getMessage: " + kind);
  133. switch (kind) {
  134. //显示花型
  135. case "updateProductsShow":
  136. // updateProductsShow(gson, baseBean, kind);
  137. break;
  138. case "products":
  139. //保存价格到本地
  140. savePriceData(gson, baseBean, kind);
  141. break;
  142. case "guestPwd":
  143. // savePas(gson, baseBean, Name.GUEST);
  144. break;
  145. case "adminPwd":
  146. savePas(gson, baseBean, Name.ADMIN);
  147. break;
  148. case "pay_success":
  149. pay(gson, baseBean, kind);
  150. break;
  151. case "statusType"://连接服务器
  152. statusType(gson, baseBean, kind);
  153. break;
  154. case "push":
  155. //更新广告
  156. // String json = baseBean.getKind_data();
  157. // if (json.equals("更新广告")) {
  158. // saveAd();
  159. // }
  160. break;
  161. case "phone":
  162. //联系方式
  163. saveContacts(gson, baseBean, kind);
  164. break;
  165. case "pushTimeRule"://广告是按照这里来的。
  166. //广告规则
  167. // if (Hawk.get(Name.ADVERTISING_RULES, true)) {
  168. // Log.d(TAG, "pushTimeRule etMessage1: ");
  169. // changeAdRules(gson, baseBean, kind);
  170. // } else {
  171. // if (pushNumber > 7) {
  172. // Log.d(TAG, "pushTimeRule etMessage2: ");
  173. // changeAdRules(gson, baseBean, kind);
  174. //
  175. // } else {
  176. // pushNumber++;
  177. //
  178. // }
  179. // }
  180. break;
  181. case "machineReset":
  182. CommunicationHelper.getInstance().sendControl(IceCreamDeviceConstants.ORDER_RESET, this);
  183. break;
  184. case "eqeStatus":
  185. //远程开关机
  186. openOrClose(gson, baseBean, kind);
  187. break;
  188. case "block":
  189. //锁机
  190. // block(baseBean.getKind_data());
  191. break;
  192. case "is_sleep":
  193. // LogUtils.logWrite("远程操作休眠");
  194. sleep(baseBean.getKind_data());
  195. break;
  196. case "Param"://远程修改参数
  197. // UpdateAloneParam(baseBean.getKind_data());
  198. // LogUtils.logWrite("远程修改参数:" + baseBean.getKind_data());
  199. break;
  200. case "tuoji":
  201. //清除连接成功的数据
  202. // SharedPreferencesUtils.setParam(Name.CONNECT_STATE, 0);
  203. // Heartbeat.managerId = "";
  204. // SharedPreferencesUtils.setParam(Name.SYSTEM_ID, Heartbeat.managerId);
  205. break;
  206. case "log":
  207. // LogUtil.d(TAG, "logdata" + baseBean.getKind_data());
  208. // 远程上传日志文件
  209. uploadLogApi(baseBean.getKind_data());
  210. break;
  211. case "onoffstatus":
  212. // Log.d(TAG, "onReceiveMessageData: onoffstatusonoffstatus");
  213. // updateEqeStatus((Integer) SharedPreferencesUtils.getParam("open", 0));
  214. break;
  215. case "updateBootTime":
  216. // LogUtil.d(TAG, "onReceiveMessageData: updateBootTime:" + baseBean.getKind_data());
  217. // updateOfforBootTime(baseBean, "boot");
  218. break;
  219. case "updateOffTime":
  220. // LogUtil.d(TAG, "onReceiveMessageData: updateOffTime:" + baseBean.getKind_data());
  221. // updateOfforBootTime(baseBean, "off");
  222. break;
  223. case "pay_faile":
  224. // todo 反扫失败,我们需要提示支付失败,请重新提供码
  225. // EventBus.getDefault().post(new ApiMessageEvent("pay_faile", null));
  226. break;
  227. case "eliminate":
  228. //todo 消除报警,并且告知后台消除报警成功。
  229. // if (IceCreamErrorUtils.getInstance().getErrorMessage()!=null){
  230. // EventBus.getDefault().post(new ApiMessageEvent(Name.WARNING_ALARM,IceCreamErrorUtils.getInstance().getErrorMessage()));
  231. // }
  232. eliminateApi(gson, baseBean, kind);
  233. break;
  234. case "dosugar":
  235. //远程制作棉花糖
  236. // CommunicationHelper.getInstance().sendControl(IceCreamDeviceConstants.ORDER_OPERATE_CLEAN, this);
  237. // EventBus.getDefault().post(new ApiMessageEvent("dosugar", baseBean.getKind_data()));
  238. LinkedList<MakeIceCreamBean> iceCreamOrders = new LinkedList<>();
  239. MakeIceCreamBean detail = new MakeIceCreamBean();
  240. String strData = baseBean.getKind_data();
  241. String[] stringArray = strData.replaceAll("[\\[\\] ]", "").split(",");
  242. detail.makeCodes= Arrays.stream(stringArray)
  243. .mapToInt(Integer::parseInt)
  244. .toArray();
  245. iceCreamOrders.add(detail);
  246. Log.d(TAG, "getMessage: dosugar"+iceCreamOrders);
  247. CommunicationHelper.getInstance().setMakingIceCreams(iceCreamOrders);
  248. break;
  249. case "alarmClock":
  250. //远程星期调节闹钟
  251. // if (!Hawk.get(Name.ALARMCLOCK_TYPE, false)) {
  252. // parseWeekTime(gson, baseBean);
  253. // }
  254. //EventBus.getDefault().post(new ApiMessageEvent("alarmClock", baseBean.getKind_data()));
  255. break;
  256. case "volume":
  257. String kind_data = baseBean.getKind_data();
  258. try {
  259. int i = Integer.parseInt(kind_data);
  260. if (i >= 0 && i <= 15) {
  261. AudioManager am = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
  262. am.setStreamVolume(AudioManager.STREAM_MUSIC, i, 0);
  263. LogUtils.logWrite("MQ的音量:" + i);
  264. }
  265. } catch (Exception e) {
  266. }
  267. break;
  268. case "selfName"://客户自填地址
  269. // PushToinform(Name.SELFNAME, baseBean.getKind_data());
  270. break;
  271. case "operational"://运营名字:联系电话。
  272. // PushToinform(Name.OPERATIONAL, baseBean.getKind_data());
  273. break;
  274. case "qrCodeImgUrl"://公众号图片地址:http://47.112.127.131/img/qr.jpg
  275. // qrCodeImgUrl(kind, baseBean.getKind_data());
  276. break;
  277. case "flowers"://远程修改花型
  278. // if (Global.isInProduction) {//是否支持修改,如果支持就修改。
  279. // //首先判断是否支持,如果支持,直接修改plc,plc修改成功后,通知后台,通知成功后,再次进行增加花型。
  280. // Log.d(TAG, "flowers getMessage: " + kind + ":" + baseBean.getKind_data());
  281. // EventBus.getDefault().post(new ApiMessageEvent("flowers", baseBean.getKind_data()));
  282. // }
  283. break;
  284. case "payType":
  285. //支付方式
  286. // savaPayType(gson, baseBean, kind);
  287. break;
  288. case "updateLogo":
  289. //修改logo
  290. updateLogo(gson, baseBean, kind);
  291. EventBus.getDefault().post(new ApiMessageEvent("updateUI", "1"));
  292. break;
  293. case "updateProductsPrice"://更新价格
  294. getProductPrice();
  295. break;
  296. case "humidityParameters"://区间参数
  297. // humidityParameters(baseBean.getKind_data());
  298. // LogUtils.logWrite("远程参数:" + baseBean.getKind_data());
  299. break;
  300. case "buliao"://补料
  301. // EventBus.getDefault().post(new ApiMessageEvent("buliao", baseBean.getKind_data()));
  302. break;
  303. case "appStatusType"://获取app的状态
  304. // Log.d(TAG, "appStatusType getMessage: appStatusTypeappStatusTypeappStatusTypeappStatusType");
  305. appStatusType(gson, baseBean, kind);
  306. break;
  307. case "indoor"://远程开关内门
  308. // EventBus.getDefault().post(new ApiMessageEvent("indoor", baseBean.getKind_data()));
  309. break;
  310. case "outdoor"://远程开关外门
  311. CommunicationHelper.getInstance().sendControl(IceCreamDeviceConstants.ORDER_DOOR_CLEAR, this);
  312. break;
  313. case "youxun_pay_success":
  314. // pay(gson, baseBean, kind);
  315. break;
  316. case "sleepDesc":
  317. String hibernation = baseBean.getKind_data();
  318. sleepDesc(hibernation);
  319. break;
  320. case "paymentType"://修改支付方式
  321. // String kind_data1 = baseBean.getKind_data();
  322. // if (kind_data1 != null) {
  323. // EventBus.getDefault().post(new ApiMessageEvent("paymentType", baseBean.getKind_data()));
  324. // }
  325. break;
  326. case "cardPayXCX":
  327. // LogUtils.logWrite("cardPayXCX:" + baseBean.getKind_data());
  328. // EventBus.getDefault().post(new ApiMessageEvent("cardPayXCX", baseBean.getKind_data()));
  329. break;
  330. case "updateApk":
  331. // EventBus.getDefault().post(new ApiMessageEvent("updateApk", baseBean.getKind_data()));
  332. break;
  333. case "refuse_success"://删除排队中的某个订单
  334. // EventBus.getDefault().post(new ApiMessageEvent("refuse_success", baseBean.getKind_data()));
  335. break;
  336. case "couponStatus":// 关闭优惠券识别字符串 0:关闭,1:开启
  337. // EventBus.getDefault().post(new ApiMessageEvent("couponStatus", baseBean.getKind_data()));
  338. break;
  339. case "restartAndroid"://重启安卓屏
  340. try {
  341. Process proc = Runtime.getRuntime().exec(new String[]{"su", "-c", "reboot"});
  342. proc.waitFor();
  343. } catch (Exception ex) {
  344. ex.printStackTrace();
  345. }
  346. break;
  347. case "workingMode"://雪糕机的工作模式(0:制冷,1:搅拌,2:保鲜,3:解冻)
  348. String mode = baseBean.getKind_data();
  349. if (mode.equals("0")) {
  350. LogUtils.logWrite("远程制冷");
  351. CommunicationHelper.getInstance().sendControl(IceCreamDeviceConstants.ORDER_REFRIGERATION, this);
  352. } else if (mode.equals("1")) {
  353. LogUtils.logWrite("远程搅拌");
  354. CommunicationHelper.getInstance().sendControl(IceCreamDeviceConstants.ORDER_CLEAN, this);
  355. } else if (mode.equals("2")) {
  356. LogUtils.logWrite("远程保鲜");
  357. CommunicationHelper.getInstance().sendControl(IceCreamDeviceConstants.ORDER_KEEP_FRESH, this);
  358. } else if (mode.equals("3")) {
  359. LogUtils.logWrite("远程解冻");
  360. CommunicationHelper.getInstance().sendControl(IceCreamDeviceConstants.ORDER_STOP, this);
  361. new Handler().postDelayed(new Runnable() {
  362. @Override
  363. public void run() {
  364. CommunicationHelper.getInstance().sendControl(IceCreamDeviceConstants.ORDER_THAW, MQService.this);
  365. }
  366. },500);
  367. }
  368. break;
  369. default:
  370. break;
  371. }
  372. }
  373. private boolean isManualMode() {
  374. return App.app.payChannel != Constant.PAY_FREE;
  375. }
  376. public void getProductPrice() {
  377. HashMap<String, String> params = new HashMap<>();
  378. params.put("clientId", Heartbeat.deviceId);
  379. addSubscriptionNew(NoPayOrderStringApi.api.getproducts(params), String.class,
  380. new HttpResultObserver<String>(view, getApplicationContext()) {
  381. @Override
  382. public void onNext(String result) {
  383. Log.d(TAG, "getProductPrice type onNext: " + result);
  384. Gson gson = new Gson();
  385. List<ProductsBean> userList = gson.fromJson(result, new TypeToken<List<ProductsBean>>() {
  386. }.getType());
  387. if (result != null) {
  388. ArrayList<PriceFragment.PriceBean> priceBeans = Hawk.get("PRICEBEAN", new ArrayList<PriceFragment.PriceBean>());
  389. //取出list
  390. for (ProductsBean productsBean : userList) {
  391. String productName;
  392. String no = productsBean.getNo();
  393. if (productsBean.getName() != null && !"".equals(productsBean.getName())) {
  394. productName = productsBean.getName();
  395. } else {
  396. productName = productsBean.getProductName();
  397. }
  398. Log.d(TAG, ":1getproducts onNext: " + productName + ":" + productsBean.getRmbPrice());
  399. for (PriceFragment.PriceBean priceBean : priceBeans) {
  400. Log.d(TAG, "getNoonNext: " + priceBean.getNo() + ":" + no);
  401. if (priceBean.getNo().equals(no)) {
  402. priceBean.setPriceKey(String.valueOf(productsBean.getRmbPrice()));
  403. }
  404. if (priceBean.getChineseName().equals(productName)) {
  405. priceBean.setPriceKey(String.valueOf(productsBean.getRmbPrice()));
  406. Log.d(TAG, "PriceFragment.PriceBean onNext: " + priceBean.getNameKey() + ":" + String.valueOf(productsBean.getRmbPrice()));
  407. }
  408. }
  409. }
  410. Hawk.put("PRICEBEAN", priceBeans);
  411. for (int i = 0; i < 6; i++) {
  412. SPUtils.getInstance(App.app).putString((PriceFragment.ProductAbout.priceKey[i]), priceBeans.get(i).getPriceKey());
  413. }
  414. EventBus.getDefault().post(new ApiMessageEvent("updateUI", 1));
  415. }
  416. }
  417. @Override
  418. public void onError(Throwable t) {
  419. super.onError(t);
  420. Log.d(TAG, "getProductPrice onError: " + t.getMessage());
  421. BaseException exception = ExceptionFactory.create(t);
  422. }
  423. });
  424. }
  425. private void pay(Gson gson, BaseBean baseBean, String kind) {
  426. //支付成功
  427. String json = baseBean.getKind_data();
  428. PaySucessBean paySucessBean = gson.fromJson(json, PaySucessBean.class);
  429. PaySuccessConstant.sn = paySucessBean.getSn();
  430. PaySuccessConstant.productName = paySucessBean.getProductName();
  431. LogUtils.logWrite("第一步:存儲信息,支付成功");
  432. EventBus.getDefault().post(new ApiMessageEvent(kind, "7"));
  433. }
  434. private void cheeckConnectState(boolean isFrist) {
  435. int connectState = (int) SharedPreferencesUtils.getParam(Name.CONNECT_STATE, -1);
  436. LogUtil.d(TAG, "cheeckConnectState: 当前状态为" + connectState);
  437. Log.e(TAG, "cheeckConnectState: " + connectState);
  438. if (connectState == 2) {
  439. String param = (String) SharedPreferencesUtils.getParam(Name.SYSTEM_ID, "");
  440. Log.e(TAG, isFrist + ":cheeckConnectState:连接成功: " + connectState);
  441. SharedPreferencesUtils.setParam(Name.CONNECT_STATE, 2);
  442. Heartbeat.deviceId = FileUtil.getDeviceId();
  443. if (isFrist) {
  444. //开始心跳
  445. Intent intent = new Intent(this, RemoteSupportService.class);
  446. Bundle bundle = new Bundle();
  447. bundle.putInt("heartbeat", 3);
  448. intent.putExtras(bundle);
  449. startService(intent);
  450. }
  451. if (Hawk.get("show_out", null) == null ||
  452. Hawk.get("showAdA", null) == null) {
  453. EventBus.getDefault().post(new ApiMessageEvent("rule", null));
  454. }
  455. }
  456. }
  457. private void appStatusType(Gson gson, BaseBean baseBean, String kind) {
  458. Log.d(TAG, "appStatusType: " + baseBean);
  459. String json = baseBean.getKind_data();
  460. Log.d(TAG, "appStatusType: " + json);
  461. AppStatusType appStatusType = gson.fromJson(json, AppStatusType.class);
  462. Log.d(TAG, "appStatusType: " + appStatusType);
  463. if (appStatusType.getStatus().equals("rejected")) {
  464. //拒绝
  465. showToast(UiUtil.getStringRes(R.string.rejected));
  466. SharedPreferencesUtils.setParam(Name.CONNECT_STATE, 0);
  467. Log.e(TAG, "statusType: 申请拒绝");
  468. } else if (appStatusType.getStatus().equals("agreed")) {
  469. //申请通过
  470. showToast(UiUtil.getStringRes(R.string.rejected1));
  471. SharedPreferencesUtils.setParam(Name.CONNECT_STATE, 2);
  472. Log.e(TAG, "statusType: 申请通过");
  473. SharedPreferencesUtils.setParam(Name.SYSTEM_ID, appStatusType.getManagerId());
  474. } else if (appStatusType.getStatus().equals("agreed1")) {
  475. showToast("第二次");
  476. showToast(UiUtil.getStringRes(R.string.rejected1));
  477. SharedPreferencesUtils.setParam(Name.CONNECT_STATE, 2);
  478. Log.e(TAG, "statusType: 申请通过");
  479. SharedPreferencesUtils.setParam(Name.SYSTEM_ID, appStatusType.getManagerId());
  480. // interService 不能弹出弹窗 在 service中弹出
  481. }
  482. EventBus.getDefault().post(new ApiMessageEvent("statusType", null));
  483. cheeckConnectState(true);
  484. }
  485. /**
  486. * 初始化回调
  487. *
  488. * @param gson
  489. * @param baseBean
  490. * @param kind
  491. */
  492. private void statusType(Gson gson, BaseBean baseBean, String kind) {
  493. String json = baseBean.getKind_data();
  494. String s = gson.fromJson(json, String.class);
  495. if (s.equals("rejected")) {
  496. //拒绝
  497. showToast(UiUtil.getStringRes(R.string.rejected));
  498. SharedPreferencesUtils.setParam(Name.CONNECT_STATE, 0);
  499. Log.e(TAG, "statusType: 申请拒绝");
  500. } else if (s.equals("agreed")) {
  501. //申请通过
  502. showToast(UiUtil.getStringRes(R.string.rejected1));
  503. SharedPreferencesUtils.setParam(Name.CONNECT_STATE, 2);
  504. Log.e(TAG, "statusType: 申请通过");
  505. SharedPreferencesUtils.setParam(Name.SYSTEM_ID, Heartbeat.managerId);
  506. } else if (s.equals("agreed1")) {
  507. showToast("第二次");
  508. showToast(UiUtil.getStringRes(R.string.rejected1));
  509. SharedPreferencesUtils.setParam(Name.CONNECT_STATE, 2);
  510. Log.e(TAG, "statusType: 申请通过");
  511. SharedPreferencesUtils.setParam(Name.SYSTEM_ID, Heartbeat.managerId);
  512. // interService 不能弹出弹窗 在 service中弹出
  513. EventBus.getDefault().post(new ApiMessageEvent(kind + "1", null));
  514. }
  515. EventBus.getDefault().post(new ApiMessageEvent(kind, null));
  516. }
  517. //增加一个前置条件
  518. private void saveAdRulesBefore(String id) {
  519. //如果id为1,并且这里是全屏,那么就推送235的
  520. if (Hawk.get(Name.DEFAULT_FULL_SCREEN, true) && "1".equals(id) && !Hawk.get(Name.PLAY_MODE, false)) {
  521. saveAdRules("779");
  522. } else {
  523. saveAdRules(id);
  524. }
  525. }
  526. /**
  527. * 保存广告id
  528. */
  529. private void saveAdRules(String id) {
  530. Long lid = Long.valueOf(id);
  531. Map<String, Long> params = new HashMap<>();
  532. params.put("id", lid);
  533. addSubscriptionNew(NoPayOrderStringApi.api.getTimeRule(params), String.class,
  534. new HttpResultNotActivityObserver<String>(view, getApplicationContext()) {
  535. @Override
  536. public void onNext(String s) {
  537. LogUtil.d(TAG, "1ad_rules s ->" + s);
  538. //保存广告规则json
  539. SharedPreferencesUtils.setParam("ad_time_rule", s);
  540. //广告数据
  541. rule(s);
  542. //发送设备id
  543. getAdByEquipment(s);
  544. LogUtil.d(TAG, "onNextgetAdByEquipment: ");
  545. }
  546. @Override
  547. public void onError(Throwable t) {
  548. super.onError(t);
  549. Log.d(TAG, "onError: ");
  550. BaseException exception = ExceptionFactory.create(t);
  551. }
  552. });
  553. }
  554. int ruleNumber = 0;
  555. /**
  556. * 和旧系统不同之处
  557. *
  558. * @param s
  559. */
  560. private void rule(String s) {
  561. Gson gson = new Gson();
  562. List<String> list = gson.fromJson(s, new TypeToken<List<String>>() {
  563. }.getType());
  564. //每个id对应的时间数
  565. Map<String, String> adRulesMap = new HashMap<>();
  566. List<GetAdBean> adRulesList = new ArrayList<>();
  567. for (int j = 0; j < list.size(); j++) {
  568. //每个规则里对应的广告
  569. String ad = list.get(j);
  570. Map<String, String> params = new HashMap<>();
  571. params.put("id", ad);
  572. addSubscription(NoPayOrderApi.api.getAd(params).compose(HttpResultHandler.<String>transformer()),
  573. new HttpResultNotActivityObserver<String>(view, getApplicationContext()) {
  574. @Override
  575. public void onNext(String s) {
  576. ruleNumber++;
  577. List<GetAdBean> userList = gson.fromJson(s, new TypeToken<List<GetAdBean>>() {
  578. }.getType());
  579. String model = Hawk.get(Name.MACHINE_TYPE, Name.SI320);
  580. GetAdBean getAdBean = userList.get(0);
  581. String equipmentType = getAdBean.getEquipmentType();
  582. if (Global.isVersions == 2) {
  583. //国外330
  584. if (equipmentType.contains("en")) {//必须是国外的
  585. if (model.equals("SI320")) {
  586. if (equipmentType.equals("SI320")) {
  587. adRulesMap.put(ad, s);
  588. adRulesList.add(userList.get(0));
  589. }
  590. } else if (model.equals("SI320")) {
  591. if (equipmentType.equals("SI320")) {
  592. adRulesMap.put(ad, s);
  593. adRulesList.add(userList.get(0));
  594. }
  595. }
  596. }
  597. } else if (Global.isVersions == 1) {
  598. if (!equipmentType.contains("en")) {//必须是国内的
  599. if (model.equals("SI320")) {
  600. if (equipmentType.equals("SI320")) {
  601. adRulesMap.put(ad, s);
  602. adRulesList.add(userList.get(0));
  603. }
  604. } else if (model.equals("SI320")) {
  605. if (equipmentType.equals("SI320")) {
  606. adRulesMap.put(ad, s);
  607. adRulesList.add(userList.get(0));
  608. }
  609. }
  610. }
  611. }
  612. Log.d(TAG, list.size() + ":getAd onNext: " + ruleNumber + ":" + s);
  613. if (ruleNumber == list.size()) {
  614. Log.d(TAG, "getAd onNext: ");
  615. ruleNumber = 0;
  616. //说明全部请求完成
  617. Hawk.put("ad_rules_map", adRulesMap);
  618. Log.d(TAG, "ad_rules_map onNext: " + adRulesMap.size());
  619. String s1 = gson.toJson(adRulesList);
  620. // EventBus.getDefault().post(new ApiMessageEvent("DOWNKOADADCID_NEW", adRulesList));
  621. Log.d(TAG, adRulesList.size() + ":getAd onNext2: " + s1);
  622. }
  623. }
  624. @Override
  625. public void onError(Throwable t) {
  626. super.onError(t);
  627. BaseException exception = ExceptionFactory.create(t);
  628. }
  629. });
  630. }
  631. //保存对应的id对应的广告规则
  632. }
  633. /**
  634. * 上传设备id和型号 和旧系统不同之处
  635. */
  636. int downRuleNumber = 0;
  637. private void getAdByEquipment(String s) {
  638. Gson gson = new Gson();
  639. List<String> list = gson.fromJson(s, new TypeToken<List<String>>() {
  640. }.getType());
  641. //每个id对应的时间数
  642. Map<String, String> adRulesMap = new HashMap<>();
  643. List<GetAdBean> adRulesList = new ArrayList<>();
  644. for (int j = 0; j < list.size(); j++) {
  645. //每个规则里对应的广告
  646. String ad = list.get(j);
  647. Map<String, String> params = new HashMap<>();
  648. params.put("id", ad);
  649. addSubscription(NoPayOrderApi.api.getAd(params).compose(HttpResultHandler.<String>transformer()),
  650. new HttpResultNotActivityObserver<String>(view, getApplicationContext()) {
  651. @Override
  652. public void onNext(String s) {
  653. downRuleNumber++;
  654. List<GetAdBean> userList = gson.fromJson(s, new TypeToken<List<GetAdBean>>() {
  655. }.getType());
  656. String model = Hawk.get(Name.MACHINE_TYPE, Name.SI320);
  657. GetAdBean getAdBean = userList.get(0);
  658. String equipmentType = getAdBean.getEquipmentType();
  659. if (Global.isVersions == 2) {
  660. //国外330
  661. if (equipmentType.contains("en")) {//必须是国外的
  662. if (model.equals("SI320")) {
  663. if (equipmentType.equals("SI320en")) {
  664. adRulesMap.put(ad, s);
  665. adRulesList.add(userList.get(0));
  666. }
  667. } else if (model.equals("SI320")) {
  668. if (equipmentType.equals("SI320en")) {
  669. adRulesMap.put(ad, s);
  670. adRulesList.add(userList.get(0));
  671. }
  672. }
  673. }
  674. } else if (Global.isVersions == 1) {
  675. if (!equipmentType.contains("en")) {//必须是国内的
  676. if (model.equals("SI320")) {
  677. if (equipmentType.equals("SI320")) {
  678. adRulesMap.put(ad, s);
  679. adRulesList.add(userList.get(0));
  680. }
  681. } else if (model.equals("SI320")) {
  682. if (equipmentType.equals("SI320")) {
  683. adRulesMap.put(ad, s);
  684. adRulesList.add(userList.get(0));
  685. }
  686. }
  687. }
  688. }
  689. Log.d(TAG, list.size() + ":11getAd onNext: " + downRuleNumber + ":" + s);
  690. if (downRuleNumber == list.size()) {
  691. Log.d(TAG, "getAd onNext: ");
  692. downRuleNumber = 0;
  693. //说明全部请求完成
  694. Hawk.put("ad_rules_map", adRulesMap);
  695. Log.d(TAG, "ad_rules_map onNext: " + adRulesMap.size());
  696. String s1 = gson.toJson(adRulesList);
  697. EventBus.getDefault().post(new ApiMessageEvent("DOWNKOADADCID_NEW", adRulesList));
  698. Log.d(TAG, adRulesList.size() + ":11getAd onNext2: " + s1);
  699. }
  700. }
  701. @Override
  702. public void onError(Throwable t) {
  703. super.onError(t);
  704. BaseException exception = ExceptionFactory.create(t);
  705. }
  706. });
  707. }
  708. }
  709. @Override
  710. public IBinder onBind(Intent intent) {
  711. return null;
  712. }
  713. @Override
  714. public void onCreate() {
  715. super.onCreate();
  716. Log.d(TAG, "onCreate......");
  717. //连接设置
  718. setupConnectionFactory();
  719. //开启消费者线程
  720. //subscribe(incomingMessageHandler);
  721. basicConsume(1);
  722. mNetWorkBroadCastReciver = new NetWorkBroadCastReciver();
  723. IntentFilter intentFilter = new IntentFilter();
  724. intentFilter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);
  725. intentFilter.addAction(WifiManager.NETWORK_STATE_CHANGED_ACTION);
  726. intentFilter.addAction(WifiManager.WIFI_STATE_CHANGED_ACTION);
  727. intentFilter.addAction(WifiManager.RSSI_CHANGED_ACTION);
  728. registerReceiver(mNetWorkBroadCastReciver, intentFilter);
  729. }
  730. @Override
  731. public void onDestroy() {
  732. super.onDestroy();
  733. unregisterReceiver(mNetWorkBroadCastReciver);
  734. Log.d(TAG, "MQ onDestroy: ");
  735. }
  736. /**
  737. * 连接设置
  738. */
  739. private void setupConnectionFactory() {
  740. factory = new ConnectionFactory();
  741. factory.setHost(hostName);
  742. factory.setPort(portNum);
  743. factory.setUsername(userName);
  744. factory.setPassword(passWord);
  745. }
  746. private int addTime = 0;
  747. @Override
  748. public int onStartCommand(Intent intent, int flags, int startId) {
  749. if (intent != null) {
  750. Bundle extras = intent.getExtras();
  751. if (extras != null) {
  752. int first = extras.getInt("connect");
  753. if (first == 1) {//5分钟来一次。
  754. basicConsume(6);
  755. }
  756. }
  757. }
  758. int connectState = (int) SharedPreferencesUtils.getParam(Name.CONNECT_STATE, 999);
  759. Log.d(TAG, "onStartCommand......" + connectState);
  760. if (connectState == 999) {//如果说是第一次,则表示还没有创建
  761. initView();
  762. } else {//如果说是第二次,则可以直接打开。因为已经创建出来了。
  763. initView1();
  764. }
  765. //消费者服务线程
  766. return super.onStartCommand(intent, flags, startId);
  767. }
  768. //旧方法
  769. private void initView() {
  770. String data = (String) SharedPreferencesUtils.getParam(Name.QUEUE_DATA, ""); //连接设备id
  771. Log.d(TAG, "data initView: " + data);
  772. // String updateMaterialStatus = (String) SharedPreferencesUtils.getParam(Name.SEPARATE_SUCCESS, ""); //脱离系统
  773. String updateMaterialStatus = (String) SharedPreferencesUtils.getParam(Name.SYSTEM_ID, "");
  774. if ("".equals(updateMaterialStatus)) {//因为脱离系统了,那么就清空,重新创建
  775. data = "";
  776. }
  777. String machineType = Hawk.get(Name.MACHINE_TYPE, Name.SI320);
  778. Log.d(TAG, data + ": mq getAddQueue: " + machineType);
  779. // SharedPreferencesUtils.setParam(Name.QUEUE_DATA, data);
  780. if ("".equals(Heartbeat.deviceId)) {
  781. //如果没有id,肯定是新机器,无创建过队列,直接 return;
  782. Log.d(TAG, "mq1,没有id,直接跳出");
  783. return;
  784. } else {
  785. Log.d(TAG, "mq1,有id的情况");
  786. if (data.equals("成功")) {
  787. //创建过队列。
  788. Log.d(TAG, "mq1,创建过队列,开启过线程,直接退出");
  789. return;
  790. } else {
  791. if (addTime > 0) {
  792. return;
  793. } else {
  794. Log.d(TAG, "mq1,没有创建过队列,没有开启过线程,现在开始创建和开启");
  795. getAddQueue(); //创建mq
  796. getChannel(); //修改通道
  797. }
  798. }
  799. }
  800. Log.d(TAG, "mq,这里都会执行");
  801. //开启消费者线程
  802. //subscribe(incomingMessageHandler);
  803. if (!connect) {
  804. basicConsume(2);
  805. }
  806. }
  807. private void initView1() {
  808. String data = (String) SharedPreferencesUtils.getParam(Name.QUEUE_DATA, ""); //连接设备id
  809. Log.d(TAG, "1data initView: " + data);
  810. // String updateMaterialStatus = (String) SharedPreferencesUtils.getParam(Name.SEPARATE_SUCCESS, ""); //脱离系统
  811. String updateMaterialStatus = (String) SharedPreferencesUtils.getParam(Name.SYSTEM_ID, "");
  812. // if ("".equals(updateMaterialStatus)) {//因为脱离系统了,那么就清空,重新创建
  813. // data = "";
  814. // }
  815. String machineType = Hawk.get(Name.MACHINE_TYPE, Name.SI320);
  816. Log.d(TAG, data + ": mq getAddQueue: " + machineType);
  817. // SharedPreferencesUtils.setParam(Name.QUEUE_DATA, data);
  818. if ("".equals(FileUtil.getDeviceId1())) {
  819. //如果没有id,肯定是新机器,无创建过队列,直接 return;
  820. Log.d(TAG, "mq,没有id,直接跳出");
  821. return;
  822. } else {
  823. Log.d(TAG, "mq,有id的情况");
  824. if (data.equals("成功")) {
  825. //创建过队列。
  826. Log.d(TAG, "mq,创建过队列,开启过线程,直接退出");
  827. return;
  828. } else {
  829. if (addTime > 0) {
  830. return;
  831. } else {
  832. Log.d(TAG, "mq,没有创建过队列,没有开启过线程,现在开始创建和开启" + Heartbeat.deviceId);
  833. getAddQueue(); //创建mq
  834. getChannel(); //修改通道
  835. }
  836. }
  837. }
  838. Log.d(TAG, "mq,这里都会执行");
  839. //开启消费者线程
  840. //subscribe(incomingMessageHandler);
  841. if (!connect) {
  842. basicConsume(2);
  843. }
  844. }
  845. private int networkState = 100;
  846. //接收网络状态改变的广播
  847. public class NetWorkBroadCastReciver extends BroadcastReceiver {
  848. @Override
  849. public void onReceive(Context context, Intent intent) {
  850. isNetConnected(context);
  851. Log.d(TAG, "NetWorkBroadCastReciver: ");
  852. }
  853. }
  854. public boolean isNetConnected(Context context) {
  855. ConnectivityManager connectivity = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
  856. Log.d(TAG, "isNetConnected0: ");
  857. if (connectivity != null) {
  858. Log.d(TAG, "isNetConnected1: ");
  859. NetworkInfo info = connectivity.getActiveNetworkInfo();
  860. if (info != null) {
  861. Log.d(TAG, "isNetConnected2: ");
  862. if (info.getType() == networkState) {
  863. return false;
  864. }
  865. networkState = info.getType();
  866. if (info.getType() == (ConnectivityManager.TYPE_WIFI)) {
  867. if (!connect) {
  868. Log.d(TAG, "isNetConnectedTYPE_WIFI: 执行了一次。");
  869. basicConsume(3);
  870. }
  871. LogUtil.d("type1RemoteSupportService", "TYPE_WIFI: ");
  872. return true;
  873. } else if (info.getType() == (ConnectivityManager.TYPE_MOBILE)) {
  874. if (!connect) {
  875. Log.d(TAG, "isNetConnectedTYPE_MOBILE: 执行了一次。");
  876. basicConsume(4);
  877. }
  878. LogUtil.d("type1RemoteSupportService", "TYPE_MOBILE: ");
  879. return true;
  880. } else if (info.getType() == (ConnectivityManager.TYPE_ETHERNET)) {
  881. Log.d(TAG, "isNetConnected3: ");
  882. if (!connect) {
  883. Log.d(TAG, "isNetConnected4: ");
  884. LogUtil.d("type1RemoteSupportService", "TYPE_ETHERNET: ");
  885. basicConsume(7);
  886. }
  887. return true;
  888. }
  889. }
  890. }
  891. LogUtil.d("type1RemoteSupportService", "TYPE_NONE: ");
  892. return false;
  893. }
  894. /**
  895. * 收消息(从发布者那边订阅消息)
  896. */
  897. private void basicConsume(int id) {
  898. Log.d(TAG, "basicConsume: " + id);
  899. new Thread(new Runnable() {
  900. @Override
  901. public void run() {
  902. if (connect != true) {
  903. synchronized (handler) {
  904. if (connect != true) {
  905. int connectState = (int) SharedPreferencesUtils.getParam(Name.CONNECT_STATE, 999);
  906. if (connectState == 999) {
  907. queueName = Heartbeat.deviceId;
  908. LogUtils.logWrite("测试MQ1是不是为空" + Heartbeat.deviceId);
  909. } else {
  910. queueName = FileUtil.getDeviceId1();
  911. LogUtils.logWrite("测试MQ2是不是为空" + FileUtil.getDeviceId1());
  912. }
  913. try {
  914. //连接
  915. Connection connection = factory.newConnection();
  916. //通道
  917. final Channel channel = connection.createChannel();
  918. Log.d(TAG, "mqrun: 4" + queueName);
  919. //实现Consumer的最简单方法是将便捷类DefaultConsumer子类化。可以在basicConsume 调用上传递此子类的对象以设置订阅:
  920. channel.basicConsume(queueName, false, new DefaultConsumer(channel) {
  921. @Override
  922. public void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties, byte[] body) throws IOException {
  923. super.handleDelivery(consumerTag, envelope, properties, body);
  924. Log.d(TAG, "mqrun: 5");
  925. String msg = new String(body, "utf-8");
  926. Log.d(TAG, "msg->" + msg);
  927. long deliveryTag = envelope.getDeliveryTag();
  928. Log.d(TAG, "deliveryTag->" + deliveryTag);
  929. channel.basicAck(deliveryTag, false);
  930. // 从message池中获取msg对象更高效
  931. Message uimsg = handler.obtainMessage();
  932. Bundle bundle = new Bundle();
  933. bundle.putString("msg", msg);
  934. uimsg.setData(bundle);
  935. handler.sendMessage(uimsg);
  936. }
  937. });
  938. connect = true;
  939. Log.d(TAG, "basicConsume run: " + connect);
  940. LogUtils.logWrite("mq连接成功");
  941. } catch (Exception e) {
  942. networkState = 100;
  943. e.printStackTrace();
  944. LogUtils.logWrite("mq连接失败" + netConnectedNumber + "次");
  945. new Thread(new Runnable() {
  946. @Override
  947. public void run() {
  948. while (netConnectedNumber < 10) { // 当重连次数小于10时执行循环
  949. try {
  950. Log.d(TAG, "isNetConnected7: " + netConnectedNumber);
  951. Thread.sleep(10000); // 等待10秒后再次执行
  952. isNetConnected(getApplicationContext());
  953. netConnectedNumber++; // 增加重连次数
  954. Log.d(TAG, "isNetConnected8: ");
  955. } catch (InterruptedException e) {
  956. e.printStackTrace();
  957. }
  958. }
  959. }
  960. }).start();
  961. Log.d(TAG, "mqrun basicConsume: IOException");
  962. Log.d(TAG, "mqrun basicConsume: IOException" + e.getMessage());
  963. }
  964. }
  965. }
  966. }
  967. }
  968. }).start();
  969. }
  970. private int netConnectedNumber = 0;
  971. //获取mq中的相关信息
  972. private void getAddQueue() {
  973. addTime = 1;
  974. Map<String, Object> params = new HashMap<>();
  975. Log.d(TAG, "Heartbeat.deviceId-->" + Heartbeat.deviceId);
  976. String machineType = Hawk.get(Name.MACHINE_TYPE, Name.SI320);
  977. params.put("exchange", machineType); //交换机的名称,机型
  978. params.put("queue", Heartbeat.deviceId); //队列的名称,机器的设备编码
  979. params.put("routingKey", Heartbeat.deviceId); //队列的key,机器的设备编码
  980. params.put("durable", true); //队列的key,机器的设备编码
  981. Log.d(TAG, Heartbeat.deviceId + ": mq getAddQueue: " + machineType);
  982. addSubscriptionNew(NoPayOrderStringApi.api.addQueue(params), String.class,
  983. new HttpResultNotActivityObserver<String>(view, getApplicationContext()) {
  984. @Override
  985. public void onNext(String data) {
  986. SharedPreferencesUtils.setParam(Name.QUEUE_DATA, data);
  987. Log.d(TAG, "getAddQueue发送成功mqservice" + data);
  988. }
  989. @Override
  990. public void onError(Throwable t) {
  991. super.onError(t);
  992. Log.d(TAG, "getAddQueue发送失败onError: " + t.getMessage());
  993. }
  994. });
  995. }
  996. /**
  997. * 修改通道
  998. */
  999. private void getChannel() {
  1000. addTime = 1;
  1001. Map<String, Object> params = new HashMap<>();
  1002. params.put("clientId", Heartbeat.deviceId); //设备编号
  1003. params.put("type", "2"); //type:信道的方式:1:个推,2:Mq ,默认是2
  1004. addSubscriptionNew(NoPayOrderStringApi.api.updateChannel(params), String.class,
  1005. new HttpResultNotActivityObserver<String>(view, getApplicationContext()) {
  1006. @Override
  1007. public void onNext(String data) {
  1008. SharedPreferencesUtils.setParam(Name.CHANNEL_DATA, data);
  1009. Log.d(TAG, "getChannel发送成功mqservice修改通道" + data);
  1010. }
  1011. @Override
  1012. public void onError(Throwable t) {
  1013. super.onError(t);
  1014. }
  1015. });
  1016. }
  1017. /**
  1018. * 远程上传日志文件
  1019. *
  1020. * @param kindData
  1021. */
  1022. public void uploadLogApi(String kindData) {
  1023. new Thread(new Runnable() {
  1024. @Override
  1025. public void run() {
  1026. File file = new File("/storage/emulated/0/logdata/" + kindData + ".txt");
  1027. LogUtil.d(TAG, "uploadLogApi: " + kindData);
  1028. if (file.exists()) {
  1029. if (file.isFile()) {
  1030. DataInputStream in = null;
  1031. OutputStream out = null;
  1032. HttpURLConnection conn = null;
  1033. InputStream ins = null;
  1034. ByteArrayOutputStream outStream = null;
  1035. try {
  1036. URL url = new URL(BaseConstant.ONLINE_BASE_URL + "/api/app_equipment/index/sendLog.htm?fileName=" + kindData);
  1037. conn = (HttpURLConnection) url.openConnection();
  1038. // 发送POST请求必须设置如下两行
  1039. conn.setDoOutput(true);
  1040. conn.setUseCaches(false);
  1041. conn.setRequestMethod("POST");
  1042. conn.setRequestProperty("Content-Type", "text/html");
  1043. conn.setRequestProperty("Cache-Control", "no-cache");
  1044. conn.setRequestProperty("Charsert", "UTF-8");
  1045. conn.connect();
  1046. conn.setConnectTimeout(10000);
  1047. out = conn.getOutputStream();
  1048. // sb.append("Content-Disposition: form-data; fileName=\""
  1049. // + file.getName() + "\"" + LINE_END);
  1050. // sb.append("Content-Type: text/plain;");
  1051. // sb.append(LINE_END);
  1052. // out.write(sb.toString().getBytes());
  1053. in = new DataInputStream(new FileInputStream(file));
  1054. int bytes = 0;
  1055. byte[] buffer = new byte[1024];
  1056. while ((bytes = in.read(buffer)) != -1) {
  1057. out.write(buffer, 0, bytes);
  1058. }
  1059. out.flush();
  1060. // 返回流
  1061. if (conn.getResponseCode() == HttpURLConnection.HTTP_OK) {
  1062. ins = conn.getInputStream();
  1063. outStream = new ByteArrayOutputStream();
  1064. byte[] data = new byte[1024];
  1065. int count = -1;
  1066. while ((count = ins.read(data, 0, 1024)) != -1) {
  1067. outStream.write(data, 0, count);
  1068. LogUtil.d(TAG, "uploadLogApi: " + new String(data));
  1069. }
  1070. } else {
  1071. LogUtil.d(TAG, "uploadLogApi: " + conn.getResponseCode());
  1072. }
  1073. } catch (Exception e) {
  1074. e.printStackTrace();
  1075. Log.d(TAG, "uploadLogApi: " + e.toString());
  1076. Log.d(TAG, "uploadLogApi: " + e.getLocalizedMessage());
  1077. } finally {
  1078. if (in != null) {
  1079. try {
  1080. in.close();
  1081. } catch (IOException e) {
  1082. e.printStackTrace();
  1083. }
  1084. }
  1085. if (out != null) {
  1086. try {
  1087. out.close();
  1088. } catch (IOException e) {
  1089. e.printStackTrace();
  1090. }
  1091. }
  1092. if (ins != null) {
  1093. try {
  1094. ins.close();
  1095. } catch (IOException e) {
  1096. e.printStackTrace();
  1097. }
  1098. }
  1099. if (outStream != null) {
  1100. try {
  1101. outStream.close();
  1102. } catch (IOException e) {
  1103. e.printStackTrace();
  1104. }
  1105. }
  1106. if (conn != null) {
  1107. conn.disconnect();
  1108. }
  1109. }
  1110. }
  1111. }
  1112. }
  1113. }).start();
  1114. }
  1115. private void savePriceData(Gson gson, BaseBean baseBean, String kind) {
  1116. if (kind.equals("products")) {
  1117. priceBeans = new ArrayList<>();
  1118. String kind_data = baseBean.getKind_data();
  1119. Log.d(TAG, "savePriceData: " + kind_data);
  1120. ArrayList<ProductBean> list = gson.fromJson(kind_data, new TypeToken<List<ProductBean>>() {
  1121. }.getType());
  1122. for (int i = 0; i < list.size(); i++) {
  1123. ProductBean productBean = list.get(i);
  1124. PriceFragment.PriceBean priceBean = new PriceFragment.PriceBean();
  1125. priceBean.setPriceDefault(String.valueOf(productBean.getRmbPrice()));
  1126. priceBean.setChineseName(PriceFragment.ProductAbout.chineseName[i]);
  1127. priceBean.setTitle(PriceFragment.ProductAbout.title[i]);
  1128. priceBean.setDefaultName(getString(PriceFragment.ProductAbout.defaultName[i]));
  1129. priceBeans.add(priceBean);
  1130. Log.d(TAG, "savePriceData: " + priceBean);
  1131. }
  1132. //保存价格到本地
  1133. Hawk.put("PRICEBEAN", priceBeans);
  1134. //通知刷新界面
  1135. EventBus.getDefault().post(new ApiMessageEvent(kind, null));
  1136. }
  1137. }
  1138. private CompositeDisposable mDisposables;
  1139. private IView view;
  1140. protected void addSubscription(Observable observable, DisposableObserver observer) {
  1141. if (mDisposables == null) {
  1142. mDisposables = new CompositeDisposable();
  1143. }
  1144. observable
  1145. .unsubscribeOn(Schedulers.io())
  1146. .subscribeOn(Schedulers.io())
  1147. .observeOn(AndroidSchedulers.mainThread())
  1148. .subscribe(observer);
  1149. mDisposables.add(observer);
  1150. }
  1151. protected void addSubscriptionNew(Observable observable, Class clazz, DisposableObserver
  1152. observer) {
  1153. if (mDisposables == null) {
  1154. mDisposables = new CompositeDisposable();
  1155. }
  1156. if (clazz == HttpResult.class) {
  1157. observable = observable.compose(HttpResultHandler.<String>transformer());
  1158. }
  1159. observable
  1160. .unsubscribeOn(Schedulers.io())
  1161. .subscribeOn(Schedulers.io())
  1162. .observeOn(AndroidSchedulers.mainThread())
  1163. .subscribe(observer);
  1164. mDisposables.add(observer);
  1165. }
  1166. @Override
  1167. public void callBack(boolean ok, int[] result) {
  1168. AndroidSchedulers.mainThread().scheduleDirect(new Runnable() {
  1169. @Override
  1170. public void run() {
  1171. showToast(ok ? App.app.getString(R.string.setting_plc_send_success) : App.app.getString(R.string.setting_plc_send_fail));
  1172. }
  1173. });
  1174. }
  1175. private void updateLogo(Gson gson, BaseBean baseBean, String kind) {
  1176. String s = baseBean.getKind_data();
  1177. Log.d(TAG, "updateLogo: " + s);
  1178. // if ("1".equals(s) || "2".equals(s) || "3".equals(s) || "4".equals(s) ||
  1179. // "5".equals(s) || "6".equals(s) || "7".equals(s) || "8".equals(s)||
  1180. // "9".equals(s)|| "10".equals(s)|| "11".equals(s)|| "12".equals(s)|| "14".equals(s)) {
  1181. if ("SUNZ".equals(s) || "7770".equals(s) || "8647".equals(s) || "7264".equals(s) || "1932".equals(s) ||
  1182. "2381".equals(s) || "0291".equals(s) || "1313".equals(s) || "3103".equals(s) ||
  1183. "4873".equals(s) || "5291".equals(s) || "9284".equals(s) || "2222".equals(s)
  1184. || "3212".equals(s) || "3535".equals(s) || "1921".equals(s) || "3624".equals(s)
  1185. || "2019".equals(s) || "7391".equals(s) || "0924".equals(s) || "9427".equals(s) || "0735".equals(s)
  1186. || "5769".equals(s) || "6894".equals(s) || "8123".equals(s) || "5217".equals(s) || "6431".equals(s)
  1187. || "7777".equals(s) || "8080".equals(s) || "6702".equals(s) || "7772".equals(s) || "7761".equals(s)
  1188. || "7773".equals(s) || "7774".equals(s) || "7786".equals(s) || "7775".equals(s)|| "7754".equals(s)) {
  1189. Hawk.put("logo", s);
  1190. Hawk.get("logo", "7777");
  1191. }
  1192. }
  1193. /**
  1194. * 远程开关机
  1195. *
  1196. * @param gson
  1197. * @param baseBean
  1198. * @param kind
  1199. */
  1200. private void openOrClose(Gson gson, BaseBean baseBean, String kind) {
  1201. String kind_data = baseBean.getKind_data();
  1202. Log.d(TAG, "openOrClose: " + baseBean);
  1203. if ((int) SharedPreferencesUtils.getParam(Name.toComplete, 0) == 1) {
  1204. Global.isSave = true;
  1205. }
  1206. if (kind_data.equals("0")) {
  1207. CommunicationHelper.getInstance().sendControl(IceCreamDeviceConstants.ORDER_CUT_DOWN, this);
  1208. } else if (kind_data.equals("1")) {
  1209. CommunicationHelper.getInstance().sendControl(IceCreamDeviceConstants.ORDER_CUT_DOWN, this);
  1210. }
  1211. }
  1212. private void sleep(String baseBean) {
  1213. if (baseBean.equals("1")) {
  1214. //睡眠
  1215. Intent intent = new Intent(this, LockActivity.class);
  1216. intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);
  1217. startActivity(intent);
  1218. } else {
  1219. SharedPreferencesUtils.setParam("sleep", 1);
  1220. Intent intent = new Intent(this, MainActivity.class);
  1221. intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);
  1222. startActivity(intent);
  1223. HashMap<String, Object> params = new HashMap<>();
  1224. params.put("clientId", Heartbeat.deviceId);
  1225. params.put("is_sleep", false);
  1226. addSubscriptionNew(NoPayOrderStringApi.api.updateSleep(params), String.class,
  1227. new HttpResultNotActivityObserver<String>(view, getApplicationContext()) {
  1228. @Override
  1229. public void onNext(String data) {
  1230. }
  1231. @Override
  1232. public void onError(Throwable t) {
  1233. super.onError(t);
  1234. }
  1235. });
  1236. }
  1237. // 如果没跳到锁机界面 上传锁机失败
  1238. new Handler().postDelayed(new Runnable() {
  1239. @Override
  1240. public void run() {
  1241. boolean isSuccess = (boolean) SharedPreferencesUtils.getParam("sleep_state", false);
  1242. if (isSuccess) {
  1243. //进行网络请求
  1244. LogUtil.d(TAG, "run: 睡眠状态上传false");
  1245. HashMap<String, Object> params = new HashMap<>();
  1246. params.put("clientId", Heartbeat.deviceId);
  1247. params.put("is_sleep", false);
  1248. addSubscriptionNew(NoPayOrderStringApi.api.UpdateBlockApi(params), String.class,
  1249. new HttpResultNotActivityObserver<String>(view, getApplicationContext()) {
  1250. @Override
  1251. public void onNext(String data) {
  1252. }
  1253. @Override
  1254. public void onError(Throwable t) {
  1255. super.onError(t);
  1256. }
  1257. });
  1258. }
  1259. SharedPreferencesUtils.setParam("block_state", false);
  1260. }
  1261. }, 1000 * 10);
  1262. }
  1263. private void sleepDesc(String hibernation) {
  1264. if (hibernation != null && !"".equals(hibernation)) {
  1265. Hawk.put(Name.HIBERNATION, hibernation);
  1266. } else {
  1267. Hawk.put(Name.HIBERNATION, "");
  1268. }
  1269. EventBus.getDefault().post(new ApiMessageEvent("sleepDesc", null));
  1270. }
  1271. private void saveContacts(Gson gson, BaseBean baseBean, String kind) {
  1272. String json = baseBean.getKind_data();
  1273. Log.e(TAG, "saveContacts:json= " + json);
  1274. Log.e(TAG, "saveContacts: " + json.contains(":"));
  1275. if (json.contains(":")) {
  1276. //获取:后的数据(广告规则id)
  1277. String contactsWay = json.substring(json.lastIndexOf(":") + 1, json.length());
  1278. Log.e(TAG, "saveContacts: 联系方式=" + contactsWay);
  1279. //去掉:的值
  1280. String contactsName = json.substring(0, json.lastIndexOf(":"));
  1281. Log.e(TAG, "saveContacts: 联系人=" + contactsName);
  1282. Hawk.put(Name.CONTACTS_NUM, contactsName);
  1283. Hawk.put(Name.CONTACTS_NAME, contactsWay);
  1284. EventBus.getDefault().post(new ApiMessageEvent(kind, null));
  1285. }
  1286. }
  1287. private void savePas(Gson gson, BaseBean baseBean, String type) {
  1288. String json = baseBean.getKind_data();
  1289. String s = gson.fromJson(json, String.class);
  1290. SPUtils.getInstance(this).putString(Constant.SHARE_PREFERENCE_MANAGER_PWD, s);
  1291. }
  1292. /**
  1293. * 上传服务器发送过来的报警id
  1294. */
  1295. private void eliminateApi(Gson gson, BaseBean baseBean, String kind) {
  1296. String json = baseBean.getKind_data();
  1297. EliminateBean eliminateApi = gson.fromJson(json, EliminateBean.class);
  1298. EventBus.getDefault().post(new ApiMessageEvent("eliminate", eliminateApi.getId()));
  1299. }
  1300. }