Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/212.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么当前位置和FusedLocationClient.RequestLocationUpdate提供的位置之间存在差异_Java_Android_Google Play Services_Google Maps Android Api 2_Fusedlocationproviderapi - Fatal编程技术网

Java 为什么当前位置和FusedLocationClient.RequestLocationUpdate提供的位置之间存在差异

Java 为什么当前位置和FusedLocationClient.RequestLocationUpdate提供的位置之间存在差异,java,android,google-play-services,google-maps-android-api-2,fusedlocationproviderapi,Java,Android,Google Play Services,Google Maps Android Api 2,Fusedlocationproviderapi,我只想在我从当前位置移动至少3米时获得当前位置的更新 FusedLocationClient.requestLocationUpdates 为此,我提出了如下定位请求: private LocationRequest requestLocation(){ LocationRequest mLocationRequest = new LocationRequest();

我只想在我从当前位置移动至少3米时获得当前位置的更新

FusedLocationClient.requestLocationUpdates
为此,我提出了如下定位请求:

 private LocationRequest requestLocation(){

 LocationRequest mLocationRequest = new LocationRequest();                                                                                                              
 mLocationRequest.setSmallestDisplacement(3.81f);                                                                                                                                                 
 mLocationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);            
 return mLocationRequest;                                                         
 }
并实现如下:连接到play服务后

@Override
public void onConnected(Bundle bundle) {                                                                  

mFusedLocationClient.requestLocationUpdates(requestLocation(), 
new LocationCallback() {               
    @Override                                                                                         
    public void onLocationResult(LocationResult locationResult) {                                     
        for (final Location location : locationResult.getLocations()) {                               

            tvLat.setText(Double.toString(location.getLatitude()));                                   
            tvLng.setText(Double.toString(location.getLongitude()));                                  

           //changing position of marker and camera                                                                                    
            changeCameraPosition(CameraUpdateFactory.newLatLngZoom(                                   
             new LatLng(location.getLatitude(), location.getLongitude()),                      
                    16), new GoogleMap.CancelableCallback() {                                         

      @Override                                                                             
      public void onFinish() {}                                                          


      @Override                                                                             
      public void onCancel() { }                                                             

            });                                                                                       

        }                                                                                             
    }                                                                                                 
    }, Looper.myLooper());                                                                                
但我从这个离我目前位置至少650m远的地方得到了许可,即使我没有移动一点,这是我在清单中的权限:

<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="permission.READ_GSERVICES" />                                                                                                                                                                                      


也许你可以检查一下这个:当你移动时,看看你的距离的差异,这样你就能知道过度移动发生在哪里。

上一个位置和当前位置之间有差异吗,因为使用fusedlocation.lastlocation我们可以知道当前位置