Advertisement
tuomasvaltanen

Untitled

Apr 6th, 2023 (edited)
112
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.76 KB | None | 0 0
  1. // Mobiiliohjelmointi, workshop, 6.4
  2.  
  3. // jos AAChartin gradle import ei enää toimi, kokeile vaihtaa build.gradleen:
  4.  
  5. implementation 'com.github.AAChartModel:AAChartCore-Kotlin:7.2.0'
  6.  
  7. // pyöristäminen AACHarttia varten
  8.  
  9. import java.math.BigDecimal
  10. import java.math.RoundingMode
  11. import java.text.DecimalFormat
  12.  
  13.  
  14. fun roundOffDecimal(number: Double): Double? {
  15. val df = DecimalFormat("#.##")
  16. df.roundingMode = RoundingMode.CEILING
  17. return df.format(number).toDouble()
  18. }
  19.  
  20.  
  21. // MQTT -koodissa kun data tulee perille:
  22.  
  23. try {
  24. var item : WeatherStation = gson.fromJson(result, WeatherStation::class.java)
  25.  
  26. // speedviewiä varten haetaan Float-muodossa lämpötila
  27. var temperature = roundOffDecimal(item.d.get1().v.toDouble())
  28.  
  29. // jos tulee raja vastaan, poistetaan vanhimmat mittaukset
  30. while(temperatureList.size >= 12) {
  31. temperatureList.removeAt(0)
  32. }
  33.  
  34. // lisätään listaan viimeisin lämpötila
  35. temperature?.let { temperatureList.add(it.toDouble()) }
  36.  
  37. // rakennetaan graafin data uudestaan
  38. var newArray = arrayOf(
  39. AASeriesElement()
  40. .name("Temperature")
  41. .data(temperatureList.toTypedArray())
  42. )
  43.  
  44. // binding-layeria koskeva koodi ajetaan UI-threadissa
  45. // päivitä chart
  46. activity?.runOnUiThread(java.lang.Runnable {
  47. binding.aaChartView.aa_onlyRefreshTheChartDataWithChartOptionsSeriesArray(newArray, false)
  48. })
  49. }
  50. catch (e : Exception) {
  51. Log.d("ADVTECH", e.message.toString())
  52. }
  53.  
  54.  
  55.  
  56. // jos haluat laittaa valmiiksi Charttiin 12 nollaa (ettei chart
  57. // kasva sivuttaissuunnassa sitä mukaa kun dataa tulee,
  58. // voidaan lista täyttää heti alussa 12:sta 0:lla
  59. for (i in 1..12) {
  60. temperatureList.add(0f.toDouble())
  61. }
  62.  
  63.  
  64. // chartin y-akselin ylä- ja ala-arvot voi säätää myös chartissa, tässä tapauksessa lämpötila, joten kokeillaan -50 ja 50
  65. val aaChartModel : AAChartModel = AAChartModel()
  66. .chartType(AAChartType.Line)
  67. .title("Weather Station")
  68. .subtitle("Sweden")
  69. .dataLabelsEnabled(true)
  70. .yAxisMin(-50)
  71. .yAxisMax(50)
  72. .series(arrayOf(
  73. AASeriesElement()
  74. .name("Temperature")
  75. .data(temperatureList.toTypedArray())
  76. )
  77. )
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement