如何在我的Android应用程序中使用Firebase实时数据库来跟踪某个人的位置?

时间:2017-04-05 16:03:55

标签: android google-maps android-studio firebase geolocation

我正在创建一个应用程序,我可以在其中查看具有相同应用程序的其他人的位置,并且它将实时显示他的动作。我将使用Firebase实时数据库,但我不知道如何开始。所以,应用程序会将其位置发送到firebase数据库,而使用相同应用程序的另一个用户将能够跟踪此用户并在谷歌地图中获取他的位置。请提供相关链接或显示入门步骤。

1 个答案:

答案 0 :(得分:2)

您必须先通过Google Play服务实施地点API,才能获得用户的位置信息。请注意,完成此操作的其余部分取决于您构建Firebase的方式。该位置可能只是用户对象中的lat lon变量,因此您可能只是更新用户对象中的子值。在不知道你的结构的情况下,我只能概括一下如何做到这一点。假设您有一个与用户以某种方式关联的位置对象。然后,您可以设置具有该位置的相关变量的排序的位置类;类似的东西:

public class MyLocation {
    public double lat;
    public double lon;
    public String nameOfPlace;

    public MyLocation(double lat, double lon, String name){
        this.lat = lat;
        this.lon = lon;
        nameofPlace = name;
    }
}

然后,您可以随时访问用户位置,为此您可以使用SyncAdapterJobSchedulerGCMTaskService等。然后假设您已经设置了Firebase,请创建一个新对象并将其发送出去:

MyLocation myLocation = new MyLocation(latFromApi, lonFromApi, name);

您的firebase的结构决定了您是推动对象还是使用setValue等。但您应该更新用户类中的位置,或者如果您有一个扁平结构并且位置是用户有一个引用,只是更新位置,如果您是第一次推送该位置,请确保用户对该位置的引用也已更新。

之后,您可以设置ChildEventListener或更有可能设置ValueEventLister来监听某个位置的更改。