В настоящее время я занимаюсь разработкой приложения, которое позволяет мне управлять несколькими вещами через базу данных Firebase Real Time. Например: я могу включать и выключать свет нажатием кнопки. Последней функцией, которую я добавил, была плитка быстрых настроек, поэтому включайте или выключайте указанную лампу. Для этого я использовал TileService в сочетании с Firebase, как показано ниже. Это работает нормально, пока экран не заблокирован на некоторое время. Если я затем щелкаю плитку, она включается или выключается, однако не обновляет базу данных Firebase. Я полагаю, что телефон переходит в спящий режим и удерживает Tile от подключения к интернету? Чтобы уточнить: единственное, что не работает, это обновление значения базы данных / обновление значка, когда я вручную изменяю значение базы данных в Интернете. Вот как ссылка на базу данных:
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. Я был бы очень признателен за любую помощь, как это исправить.