3

`private void getLocation() {

        String context = Context.LOCATION_SERVICE;
        LocationManager locationManager = (LocationManager)getSystemService(context);
        Criteria criteria = new Criteria();
        criteria.setAccuracy(Criteria.ACCURACY_COARSE);
        criteria.setAltitudeRequired(false);
        criteria.setBearingRequired(false);
        criteria.setCostAllowed(true);
        criteria.setPowerRequirement(Criteria.POWER_LOW);

        String provider = locationManager.getBestProvider(criteria, true);
        Location location = locationManager.getLastKnownLocation(provider);
        updateWithNewLocation(location);

        locationManager.requestLocationUpdates(provider, 2000, 5, locationListener);

    }

    private final LocationListener locationListener=new LocationListener()
    {
        public void onLocationChanged(Location location)
        {
            updateWithNewLocation(location);
        }
        public void onProviderDisabled(String provider)
        {
            updateWithNewLocation(null);
        }
        public void onProviderEnabled(String provider)
        {

        }
        public void onStatusChanged(String provider,int status,Bundle extras)
        {

        }
    }`  

上記の場所を取得するための私のコード。しかし、私の申請の結果は正確ではありません。自分の位置を正確に取得したい。他に方法はありますか?

4

1 に答える 1

4

正確な位置情報を取得できるかどうかは、信号が利用できるかどうかによって異なります。たとえば。そこにGPS信号が存在するかどうか。GPS が存在しない場合、電話は精度の低い Wi-Fi またはサービス プロバイダーの追跡を使用します。そのため、Google マップを使用して現在地を確認してください。Google マップを使用してより正確な位置情報を取得している場合は、コードに何かが欠けています。

私が見ることができる 1 つのエラーは、ACCURACY_COARSE を使用していることです。ACCURACY_FINE を使用してみてください。また、マニフェストにこれらのアクセス許可をまだ追加していない場合は、追加する必要があります。

于 2012-04-24T03:27:52.153 に答える