我目前正在开发一个应用程序,该程序可以让我通过Firebase实时数据库控制多件事。例如:我可以通过按下按钮来打开和关闭灯。我添加的最后一个功能是“快速设置”图块,因此请打开或关闭所述指示灯。为此,我将TileService与Firebase结合使用,如下所示。这可以正常工作,直到屏幕锁定一会儿。如果再单击该图块,则它会打开或关闭,但是不会更新Firebase数据库。我想手机进入睡眠模式并阻止Tile使用互联网连接?澄清一下:唯一不起作用的是在我手动在线更改Firebase值时更新Firebase值/更新Icon。 这是数据库的引用方式:
FirebaseDatabase database = FirebaseDatabase.getInstance();
DatabaseReference myRef = database.getReference();
final DatabaseReference tripodstatus=myRef.child("tripod").child("status");
这是onStartListening代码:
@Override
public void onStartListening(){
tripodstatus.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(Datasnapshot datasnapshot) {
// This method is called once with the initial value and again
// whenever data at this location is updated.
String value = datasnapshot.getvalue(String.class);
int val = Integer.parseInt(value);
if(val == 0){
readstate=false;
}
else{
readstate=true;
}
refresh(readstate);
Log.d("file","Value is: " + val + readstate);
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
Context context = getapplicationContext();
CharSequence text = (CharSequence)databaseError;
int duration = Toast.LENGTH_SHORT;
Toast toast = Toast.makeText(context,text,duration);
toast.show();
}
});
这就是我单击它时所做的事情(将其关闭基本上是相同的)
getQsTile().setState(STATE_actIVE);
Icon icon = Icon.createWithResource(getapplicationContext(),statusImages[1]);
getQsTile().setIcon(icon);
getQsTile().updateTile();
tripodstatus.setvalue("1");
我认为打开它的函数被调用(因为Tile切换为活动状态),但是它以某种方式无法更新Firebase。非常感谢您提供修复方面的帮助。