Android应用程序和Firebase连接在一起。
当Arduino火焰检测传感器检测到火焰时,Firebase中的数据值(名称:"state")从1变为0,如下所示:

当这个值(“state”)更改为0时,我想在Android应用程序中自动显示图像。
这是我的密码
package com.example.framelayoutex;
public class MainActivity extends AppCompatActivity {
private DatabaseReference mDatabase;
private FirebaseDatabase mFirebaseDatabase;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
private void readState(String state){
TimerTask task = new TimerTask() {
@Override
public void run() {
/*You're only going to get the last value of 'state'*/
mDatabase.child("state").limitToLast(1).get().addOnCompleteListener(new OnCompleteListener<DataSnapshot>() {
@Override
public void onComplete(@NonNull Task<DataSnapshot> task) {
ImageView imageView = findViewById(R.id.fire);
if (task.isSuccessful())/*Communication with Firebase succeeded*/ {
Log.d("firebase", String.valueOf(task.getResult().getValue()));
int firescan = (int) task.getResult().getValue();
if (firescan == 0){
imageView.setVisibility(View.VISIBLE);
}
else{
imageView.setVisibility(View.INVISIBLE);
}
}
else {
Log.e("firebase", "Error getting data", task.getException());/*Communication with Firebase failed*/
}
}
});
}
};
}
}我获得了火基状态的最后一个值,并将其放入一个名为firescan的int类型变量中,如果firescan为0,则图像是可见的,如果为1,则图像是不可见的。
它运行时没有错误,但是图像没有按需要改变。
我想知道为什么,但我是初学者,所以我不知道出了什么问题。我想听听你的建议。谢谢。
发布于 2022-04-27 14:26:57
当您对Firebase数据库执行查询时,可能会有多个结果。因此,快照包含这些结果的列表。即使只有一个结果,快照也会包含一个结果的列表。
您的onComplete中的代码需要通过在task.getResult().getChildren()上循环来处理它得到一个列表的事实。
mDatabase.child("state").limitToLast(1).get().addOnCompleteListener(new OnCompleteListener<DataSnapshot>() {
@Override
public void onComplete(@NonNull Task<DataSnapshot> task) {
ImageView imageView = findViewById(R.id.fire);
if (task.isSuccessful()) {
DataSnapshot snapshot = task.getResult();
for (DataSnapshot result: snapshot.getChildren()) { //
int firescan = result.getValue(Integer.class);
if (firescan == 0){
imageView.setVisibility(View.VISIBLE);
}
else{
imageView.setVisibility(View.INVISIBLE);
}
}
}
else {
Log.e("firebase", "Error getting data", task.getException());
}
}
});https://stackoverflow.com/questions/72027234
复制相似问题