我在 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);
}
}
你的代码基本上没问题,但颜色没有改变。
找出可能出现问题的地方:
<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);
这些可能是可能出现的问题。请检查并告诉我。