私のアプリは、Google Play サービス API を使用してユーザーの位置を取得し、デバイスが半径 50 mt の特定の領域の内側にあるか外側にあるかを確認します。アプリは PRIORITY_HIGH_ACCURACY と 1 分の間隔を使用します。そこで、GoogleApiClient を作成します。
mGoogleApiClient = new GoogleApiClient.Builder(this)
.addConnectionCallbacks(this)
.addOnConnectionFailedListener(this)
.addApi(LocationServices.API)
.build();
mGoogleApiClient.connect();
onConnected コールバックで:
mLocationRequest = new LocationRequest();
mLocationRequest.setInterval(60000);
mLocationRequest.setFastestInterval(10000);
mLocationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
と
MyLocationListener.FusedLocationApi.requestLocationUpdates(mGoogleApiClient, mLocationRequest, mLocationListener);
私のアプリは、精度 (精度が 200 mt を超える場合は破棄します) と時間 (古すぎる場合は破棄します) に基づいて場所をフィルター処理します。
アプリは、実際の場所から約 500 メートル離れた間違った場所の更新を返すことがある一部の特定の地域を除いて正常に動作し、それらの間違った場所は常に同じ場所の近くにあり、セル タワーから少し離れています。
これらの領域では、間違った場所と正しい場所の組み合わせが得られ、アプリは、デバイスが関心のある領域の内側にある場合と外側にある場合があると考えています。
位置情報が更新されたら、他の 3 人が続けて位置を確認するのを待ちます。また、以前とまったく同じ場合は場所をフィルタリングします。これは、これらのエラーが発生したときに、4 つの間違った場所が連続して受信され、それぞれが他の場所とわずかに異なることを意味します。
この動作を防ぐ方法はありますか? これはセルタワーが原因ですか?