0

Location API の使用に問題があります。このコードを使用して、利用可能なプロバイダーのいずれかから場所を取得しようとしています:

//Définir ma localisation
final LocationManager manag = (LocationManager) ActivityRechercheConcession.this.getSystemService(Context.LOCATION_SERVICE);
//Choix du service de localisation en fonction de critères
Criteria crit = new Criteria();
crit.setCostAllowed(false);
crit.setAccuracy(1000); //précis à au moins 1km pret
final String choix_source = manag.getBestProvider(crit, true);
//demander la position courante
manag.requestLocationUpdates(choix_source, 10000, 0, new LocationListener(){
    //Lors de la capture de la position
    public void onLocationChanged(Location location) {
    Log.i("LocationListener","New position from "+choix_source+": ("+location.getLatitude()+","+location.getLongitude()+")");
    }
}

しかし、エミュレータ コントロール (long: 7.745304、lat: 48.589326 など) で座標を送信している場合、位置データの整数部分のみを取得しています (long 7.0、lat 48.0 など)。したがって、これらの値の計算方法は完全に false です。 .

これらのデータの小数部分が失われるのはなぜですか?

4

2 に答える 2

1

このメソッドは、使用した絶対数値ではなく、とのCriteria.setAccuracy2つのフラグのみを取ります。ここでは粗い精度として解釈されると思います。したがって、座標がトリミングされます。ACCURACY_FINEACCURACY_COARSE1000

つまり、次を使用する必要があります。

crit.setAccuracy(Criteria.ACCURACY_FINE);

正確な座標を取得します。

于 2011-07-07T09:55:34.993 に答える
0

この問題は、コードではなく、Eclipse の Emulator Control に起因していました。

それを解決するには、次の行を追加して eclipse.ini を正しく構成する必要があります。

-Duser.language=en

私のロケールに対応しているので、使用しました:

-Duser.language=fr

その後、送信した値に「ドット」の代わりに「コマ」を使用する必要がありました。そうすれば、コードはうまく実行されます:D

于 2011-07-12T12:29:08.403 に答える