2017-12-05 3 views
-3

私はGPSトラッカーを使ってlat-longを取得していますが、現在の正確な位置を取得していません。現在の位置から50m離れた場所です。GPSトラッカーのみを使用しています。すべての回答は、以前の質問で言及されているように、デバイスからデバイスに変化していません。私は彼らに有益な答えを得ていませんでした。GPSトラッカーを使って正確な緯度と経度を取得する方法は?

正確な位置のための
+2

正確性とは何か関係ありますか?あなたがこれを知っていることを願っています https://developer.android.com/reference/android/location/Location.html#getAccuracy() – himel

+0

[アンドロイドの正確な現在地が見つかりません](https:///stackoverflow.com/questions/23889834/cant-find-the-exact-current-location-in-android) –

答えて

0

Fuを使用する私たちはより正確な緯度と経度を得ることができますが、常に100%ではありませんGoogleのsedの位置APIです。融合位置のAPIは、GPSのトラッカーより良いです。

1

使用するGoogleクライアントAPI

あなたはあなただけのGradle(アプリケーションレベル)での位置ライブラリを適用するGoogleの位置情報API からFusedLocationProviderClientを使用することができます https://www.androidhive.info/2015/02/android-location-api-using-google-play-services/

+0

私はすでにこの例を実装していますが、正確な位置.thanksを取得していません。 –

0

をrefer-することができます。ここで

compile 'com.google.android.gms:play-services-location:11.6.0' 

とアプリレベルのGradleの下部に次の行を追加

apply plugin: 'com.google.gms.google-services' 

はmainActivity

public class MainActivity extends Service implements GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener { 
LocationRequest mLocationRequest; 
GoogleApiClient mGoogleApiClient; 
Location mLastLocation; 
FusedLocationProviderClient mFusedLocationClient; 

private static final String TAG="Logs Details"; 


@Override 
public int onStartCommand(Intent intent, int flags, int startId) { 

    buildGoogleApiClient(); 
    mFusedLocationClient = LocationServices.getFusedLocationProviderClient(this); 
    return super.onStartCommand(intent, flags, startId); 

} 

@Override 
public void onCreate() { 
    super.onCreate(); 

} 


@Nullable 
@Override 
public IBinder onBind(Intent intent) { 
    return null; 
} 
protected synchronized void buildGoogleApiClient() { 
    mGoogleApiClient = new GoogleApiClient.Builder(this) 
      .addConnectionCallbacks(this) 
      .addOnConnectionFailedListener(this) 
      .addApi(LocationServices.API) 
      .build(); 
    mGoogleApiClient.connect(); 
} 


@Override 
public void onConnected(@Nullable Bundle bundle) { 
    Log.e(TAG,"app is connected"); 

    mLocationRequest = new LocationRequest(); 
    mLocationRequest.setInterval(10000); 
    mLocationRequest.setFastestInterval(10000); 
    mLocationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY); 
    if (ContextCompat.checkSelfPermission(this, 
      android.Manifest.permission.ACCESS_FINE_LOCATION) 
      == PackageManager.PERMISSION_GRANTED) { 
     mFusedLocationClient.requestLocationUpdates(mLocationRequest, mLocationCallback, Looper.myLooper()); 
    } 

} 
LocationCallback mLocationCallback = new LocationCallback() { 
    @Override 
    public void onLocationResult(LocationResult locationResult) { 
     for (Location location : locationResult.getLocations()) { 
      mLastLocation = location; 

      Log.e("latitude",location.latitude); 
      Log.e("longitude",location.longitude); 



     } 
    } 



}; 

@Override 
public void onConnectionSuspended(int i) { 

} 

@Override 
public void onConnectionFailed(@NonNull ConnectionResult connectionResult) { 

} 

}

・ホープ、このことができますで私のコードです。:)

+0

私は融合したAPIを使用していますが、正確なlatを常に長くするのではなく、GPSよりもずっと良くなっています。 APIを使用して小数点以下7桁までしか得ることはできません。融合APIを使用して、小数点以下7桁以上を取得できます。 –

+0

それは常に正確なラテン語を与えませんが、それは私の経験によればより正確です – AkashK

関連する問題