2016-09-29 12 views
0

누군가의 GPS를 추적하고 있기 때문에 때때로 Firebase에서 데이터를 가져옵니다. 그 사람이 5 분 간격으로 자신의 위치를 ​​저장하므로 GPS를 추적 할 수 있습니다. 하지만 제 문제는 Firebase에서 5 분 간격으로 데이터를 가져 오는 방법입니다.가끔 Firebase에서 데이터를 가져 오는 방법은 무엇입니까?

아니면 다른 방법이 있습니까?

미리 감사드립니다. :)

답변

4

누군가 5 분마다 자신의 위치를 ​​업데이트하는 경우 5 분마다 위치를 추적하려면 실제로 CounterDownTimer을 실행하지 않아도됩니다. 그래서 당신이 추적하고자하는 Firebase의 노드에 리스너를 추가하기 만하면됩니다.

여기 간단한 구현 방법이 나와 있습니다. Firebase Tutorial

Firebase ref = new Firebase("https://docs-examples.firebaseio.com/web/saving-data/fireblog/posts"); 
// Attach an listener to read the data at our posts reference 
ref.addValueEventListener(new ValueEventListener() { 
    @Override 
    public void onDataChange(DataSnapshot snapshot) { 
     System.out.println(snapshot.getValue()); 
    } 
    @Override 
    public void onCancelled(FirebaseError firebaseError) { 
     System.out.println("The read failed: " + firebaseError.getMessage()); 
    } 
}); 

에서 복사 내가 거기 너무에서 따옴표를 복사하고 있습니다. 그래서 그것이 당신의 목적에 부합한다는 것을 알게됩니다.

이 방법은 새로운 데이터가 우리의 중포 기지 참조에 추가됩니다 언제 호출됩니다, 우리는 이런 일이 수 있도록 여분의 코드를 작성할 필요가 없습니다.

그래서 추적하려는 사람이 자신의 위치를 ​​업데이트 할 때마다 위에 명시된 방법으로 콜백을 받아 필요한 조치를 취합니다. 추적을 수행하기 위해 실제로 폴링 메커니즘을 구현할 필요는 없습니다. 이것이 파이어베이스가 실제로 작동하는 방식입니다.

+0

예, 대답이 작동 잘. 추가하는 대신 데이터를 업데이트하기 만하면됩니다. 거기에 대한 방법이 있습니까? – tin

+0

이 콜백 메소드는 업데이트시에도 호출됩니다. 이름은 혼란 스럽다. –

+1

괜찮으 시다면, 예를 들어 드리겠습니다. 이전 마커를 제거하고 현재 마커를 표시하는 대신 실행중인 앱을 확인하면서 'Firebase'에서 특정 어린이의 위도와 경도를 변경/업데이트하려고했습니다. 둘 다 표시됩니다. 하지만 앱을 강제 종료하고 다시 열면 마커에 커렛 마커가 표시됩니다. heheh를 이해하시기 바랍니다. – tin

1

아니오 firebase에서 데이터를 검색하기 위해 스케줄러에 대한 서비스를 제공 할 필요가 없습니다.

으로 중포 기지 당신이 리스너가 트리거 당신이 당신의 데이터를 검색 할 수 있습니다 중포 기지 데이터베이스에 데이터를 푸시 할 때마다

데이터베이스가 갱신을받을 때마다이 당신이 당신의 데이터를 검색 할 수 있습니다 사용, 리스너 다음 구현 ... .. 실시간 데이터베이스를 제공 . 청취자에 대한 추가 정보를 원하시면

DatabaseReference mDatabase =FirebaseDatabase.getInstance().getReference(); 


ValueEventListener yourModelListener = new ValueEventListener() { 
    @Override 
    public void onDataChange(DataSnapshot dataSnapshot) { 
     // Get YOURMODEL object and use the values to update the UI 
     YourModel mModel = dataSnapshot.getValue(YourModel.class); 
     Log.e("Data : ",""+mModel); 

    } 

    @Override 
    public void onCancelled(DatabaseError databaseError) { 
     // Getting Post failed, log a message 
     Log.w(TAG, "loadPost:onCancelled", databaseError.toException()); 

    } 
}; 

mDatabase.addValueEventListener(yourModelListener); 

.. https://firebase.google.com/docs/database/android/retrieve-data

관련 문제