我制作的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());
}
});
}
答案 0 :(得分:1)
知道了,我将trackingDistance从0更改为15。 如果发现位置差异大于15米,则仅调用函数进行更新。
//float trackingDistance=0;
float trackingDistance=15;