0

私のアプリは、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 つの間違った場所が連続して受信され、それぞれが他の場所とわずかに異なることを意味します。

この動作を防ぐ方法はありますか? これはセルタワーが原因ですか?

4

2 に答える 2

0

または に変更setInterval(60000)します。setInterval(20000)5000

間隔は 1 分なので、ユーザーが移動しても更新されません。そのため、不正確さがあります。

Google によると、setInterval(long)は、場所を取得する間隔を設定することを意味します。setFastestInterval(long)は、場所がすぐに取得できる場合 (つまり、別のアプリが位置情報サービスを使用している場合。他のアプリが位置情報サービスを使用していない場合、1 分後にのみ更新を取得することを意味します) を意味します。

于 2016-01-29T22:32:20.363 に答える