2016-12-13 4 views
0

앱에서 Google Play 서비스의 융합 위치 API를 구현하여 사용자 위치를 지속적으로 확보했습니다. Wi-Fi를 사용할 때 모든 것이 잘 작동합니다.융합 위치 제공 업체 Wi-Fi가 꺼져있을 때 Gps에서 위치 정보 가져 오기

그러나 Wi-Fi를 끄면 셀룰러 정보를 사용하여 사용자 위치를 업데이트하므로 정확도가 700 미터 이상이됩니다.

내가 원하는 것은 wifi가 꺼져있을 때 GPS에서 사용자 위치를 얻는 것입니다.

protected synchronized void buildGoogleApiClient() { 
    Log.i(TAG, "Building GoogleApiClient"); 
    mGoogleApiClient = new GoogleApiClient.Builder(this) 
      .addConnectionCallbacks(this) 
      .addOnConnectionFailedListener(this) 
      .addApi(LocationServices.API) 
      .build(); 
    createLocationRequest(); 
} 

protected void createLocationRequest() { 
    mLocationRequest = new LocationRequest(); 


    mLocationRequest.setInterval(UPDATE_INTERVAL_IN_MILLISECONDS); 


    mLocationRequest.setFastestInterval(FASTEST_UPDATE_INTERVAL_IN_MILLISECONDS); 

    mLocationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY); 
} 

@Override 
public void onConnected(Bundle connectionHint) { 
    Log.i(TAG, "Connected to GoogleApiClient"); 


    if (mCurrentLocation == null) { 
     mCurrentLocation = LocationServices.FusedLocationApi.getLastLocation(mGoogleApiClient); 
     mLastUpdateTime = DateFormat.getTimeInstance().format(new Date()); 
     updateUI(); 
    } 

    if (mRequestingLocationUpdates) { 
     startLocationUpdates(); 
    } 
} 


@Override 
public void onLocationChanged(Location location) { 
    mCurrentLocation = location; 
    mLastUpdateTime = DateFormat.getTimeInstance().format(new Date()); 
    updateUI(); 
    Toast.makeText(this, getResources().getString(R.string.location_updated_message), 
      Toast.LENGTH_SHORT).show(); 
} 
+0

이것을 mLocationRequest에 추가하십시오. 'mLocationRequest.setSmallestDisplacement (5);' –

+0

이것은 업데이트를 위해 단지 5m 이동을 설정합니다. –

+0

사용자 위치가 5 미터 이상 변경되면 위치 업데이트가 실행되므로 정확도가 높아집니다. –

답변

0

위치 서비스를 사용하는 앱은 위치 권한을 요청해야합니다. Android는 ACCESS_COARSE_LOCATION 및 ACCESS_FINE_LOCATION이라는 두 가지 위치 권한을 제공합니다. 선택한 권한에 따라 API가 반환하는 위치의 정확도가 결정됩니다. 다른 단어에서

,이 같은 다음도 정확도에 영향을 미치는 위치를 결정하기 위해 사용되는 공급자를 결정할 선택 권한 : ACCESS_FINE_LOCATION -> GPS, 셀, 와이파이 ACCESS_COARSE_LOCATION -> 셀 및 Wi-Fi 전용

정확도는 제공 업체에 따라 다릅니다. 그러나 우선 순위 LocationRequest와 결합하십시오 .PRIORITY_HIGH_ACCURACY -> 앱이 GPS를 사용하여 위치를 파악할 가능성이 높습니다.