从网上获取时间
Get time from online
有什么方法可以为我的 android 应用程序在线获取时间。我想创建一个 android 应用程序,我需要在其中使用不受更改设备时间影响的时间。所以我想从在线或 firebase 数据库中获取当前时间。
如果您不关心毫秒精度,并且您已经在使用 google firebase 或不介意使用它(他们提供免费套餐),请查看:https://firebase.google.com/docs/database/android/offline-capabilities#clock-skew
基本上,firebase 数据库有一个字段提供设备时间和 firebase 服务器时间之间的偏移值。您可以使用此偏移量来获取当前时间。
DatabaseReference offsetRef =
FirebaseDatabase.getInstance().getReference(".info/serverTimeOffset");
offsetRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot snapshot) {
double offset = snapshot.getValue(Double.class);
double estimatedServerTimeMs = System.currentTimeMillis() + offset;
}
@Override
public void onCancelled(DatabaseError error) {
System.err.println("Listener was cancelled");
}
});
如果您希望在使用 Firebase 创建帐户时创建时间,请试试这个:
FirebaseAuth mAuth = FirebaseAuth.getInstance();
FirebaseUserMetadata metadata = mAuth.getCurrentUser().getMetadata();
if(metadata != null) {
System.out.println("CREATED TIME ======>" + metadata.getCreationTimestamp());
}
有什么方法可以为我的 android 应用程序在线获取时间。我想创建一个 android 应用程序,我需要在其中使用不受更改设备时间影响的时间。所以我想从在线或 firebase 数据库中获取当前时间。
如果您不关心毫秒精度,并且您已经在使用 google firebase 或不介意使用它(他们提供免费套餐),请查看:https://firebase.google.com/docs/database/android/offline-capabilities#clock-skew
基本上,firebase 数据库有一个字段提供设备时间和 firebase 服务器时间之间的偏移值。您可以使用此偏移量来获取当前时间。
DatabaseReference offsetRef =
FirebaseDatabase.getInstance().getReference(".info/serverTimeOffset");
offsetRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot snapshot) {
double offset = snapshot.getValue(Double.class);
double estimatedServerTimeMs = System.currentTimeMillis() + offset;
}
@Override
public void onCancelled(DatabaseError error) {
System.err.println("Listener was cancelled");
}
});
如果您希望在使用 Firebase 创建帐户时创建时间,请试试这个:
FirebaseAuth mAuth = FirebaseAuth.getInstance();
FirebaseUserMetadata metadata = mAuth.getCurrentUser().getMetadata();
if(metadata != null) {
System.out.println("CREATED TIME ======>" + metadata.getCreationTimestamp());
}