作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用带有 Firebase 的 Android Studio。我已将我的项目链接到数据库并完成了用于登录和注册的用户界面。用户现在可以注册,我可以在 Firebase 中看到。用户登录后,他们可以看到 MapsActivity(谷歌地图,他们可以在其中跟踪自己的位置,但该位置并未存储在任何地方,我观看了有关跟踪自己位置的 YouTube 教程)
问题:我真正想要的是,当用户注册时,他们的位置也被发送到数据库中(所以每个用户都有一个称为位置的属性),这样当用户登录时,可以检索到他/她自己的位置跟踪位置。
基本上,Firebase 应该在用户注册时存储位置,并在用户移动时不断更新它。用户登录后,应检索位置(以便用户可以跟踪当前位置)。同样,当用户移动时,应更新 Firebase 中的位置。
我尝试在网上查找,但似乎找不到解决方案。
最佳答案
您可以使用 LocationListener .这是一个简单的例子:
LocationListener locationListener = new android.location.LocationListener() {
@Override
public void onLocationChanged(Location location) {
double latitude = location.getLatitude();
double longitude = location.getLongitude();
// Push your location to FireBase
}
@Override
public void onStatusChanged(String s, int i, Bundle bundle) {
}
@Override
public void onProviderEnabled(String s) {
}
@Override
public void onProviderDisabled(String s) {
}
};
LocationManager locationManager = (LocationManager) getActivity().getSystemService(LOCATION_SERVICE);
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, locationListener);
locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, locationListener);
private FirebaseDatabase database = FirebaseDatabase.getInstance();
private DatabaseReference myRef = database.getReference();
SharedPreferences
例如。
public void postToDatabase(UserLocation location) {
DatabaseReference usersRef = myRef.child(someUUID);
usersRef.setValue(location);
}
ValueEventListener
.一个例子,但必须适应您的需求
ValueEventListener valueEventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for(DataSnapshot snapshot : dataSnapshot.getChildren()) {
UserLocation location = new UserLocation();
location.setLongitude((String) snapshot.child("longitude").getValue());
location.setLatitude((String) snapshot.child("latitute").getValue());
//Dispatch your changes in application, i.e with and EventBus
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
};
关于java - 如何在 Firebase 中实时存储位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44670356/
我是一名优秀的程序员,十分优秀!