即使我不动,android中的智能位置库也会改变我的位置

时间:2018-03-22 14:28:53

标签: android location

我制作的Android应用程序必须获得两部手机之间的精确距离。为此,我在android中使用智能位置库来不断更新我在firebase中的位置。但即使我没有移动电话,位置也会在火力基地中不断变化。我知道这可能是因为每次计算时的位置近似值,但是这个应用程序需要在手机彼此相距1米以内时执行功能。最初,它向右显示距离,达到2米。经过一些更新后,距离一直变为6,7,有时甚至是9米。

以下是代码: -

private void startLocationListener() {

    long mLocTrackingInterval = 1000 *10;
    float trackingDistance = 0;
    LocationAccuracy trackingAccuracy = LocationAccuracy.HIGH;

    LocationParams.Builder builder = new LocationParams.Builder()
            .setAccuracy(trackingAccuracy)
            .setDistance(trackingDistance)
            .setInterval(mLocTrackingInterval);

    SmartLocation.with(this)
            .location()
            .config(LocationParams.BEST_EFFORT)
            .continuous()
            .config(builder.build())
            .start(new OnLocationUpdatedListener() {
                @Override
                public void onLocationUpdated(Location location) {
                    //Onlocation update code
                    FirebaseDatabase database = FirebaseDatabase.getInstance();
                    DatabaseReference myRef = database.getReference("users").child(det1.name);

                    myRef.child("phone").setValue(det1.getPhone());
                    myRef.child("latitude").setValue(location.getLatitude());
                    myRef.child("longitude").setValue(location.getLongitude());
                    myRef.child("pass").setValue(det1.getPass());
                    myRef.child("name").setValue(det1.getName());
                }
            });
}

1 个答案:

答案 0 :(得分:1)

知道了,我将trackingDistance从0更改为15。 如果发现位置差异大于15米,则仅调用函数进行更新。

//float trackingDistance=0;
float trackingDistance=15;