#java #android #firebase
#java #Android #firebase
Вопрос:
Я новичок в Firebase, и я реализовал его в своем приложении для Android, чувствительном к землетрясениям. Моя структура выглядит следующим образом
Итак, каждый раз, когда мое приложение обнаруживает землетрясение, оно делает запись в Firebase, как указано выше. Однако я хочу использовать данные с других устройств, чтобы определить, было ли землетрясение законным или нет. В частности, каждый раз, когда 1 устройство распознает одно, я хочу проверить firebase, если в последнюю минуту была еще одна запись с другого устройства (в идеале я хотел бы также проверить координаты, чтобы узнать, находится ли оно поблизости, но я увидел, что это сложнее выполнить, поэтому вы можетепропустите это). Есть идеи о том, как это возможно? По сути, я просто хочу проверить, существуют ли новые записи в течение 1 минуты после моей записи (я также мог бы сделать проверку через 1 минуту, на случай, если мое устройство первым обнаружило его).
Заранее большое спасибо.
Комментарии:
1. Что вы уже пробовали в коде?
2. В настоящее время я как бы застрял на этом. Я успешно вставил данные в firebase, и я подумал, что, возможно, onDataChange или с помощью onChildAdded что-то может помочь, но не уверен :/
Ответ №1:
Запросы к базе данных Firebase в реальном времени представляют собой многоступенчатый процесс:
- Упорядочите данные по определенному значению свойства.
- Определите начальный узел и / или конечный узел для возврата (иногда называемый срезом).
- Необязательно ограничивать количество возвращаемых узлов.
В Android это выглядело бы примерно так:
DatabaseReference ref = FirebaseDatabase.getInstance().getReference("Earthquakes");
Query query = ref.orderByChild("timestamp").startAt("2020-11-03 18:12:00").endAt("2020-11-03 18:12:59").
query.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot quakeSnapshot: dataSnapshot.getChildren()) {
Log.i("DB", quakeSnapshot.getKey());
Log.i("DB", quakeSnapshot.child("eventType").getValue(String.class));
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
throw databaseError.toException();
}
}
Я настоятельно рекомендую прочитать документацию Firebase по чтению и запрашиванию данных и использовать Codelab для разработчиков Android.
Комментарии:
1. Извините, еще 1 вопрос. Если я хочу проверить значение пользователя в результатах, полученных запросом, как я могу это сделать?
2. Это будет:
quakeSnapshot.child("user").getValue(String.class)