使用FireBase查找nearst用户(想到geofire?)

时间:2016-08-14 11:09:03

标签: java android firebase firebase-realtime-database

我试图找到每个在线用户的最近用户, 这是我的firebase数据库:

database

这是获取数据的MainActivity onCreate函数:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    mSharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);
    // Set default username is anonymous.
    mUsername = ANONYMOUS;
    mFirebaseAnalytics = FirebaseAnalytics.getInstance(this);
    // Initialize Firebase Auth
    mFirebaseAuth = FirebaseAuth.getInstance();
    mFirebaseUser = mFirebaseAuth.getCurrentUser();
    if (mFirebaseUser == null) {
        // Not signed in, launch the Sign In activity
        startActivity(new Intent(this, SignInActivity.class));
        finish();
        return;
    } else {
        mUsername = mFirebaseUser.getDisplayName();
        if (mFirebaseUser.getPhotoUrl() != null) {
            mPhotoUrl = mFirebaseUser.getPhotoUrl().toString();
        }
    }

    mGoogleApiClient = new GoogleApiClient.Builder(this)
        .enableAutoManage(this, this)
        .addApi(Auth.GOOGLE_SIGN_IN_API)
        .addApi(AppInvite.API)
        .build();

    setContentView(R.layout.activity_user_profile);
    Firebase.setAndroidContext(this);
    gpsTracker = new GPSTracker(MainActivity.this);
    double lat = gpsTracker.getLatitude();
    double lang = gpsTracker.getLongitude();
    mDatabase = FirebaseDatabase.getInstance().getReference();
    mAuth = FirebaseAuth.getInstance();
    mDatabase.child("User").child(mAuth.getCurrentUser().getUid()).child("latitude").setValue(lat);
    mDatabase.child("User").child(mAuth.getCurrentUser().getUid()).child("longitude").setValue(lang);
    mDatabase.child("User").child(mAuth.getCurrentUser().getUid()).child("Availability").setValue(true);
    mDatabase.child("User").child(mAuth.getCurrentUser().getUid()).child("Availability").onDisconnect().setValue(false);

    FirebaseOptions options = new     FirebaseOptions.Builder().setApplicationId("geofire").setDatabaseUrl(GEO_FIRE_DB).build();
    FirebaseApp app = FirebaseApp.initializeApp(this, options);
    // setup GeoFire
    this.geoFire = new     GeoFire(FirebaseDatabase.getInstance(app).getReferenceFromUrl(GEO_FIRE_REF));
}

我是Android开发的新手,这是我的第一个真正的应用程序,我的下一个任务是使用存储在数据库中的信息,这样每个用户都可以与最近的用户建立联系。我该怎么做?我考虑过创建具有所有用户距离的哈希值,并通过SharedPreferences将其保存在用户中。

请帮帮我。 非常感谢你。

1 个答案:

答案 0 :(得分:0)

这是你可以做的事情

float secRot = (mTime.second / 30f) * (float) Math.PI;
    int minutes = mTime.minute;
    float minRot = minutes / 30f * (float) Math.PI;
    float hrRot = ((mTime.hour + (minutes / 60f)) / 6f) * (float) Math.PI;