Advertisement
Guest User

Untitled

a guest
Mar 20th, 2019
125
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 22.52 KB | None | 0 0
  1. DiagnosticActivity.java
  2. Earlier this week
  3. Sun 4:11 PM
  4. A
  5. You shared an item
  6. Java
  7. DiagnosticActivity.java
  8. H
  9. Can edit
  10. Hugh Adrien
  11. Last week
  12. Mar 13
  13. A
  14. You edited an item
  15. Java
  16. DiagnosticActivity.java
  17. Earlier this month
  18. Mar 5
  19. A
  20. You edited an item
  21. Java
  22. DiagnosticActivity.java
  23. Last month
  24. Feb 18
  25. A
  26. You edited an item
  27. Java
  28. DiagnosticActivity.java
  29. Earlier this year
  30. Jan 29
  31. A
  32. You edited an item
  33. Java
  34. DiagnosticActivity.java
  35. Jan 29
  36. A
  37. You uploaded an item
  38. Java
  39. DiagnosticActivity.java
  40. package com.example.andrew.cartrackerapp;
  41.  
  42. import android.content.Intent;
  43. import android.nfc.Tag;
  44. import android.provider.ContactsContract;
  45. import android.support.v7.app.AppCompatActivity;
  46. import android.os.Bundle;
  47. import android.util.Log;
  48. import android.view.View;
  49. import android.widget.Button;
  50. import android.widget.ImageView;
  51. import android.widget.SeekBar;
  52. import android.widget.TextView;
  53. import android.widget.Toast;
  54.  
  55. import com.jjoe64.graphview.GraphView;
  56. import com.jjoe64.graphview.series.BarGraphSeries;
  57. import com.jjoe64.graphview.series.DataPoint;
  58. import com.jjoe64.graphview.series.LineGraphSeries;
  59.  
  60. import org.eclipse.paho.android.service.MqttAndroidClient;
  61. import org.eclipse.paho.client.mqttv3.IMqttActionListener;
  62. import org.eclipse.paho.client.mqttv3.IMqttDeliveryToken;
  63. import org.eclipse.paho.client.mqttv3.IMqttToken;
  64. import org.eclipse.paho.client.mqttv3.MqttCallback;
  65. import org.eclipse.paho.client.mqttv3.MqttClient;
  66. import org.eclipse.paho.client.mqttv3.MqttConnectOptions;
  67. import org.eclipse.paho.client.mqttv3.MqttException;
  68. import org.eclipse.paho.client.mqttv3.MqttMessage;
  69.  
  70. import java.io.UnsupportedEncodingException;
  71.  
  72. public class DiagnosticActivity extends AppCompatActivity {
  73.  
  74. //******************Variable Declarations*************************
  75. private static final String TAG = "DiagnosticActivity";
  76. private static final String USER_VEHICLE_INPUT = "userVehicleInput";
  77.  
  78. //IP Address of mosquito sever
  79. private final static String mosquittoIP = "tcp://10.0.0.10:1883";
  80. private final static String mosquittoUser = "adminUser";
  81. private final static String mosquittoPassword = "aev2020";
  82.  
  83. // String declarations for MQTT
  84. public String connectionHeader = "AEV/CARS/";
  85. public String carID = "";
  86. public String carHeader = "";
  87. public String topicLWTFooter = "LWT";
  88. public String topicLWT = "";
  89. public String LWTPayload = "unexpectedDisconnect";
  90. public String diagnosticsRequestTopic = "DIAGNOSTICSREQUEST";
  91. public String diagnosticsGraphRequestTopic = "DIAGNOSTICSGRAPHREQUEST";
  92. public String seekBarSpeedPubTopic = "";
  93. public String seekBarTurnAnglePubTopic = "";
  94. public int qos = 1;
  95.  
  96. int LWTSubscribe = 0;
  97.  
  98. // MQTT defines
  99. public MqttAndroidClient client;
  100. public MqttConnectOptions options;
  101.  
  102. // Button Defines
  103. Button batteryButton;
  104. Button cockpitButton;
  105. Button IMUGPSButton;
  106. Button diagnosticsButton;
  107. Button controlButton;
  108. public String menuState = "";
  109. public String lastButtonPressed = "";
  110.  
  111. // SeekBar defines
  112. SeekBar seekBarSpeed;
  113. SeekBar seekBarTurnAngle;
  114.  
  115. public int controlTurnAngleOffset = 45;
  116. public int controlSpeedOffset = 40;
  117.  
  118. // Misc String Defines
  119. public String controlSpeedTextHeader = "";
  120. public String controlTurnAngleTextHeader = "";
  121. public String diagnosticsInfoTextBlank = "";
  122. public String diagTitleString = "";
  123.  
  124. // TextView Defines
  125. TextView diagInfoText;
  126. TextView diagTitle;
  127. TextView controlSpeedText;
  128. TextView controlTurnAngleText;
  129.  
  130. // GraphView Defines and Data
  131. GraphView lineGraphView;
  132. LineGraphSeries<DataPoint> lineGraphSeries;
  133. String numRequestPoints = "100";
  134. double x, y;
  135. int numDataPoints = 500;
  136.  
  137. GraphView barGraphView;
  138. BarGraphSeries<DataPoint> barGraphSeries;
  139.  
  140. public float greyOutAlpha = (float)0.3;
  141. //***************Variable Declarations END*************************
  142.  
  143.  
  144. //~~~~~~~~onCreate function, runs when activity is opened~~~~~~~~~
  145. @Override
  146. protected void onCreate(Bundle savedInstanceState)
  147. {
  148. super.onCreate(savedInstanceState);
  149. setContentView(R.layout.activity_diagnostic);
  150. Log.d(TAG, "onCreate: Started");
  151.  
  152. //*********************AEV LOGO Define*************************
  153. ImageView aevLogo = findViewById(R.id.imageViewAEVLogo);
  154. int aevLogoResource = getResources().getIdentifier("@drawable/aev_logo_resource", null, this.getPackageName());
  155. aevLogo.setImageResource(aevLogoResource);
  156. //********************AEV LOGO Define END**********************
  157.  
  158. //******************Button Defines******************************
  159. batteryButton = findViewById(R.id.buttonBattery);
  160. cockpitButton = findViewById(R.id.buttonCockpit);
  161. IMUGPSButton = findViewById(R.id.buttonIMUGPS);
  162. diagnosticsButton = findViewById(R.id.buttonToDiagnostics);
  163. controlButton = findViewById(R.id.buttonToControl);
  164. lastButtonPressed = getString(R.string.diagBatteryButText);
  165. //**************************************************************
  166.  
  167. //******************TextView************************************
  168. diagInfoText = findViewById(R.id.textViewDiagInfo);
  169. diagTitle = findViewById(R.id.textViewDiagTitle);
  170. controlSpeedText = findViewById(R.id.textViewSpeed);
  171. controlTurnAngleText = findViewById(R.id.textViewTurnAngle);
  172. //**************************************************************
  173.  
  174. //******************SeekBar*************************************
  175. seekBarSpeed = findViewById(R.id.seekBarVehicleSpeed);
  176. seekBarTurnAngle = findViewById(R.id.seekBarTurnAngle);
  177. //**************************************************************
  178.  
  179. //*****************StringDefines********************************
  180. controlSpeedTextHeader = getString(R.string.speedText);
  181. controlTurnAngleTextHeader = getString(R.string.turnAngleText);
  182. diagnosticsInfoTextBlank = getString(R.string.diagInfoText);
  183. //**************************************************************
  184.  
  185. //*****************Graph Define*********************************
  186. // Line
  187. lineGraphView = findViewById(R.id.lineGraphView);
  188. x = 0;
  189. lineGraphSeries = new LineGraphSeries<DataPoint>();
  190. for (int i = 0; i<numDataPoints; i++)
  191. {
  192. x += 0.1;
  193. y = 5 + Math.sin(x);
  194. lineGraphSeries.appendData(new DataPoint(x, y), true, numDataPoints);
  195. }
  196. lineGraphView.addSeries(lineGraphSeries);
  197.  
  198. lineGraphView.setOnClickListener(new View.OnClickListener() {
  199. @Override
  200. public void onClick(View v) {
  201. switchToBarGraph();
  202. }
  203. });
  204.  
  205. // Bar
  206. barGraphView = findViewById(R.id.barGraphView);
  207. barGraphSeries = new BarGraphSeries<DataPoint>(new DataPoint[] {
  208. new DataPoint(0, -1),
  209. new DataPoint(1, 5),
  210. new DataPoint(2, 3),
  211. new DataPoint(3, 2),
  212. new DataPoint(4, 6)
  213. });
  214. barGraphView.addSeries(barGraphSeries);
  215.  
  216. barGraphView.setOnClickListener(new View.OnClickListener() {
  217. @Override
  218. public void onClick(View v) {
  219. switchToLineGraph();
  220. }
  221. });
  222. //**************************************************************
  223.  
  224. //****Write text to include numberplate of selected vehicle****
  225. diagTitleString= getString(R.string.vehicleTitle);
  226. carID = getIntent().getStringExtra(USER_VEHICLE_INPUT);
  227. diagTitleString = diagTitleString + " " + carID;
  228. diagTitle.setText(diagTitleString);
  229. //*************************************************************
  230.  
  231. //*******************Grey out buttons**************************
  232. menuButtonGreyAllOut();
  233.  
  234. redrawMenuDiag();
  235.  
  236. diagButtonGreyAllOut();
  237.  
  238. diagInfoText.setText(getString(R.string.diagInfoNoConnect));
  239. //************************************************************
  240.  
  241. //********************MQTT Initialisation**********************
  242. String clientId = MqttClient.generateClientId();
  243. carHeader = connectionHeader + carID + "/";
  244.  
  245. seekBarSpeedPubTopic = carHeader + "CONTROL/SPEED";
  246. seekBarTurnAnglePubTopic = carHeader + "CONTROL/TURNANGLE";
  247.  
  248. // Set options and LWT
  249. options = new MqttConnectOptions();
  250. byte[] payload = LWTPayload.getBytes();
  251. topicLWT = carHeader + topicLWTFooter;
  252. options.setWill(topicLWT, payload, 1, false);
  253. options.setAutomaticReconnect(true);
  254. options.setUserName(mosquittoUser);
  255. options.setPassword(mosquittoPassword.toCharArray());
  256.  
  257. //~~~~~~~~~~~~~~~~Create client~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  258. client = new MqttAndroidClient(this.getApplicationContext(), mosquittoIP, clientId);
  259.  
  260. //~~~~~~~~~~~~~~~~~~~~~~SET MQTT CALLBACKS~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  261. client.setCallback(new MqttCallback()
  262. {
  263. @Override
  264. public void connectionLost(Throwable cause)
  265. {
  266. Log.d(TAG, "connectionLost: Started");
  267. Toast.makeText(DiagnosticActivity.this, "Disconnected from MQTT server", Toast.LENGTH_SHORT).show();
  268. Intent toDiagnosticMenuIntent = new Intent(DiagnosticActivity.this, DiagnosticMenuActivity.class);
  269. startActivity(toDiagnosticMenuIntent);
  270. }
  271.  
  272. @Override
  273. public void messageArrived(String topic, MqttMessage message)
  274. {
  275. String messagePayload = new String(message.getPayload());
  276. Log.d(TAG, "MqttCallback: messageArrived: " + messagePayload + ". Topic of " + topic);
  277.  
  278. if (topic.equals(carHeader + "DIAGNOSTICSSEND"))
  279. {
  280. diagInfoText.setText(messagePayload);
  281. }
  282.  
  283. if (topic.equals(carHeader + "DIAGNOSTICSGRAPHSEND"))
  284. {
  285. drawLineGraphData(messagePayload);
  286. }
  287. }
  288.  
  289. @Override
  290. public void deliveryComplete(IMqttDeliveryToken token)
  291. {
  292. }
  293. });
  294.  
  295. //~~~~~~~~~~~~~~~~~~~~MQTT CONNECT~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  296. try
  297. {
  298. IMqttToken token = client.connect(options);
  299. token.setActionCallback(new IMqttActionListener()
  300. {
  301. @Override
  302. public void onSuccess(IMqttToken asyncActionToken)
  303. {
  304. Log.d(TAG, "onSuccess: MQTT connect");
  305. //subscribe to required topics and request initial information
  306.  
  307. MQTTSubscribe(client, "#"); //////////////////////////////////////////////FIX THIS////////////////////////
  308. menuButtonGreyOut(diagnosticsButton);
  309. diagButtonGreyOut(batteryButton);
  310. requestDiagnosticsBattery(client);
  311. }
  312.  
  313. @Override
  314. public void onFailure(IMqttToken asyncActionToken, Throwable exception)
  315. {
  316. Toast.makeText(DiagnosticActivity.this, "MQTT connect FAIL", Toast.LENGTH_LONG).show();
  317. Log.d(TAG, "onFailure: MQTT could not connect");
  318. diagTitle.setText(getString(R.string.vehicleTitle) + " NO CONNECTION TO SERVER");
  319. }
  320. });
  321. } catch (MqttException e)
  322. {
  323. e.printStackTrace();
  324. }
  325. //~~~~~~~~~~~~~~~~~~~~~~~~~~Connect Client End~~~~~~~~~~~~~~~~~~~~~~~~~
  326. //********************MQTT Initialisation END**************************
  327.  
  328.  
  329. //*****************SET BUTTON LISTENERS***********************
  330. batteryButton.setOnClickListener(new View.OnClickListener()
  331. {
  332. @Override
  333. public void onClick(View v)
  334. {
  335. diagButtonGreyOut(batteryButton);
  336. requestDiagnosticsBattery(client);
  337. }
  338. });
  339.  
  340. cockpitButton.setOnClickListener(new View.OnClickListener()
  341. {
  342. @Override
  343. public void onClick(View v)
  344. {
  345. diagButtonGreyOut(cockpitButton);
  346. requestDiagnosticsCockpit(client);
  347. }
  348. });
  349.  
  350. IMUGPSButton.setOnClickListener(new View.OnClickListener()
  351. {
  352. @Override
  353. public void onClick(View v)
  354. {
  355. diagButtonGreyOut(IMUGPSButton);
  356. requestDiagnosticsIMUGPS(client);
  357. }
  358. });
  359.  
  360. diagnosticsButton.setOnClickListener(new View.OnClickListener()
  361. {
  362. @Override
  363. public void onClick(View v)
  364. {
  365. menuButtonGreyOut(diagnosticsButton);
  366. redrawMenuDiag();
  367. }
  368. });
  369.  
  370. controlButton.setOnClickListener(new View.OnClickListener()
  371. {
  372. @Override
  373. public void onClick(View v)
  374. {
  375. menuButtonGreyOut(controlButton);
  376. redrawMenuControl();
  377. }
  378. });
  379. //*****************SET BUTTON LISTENERS END*******************
  380.  
  381. //*****************SET SeekBar LISTENERS*********************
  382. seekBarSpeed.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener()
  383. {
  384. @Override
  385. public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser)
  386. {
  387. String temp = controlSpeedTextHeader + (progress - controlSpeedOffset);
  388. controlSpeedText.setText(temp);
  389. MQTTPublish(client, seekBarSpeedPubTopic, Integer.toString(progress - controlSpeedOffset));
  390. }
  391.  
  392. @Override
  393. public void onStartTrackingTouch(SeekBar seekBar)
  394. {
  395.  
  396. }
  397.  
  398. @Override
  399. public void onStopTrackingTouch(SeekBar seekBar)
  400. {
  401.  
  402. }
  403. });
  404.  
  405.  
  406. seekBarTurnAngle.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener()
  407. {
  408. @Override
  409. public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser)
  410. {
  411. String temp = controlTurnAngleTextHeader + (progress - controlTurnAngleOffset);
  412. controlTurnAngleText.setText(temp);
  413. MQTTPublish(client, seekBarTurnAnglePubTopic, Integer.toString(progress - controlTurnAngleOffset));
  414. }
  415.  
  416. @Override
  417. public void onStartTrackingTouch(SeekBar seekBar)
  418. {
  419.  
  420. }
  421.  
  422. @Override
  423. public void onStopTrackingTouch(SeekBar seekBar)
  424. {
  425.  
  426. }
  427. });
  428.  
  429.  
  430.  
  431. }
  432. //~~~~~~~~~~~~~~~~~~~onCreate END~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  433.  
  434. //-------------------------Functions------------------------------
  435. public void switchToBarGraph()
  436. {
  437. lineGraphView.setEnabled(false);
  438. lineGraphView.setVisibility(View.INVISIBLE);
  439.  
  440. barGraphView.setEnabled(true);
  441. barGraphView.setVisibility(View.VISIBLE);
  442. }
  443.  
  444. public void switchToLineGraph()
  445. {
  446. barGraphView.setEnabled(false);
  447. barGraphView.setVisibility(View.INVISIBLE);
  448.  
  449. lineGraphView.setEnabled(true);
  450. lineGraphView.setVisibility(View.VISIBLE);
  451. }
  452.  
  453. public void drawLineGraphData(String data)
  454. {
  455. String[] values = data.split("\\s*,\\s*");
  456. x = Double.parseDouble(values[0]);
  457. y = Double.parseDouble(values[1]);
  458. lineGraphSeries.appendData(new DataPoint(x, y), true, numDataPoints);
  459. lineGraphView.addSeries(lineGraphSeries);
  460. }
  461.  
  462. public void menuButtonGreyAllOut()
  463. {
  464. controlButton.setClickable(false);
  465. controlButton.setEnabled(false);
  466. controlButton.setAlpha(greyOutAlpha);
  467.  
  468. diagnosticsButton.setClickable(false);
  469. diagnosticsButton.setEnabled(false);
  470. diagnosticsButton.setAlpha(greyOutAlpha);
  471. }
  472.  
  473. public void diagButtonGreyAllOut()
  474. {
  475. batteryButton.setClickable(false);
  476. batteryButton.setEnabled(false);
  477. batteryButton.setAlpha(greyOutAlpha);
  478.  
  479. cockpitButton.setClickable(false);
  480. cockpitButton.setEnabled(false);
  481. cockpitButton.setAlpha(greyOutAlpha);
  482.  
  483. IMUGPSButton.setClickable(false);
  484. IMUGPSButton.setEnabled(false);
  485. IMUGPSButton.setAlpha(greyOutAlpha);
  486.  
  487. }
  488.  
  489. public void redrawMenuDiag()
  490. {
  491. // Diagnostics Visibilities/enables
  492. batteryButton.setEnabled(true);
  493. batteryButton.setVisibility(View.VISIBLE);
  494.  
  495. cockpitButton.setEnabled(true);
  496. cockpitButton.setVisibility(View.VISIBLE);
  497.  
  498. IMUGPSButton.setEnabled(true);
  499. IMUGPSButton.setVisibility(View.VISIBLE);
  500.  
  501. diagInfoText.setEnabled(true);
  502. diagInfoText.setVisibility(View.VISIBLE);
  503.  
  504. lineGraphView.setEnabled(true);
  505. lineGraphView.setVisibility(View.VISIBLE);
  506.  
  507. barGraphView.setEnabled(false);
  508. barGraphView.setVisibility(View.INVISIBLE);
  509.  
  510. // Control Hides
  511. seekBarSpeed.setVisibility(View.INVISIBLE);
  512. seekBarSpeed.setEnabled(false);
  513.  
  514. seekBarTurnAngle.setVisibility(View.INVISIBLE);
  515. seekBarTurnAngle.setEnabled(false);
  516.  
  517. controlSpeedText.setVisibility(View.INVISIBLE);
  518. controlSpeedText.setEnabled(false);
  519.  
  520. controlTurnAngleText.setVisibility(View.INVISIBLE);
  521. controlTurnAngleText.setEnabled(false);
  522. }
  523.  
  524. public void redrawMenuControl()
  525. {
  526. // Diagnostics Hides
  527. batteryButton.setEnabled(false);
  528. batteryButton.setVisibility(View.INVISIBLE);
  529.  
  530. cockpitButton.setEnabled(false);
  531. cockpitButton.setVisibility(View.INVISIBLE);
  532.  
  533. IMUGPSButton.setEnabled(false);
  534. IMUGPSButton.setVisibility(View.INVISIBLE);
  535.  
  536. diagInfoText.setEnabled(false);
  537. diagInfoText.setVisibility(View.INVISIBLE);
  538.  
  539. lineGraphView.setEnabled(false);
  540. lineGraphView.setVisibility(View.INVISIBLE);
  541.  
  542. barGraphView.setEnabled(false);
  543. barGraphView.setVisibility(View.INVISIBLE);
  544.  
  545.  
  546. // Control Enables/Visibilities
  547. seekBarSpeed.setVisibility(View.VISIBLE);
  548. seekBarSpeed.setProgress(40);
  549. seekBarSpeed.setEnabled(true);
  550.  
  551. seekBarTurnAngle.setVisibility(View.VISIBLE);
  552. seekBarTurnAngle.setProgress(45);
  553. seekBarTurnAngle.setEnabled(true);
  554.  
  555. controlSpeedText.setVisibility(View.VISIBLE);
  556. String temp = controlSpeedTextHeader + "0";
  557. controlSpeedText.setText(temp);
  558. controlSpeedText.setEnabled(true);
  559.  
  560. controlTurnAngleText.setVisibility(View.VISIBLE);
  561. temp = controlTurnAngleTextHeader + "0";
  562. controlTurnAngleText.setText(temp);
  563. controlTurnAngleText.setEnabled(true);
  564.  
  565. }
  566.  
  567. public void menuButtonGreyOut(Button clickedButton)
  568. {
  569. controlButton.setClickable(true);
  570. controlButton.setEnabled(true);
  571. controlButton.setAlpha(1);
  572.  
  573. diagnosticsButton.setClickable(true);
  574. diagnosticsButton.setEnabled(true);
  575. diagnosticsButton.setAlpha(1);
  576.  
  577. clickedButton.setClickable(false);
  578. clickedButton.setEnabled(false);
  579. clickedButton.setAlpha(greyOutAlpha);
  580. }
  581.  
  582. public void diagButtonGreyOut(Button clickedButton)
  583. {
  584. batteryButton.setClickable(true);
  585. batteryButton.setEnabled(true);
  586. batteryButton.setAlpha(1);
  587.  
  588. cockpitButton.setClickable(true);
  589. cockpitButton.setEnabled(true);
  590. cockpitButton.setAlpha(1);
  591.  
  592. IMUGPSButton.setClickable(true);
  593. IMUGPSButton.setEnabled(true);
  594. IMUGPSButton.setAlpha(1);
  595.  
  596. clickedButton.setClickable(false);
  597. clickedButton.setEnabled(false);
  598. clickedButton.setAlpha(greyOutAlpha);
  599. }
  600.  
  601. public void requestDiagnosticsBattery(MqttAndroidClient client)
  602. {
  603. String pubTopic = carHeader + diagnosticsRequestTopic + "/Battery";
  604. String messagePayload = numRequestPoints;
  605. diagInfoText.setText(diagnosticsInfoTextBlank);
  606. MQTTPublish(client, pubTopic, messagePayload);
  607.  
  608. }
  609.  
  610. public void requestDiagnosticsCockpit(MqttAndroidClient client)
  611. {
  612. String pubTopic = carHeader + diagnosticsRequestTopic + "/Cockpit";
  613. String messagePayload = numRequestPoints;
  614. diagInfoText.setText(diagnosticsInfoTextBlank);
  615. MQTTPublish(client, pubTopic, messagePayload);
  616. }
  617.  
  618. public void requestDiagnosticsIMUGPS(MqttAndroidClient client) {
  619. String pubTopic = carHeader + diagnosticsRequestTopic + "/IMUGPS";
  620. String messagePayload = numRequestPoints;
  621. diagInfoText.setText(diagnosticsInfoTextBlank);
  622. MQTTPublish(client, pubTopic, messagePayload);
  623. }
  624.  
  625. // MQTT publish
  626. public void MQTTPublish(MqttAndroidClient client, String pubTopic, String messagePayload)
  627. {
  628. Log.d(TAG, "MQTTPublish: attempting to publish " + messagePayload + " to topic " +pubTopic);
  629. byte [] encodedPayload;
  630. try {
  631. encodedPayload = messagePayload.getBytes("UTF-8");
  632. MqttMessage message = new MqttMessage(encodedPayload);
  633. client.publish(pubTopic, message);
  634. } catch (UnsupportedEncodingException | MqttException e) {e.printStackTrace();}
  635. }
  636.  
  637. // MQTT subscribe
  638. public void MQTTSubscribe(MqttAndroidClient client, final String subTopic) {
  639. int qos = 1;
  640. try {
  641. IMqttToken subToken = client.subscribe(subTopic, qos);
  642. subToken.setActionCallback(new IMqttActionListener() {
  643. @Override
  644. public void onSuccess(IMqttToken asyncActionToken) {
  645. Log.d(TAG, "onSuccess: Subscribe to " + subTopic + " successful");
  646. }
  647.  
  648. @Override
  649. public void onFailure(IMqttToken asyncActionToken,
  650. Throwable exception) {
  651. Log.d(TAG, "onFailure: Subscribe to " + subTopic + " failed");
  652. }
  653. });
  654. } catch (MqttException e) {
  655. e.printStackTrace();
  656. }
  657. }
  658. //------------------------Functions END---------------------------
  659. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement