如何根据传感器值更改文本框颜色?

问题描述 投票:0回答:1

我在 Android Studio 中有一个应用程序,它通过蓝牙连接到 Arduino。我有一个绿色的矩形,只要传感器值大于 0,我希望它将颜色更改为红色。我知道应用程序正在接收信息,因为我有一个文本框并且它正在更新正确的值。文字颜色不更新是什么问题?

我尝试放置一个文本框来查看arduino的蓝牙是否正在发送信息,是的,他发送了

这是代码:

// Atualiza a TextView com o valor do sensor
private void updateSensorValue(String data) {
    Log.d("SensorData", "Atualizando valor: " + data);
    sensorValueText.setText("Valor do Sensor: " + data);
}

private void updateParkingValue(String data) {
    Log.d("ParkingData", "Atualizando valor do estacionamento: " + data);

    try {
        if (data != null && !data.isEmpty() && Integer.parseInt(data) > 0) {
            // Estacionamento Ocupado
            Log.d("ParkingData", "Estacionamento Ocupado");
            runOnUiThread(new Runnable() {
                @Override
                public void run() {
                    parkingLeftText.setText("Estacionamento Ocupado");
                    // Define a cor de fundo como vermelho (ocupado) usando a cor do colors.xml
                    parkingLeftText.setBackgroundColor(getResources().getColor(R.color.color_occupied));  // Cor vermelha
                }
            });
        } else {
            // Estacionamento Livre
            Log.d("ParkingData", "Estacionamento Livre");
            runOnUiThread(new Runnable() {
                @Override
                public void run() {
                    parkingLeftText.setText("Estacionamento Livre");
                    // Define a cor de fundo como verde (livre) usando a cor do colors.xml
                    parkingLeftText.setBackgroundColor(getResources().getColor(R.color.color_available));  // Cor verde
                }
            });
        }
    } catch (NumberFormatException e) {
        Log.e("ParkingData", "Erro ao converter o valor: " + data, e);
    }
}
java android kotlin arduino bluetooth
1个回答
0
投票

你的代码基本上没问题,但颜色没有改变。

找出可能出现问题的地方:

<color name="color_occupied">#FF0000</color> <!-- Red -->
<color name="color_available">#00FF00</color> <!-- Green -->

检查您是否在 colors.xml 文件中添加了这些颜色

可能Arduino发送的数据有多余的空格或奇怪的字符。通过添加 data.trim() 来修复此问题,以便在使用数据之前清理数据。

Integer.parseInt(data.trim()) > 0

确保parkingLeftText是正确的视图。 检查您的 XML 布局文件并确认您在代码中正确连接了它:

parkingLeftText = findViewById(R.id.parkingLeftText);

这些可能是可能出现的问题。请检查并告诉我。

© www.soinside.com 2019 - 2024. All rights reserved.