最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

android - My AndroidStudio PieView is not showing realtime data from Firebase - Stack Overflow

programmeradmin2浏览0评论

i am new with android studio and koitlin programming in general. I am making a app to show data for humidity and soil moisture sensor. My code seems to work well as there is no error, but the I still not able to get my pieview to show any data from firebase and it shows only 0

I have tried fixing any errors available and making sure i call the right path in firebase. My app doesn't look nice at the moment, i plan to fix it after the data can be retrieved

Here is the code

Data.kt

package com.example.babipunyaproject

import android.os.Bundle
import android.util.Log
import androidx.appcompat.app.AppCompatActivity
import androidx.core.view.ViewCompat
import androidx.core.view.WindowInsetsCompat
import com.example.babipunyaproject.databinding.ActivityDataBinding
import com.google.firebase.database.DataSnapshot
import com.google.firebase.database.DatabaseError
import com.google.firebase.database.ValueEventListener
import com.google.firebase.database.ktx.database
import com.google.firebase.ktx.Firebase
import az.plainpie.PieView
import az.plainpie.animation.PieAngleAnimation

class Data : AppCompatActivity() {
    private lateinit var pieViewHum: PieView
    private lateinit var pieViewSoil: PieView
    private lateinit var binding: ActivityDataBinding

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        Log.d("DataActivity", "onCreate called")
        binding = ActivityDataBinding.inflate(layoutInflater)
        pieViewHum = binding.pieViewHum
        pieViewSoil = binding.pieViewSoil

        setContentView(binding.root)
        Log.d("DataActivity", "Binding initialized")

        // Initialize Firebase
        val database = Firebase.database
        Log.d("DataActivity", "Firebase database initialized")

        // Fetch humidity data
        val humidityRef = database.getReference("DHT11 testing/sensor/humidity")
        humidityRef.addValueEventListener(object : ValueEventListener {
            override fun onDataChange(snapshot: DataSnapshot) {
                Log.d("DataActivity", "Humidity data fetched")
                val humidity = snapshot.getValue(String::class.java)?.toFloatOrNull() ?: 0f
                updatePieView(binding.pieViewHum, humidity)
            }

            override fun onCancelled(error: DatabaseError) {
                Log.e("DataActivity", "Failed to fetch humidity data: ${error.message}")
            }
        })


        // Fetch soil moisture data
        val soilMoistureRef = database.getReference("DHT11 testing/sensor/moistureValue")
        soilMoistureRef.addValueEventListener(object : ValueEventListener {
            override fun onDataChange(snapshot: DataSnapshot) {
                Log.d("DataActivity", "Soil moisture data fetched")
                val soilMoisture = snapshot.getValue(String::class.java)?.toFloatOrNull() ?: 0f
                updatePieView(binding.pieViewSoil, soilMoisture)
            }

            override fun onCancelled(error: DatabaseError) {
                Log.e("DataActivity", "Failed to fetch soil moisture data: ${error.message}")
            }
        })

        ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.linearLayout2)) { v, insets ->
            val systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars())
            v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom)
            insets
        }

    }

    private fun updatePieView(pieView: PieView, value: Float) {
        val valueString = value.toInt().toString() // Convert float to string
        pieView.percentage = value  // Keep the value for visualization
        pieView.setInnerText(valueString) // Display the value as a string inside the PieView
        pieView.pieInnerPadding = 30
        val animation = PieAngleAnimation(pieView)
        animation.duration = 2000
        pieView.startAnimation(animation)
    }

}

activity_data.xml

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android=";
    xmlns:tools=";
    android:id="@+id/linearLayout2"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/grey"
    tools:context=".Data">

    <ScrollView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:ignore="MissingConstraints">

        <TableLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="10dp">

            <!-- Third LinearLayout -->
            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content">

                <Space
                    android:layout_width="@dimen/auto_dp_10"
                    android:layout_height="wrap_content" />

                <TextView
                    android:layout_width="193dp"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center"
                    android:layout_marginStart="5dp"
                    android:background="@drawable/background_gardient"
                    android:gravity="center"
                    android:text="@string/Air_Humidity"
                    android:textColor="#ffff"
                    android:textSize="20sp" />

                <Space
                    android:layout_width="@dimen/auto_dp_10"
                    android:layout_height="wrap_content" />

                <TextView
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_gravity="start"
                    android:layout_marginStart="5dp"
                    android:background="@drawable/background_gardient"
                    android:gravity="center"
                    android:text="@string/Soil_Moisture"
                    android:textColor="#ffff"
                    android:textSize="20sp" />
            </LinearLayout>

            <!-- Fourth LinearLayout -->
            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content">

                <Space
                    android:layout_width="40dp"
                    android:layout_height="@dimen/auto_dp_15" />

                <androidx.cardview.widget.CardView
                    android:layout_width="90dp"
                    android:layout_height="90dp"
                    android:layout_margin="20dp">

                    <az.plainpie.PieView
                        android:id="@+id/pieView_hum"
                        android:layout_width="80dp"
                        android:layout_height="80dp"
                        android:layout_gravity="center"
                        tools:ignore="MissingConstraints" />
                </androidx.cardview.widget.CardView>

                <Space
                    android:layout_width="60dp"
                    android:layout_height="20dp" />

                <androidx.cardview.widget.CardView
                    android:layout_width="90dp"
                    android:layout_height="90dp"
                    android:layout_margin="20dp"
                    android:layout_marginStart="70dp">

                    <az.plainpie.PieView
                        android:id="@+id/pieView_soil"
                        android:layout_width="80dp"
                        android:layout_height="80dp"
                        android:layout_gravity="center"
                        tools:ignore="MissingConstraints" />
                </androidx.cardview.widget.CardView>
            </LinearLayout>
        </TableLayout>
    </ScrollView>
</androidx.constraintlayout.widget.ConstraintLayout>
发布评论

评论列表(0)

  1. 暂无评论