Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Mobiiliohjelmointi, workshop, 6.4
- // jos AAChartin gradle import ei enää toimi, kokeile vaihtaa build.gradleen:
- implementation 'com.github.AAChartModel:AAChartCore-Kotlin:7.2.0'
- // pyöristäminen AACHarttia varten
- import java.math.BigDecimal
- import java.math.RoundingMode
- import java.text.DecimalFormat
- fun roundOffDecimal(number: Double): Double? {
- val df = DecimalFormat("#.##")
- df.roundingMode = RoundingMode.CEILING
- return df.format(number).toDouble()
- }
- // MQTT -koodissa kun data tulee perille:
- try {
- var item : WeatherStation = gson.fromJson(result, WeatherStation::class.java)
- // speedviewiä varten haetaan Float-muodossa lämpötila
- var temperature = roundOffDecimal(item.d.get1().v.toDouble())
- // jos tulee raja vastaan, poistetaan vanhimmat mittaukset
- while(temperatureList.size >= 12) {
- temperatureList.removeAt(0)
- }
- // lisätään listaan viimeisin lämpötila
- temperature?.let { temperatureList.add(it.toDouble()) }
- // rakennetaan graafin data uudestaan
- var newArray = arrayOf(
- AASeriesElement()
- .name("Temperature")
- .data(temperatureList.toTypedArray())
- )
- // binding-layeria koskeva koodi ajetaan UI-threadissa
- // päivitä chart
- activity?.runOnUiThread(java.lang.Runnable {
- binding.aaChartView.aa_onlyRefreshTheChartDataWithChartOptionsSeriesArray(newArray, false)
- })
- }
- catch (e : Exception) {
- Log.d("ADVTECH", e.message.toString())
- }
- // jos haluat laittaa valmiiksi Charttiin 12 nollaa (ettei chart
- // kasva sivuttaissuunnassa sitä mukaa kun dataa tulee,
- // voidaan lista täyttää heti alussa 12:sta 0:lla
- for (i in 1..12) {
- temperatureList.add(0f.toDouble())
- }
- // chartin y-akselin ylä- ja ala-arvot voi säätää myös chartissa, tässä tapauksessa lämpötila, joten kokeillaan -50 ja 50
- val aaChartModel : AAChartModel = AAChartModel()
- .chartType(AAChartType.Line)
- .title("Weather Station")
- .subtitle("Sweden")
- .dataLabelsEnabled(true)
- .yAxisMin(-50)
- .yAxisMax(50)
- .series(arrayOf(
- AASeriesElement()
- .name("Temperature")
- .data(temperatureList.toTypedArray())
- )
- )
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement