2

同じ場所で異なる Gps 座標を取得しています。なぜそれが起こっているのですか。しかし、GPS座標を変更する必要があるのは、10メートル後に移動するだけです。どうやってやるの。

これが私のコードです。

  private static final long MINIMUM_TIME_BETWEEN_UPDATES = 1000; 
            private  static final float MIN_GEOGRAPHIC_POOLING_DISTANCE = (float)10.0;


 double myLat_Values;
        double myLog_Vaues;


locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
 locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, MINIMUM_TIME_BETWEEN_UPDATES, MIN_GEOGRAPHIC_POOLING_DISTANCE, new MyLocationListener());


private class MyLocationListener implements LocationListener {

        @Override
        public void onLocationChanged(Location location) {
            longitude_str = String.valueOf(location.getLongitude());
            latitude_str = String.valueOf(location.getLatitude());

             Double longitude_number = Double.valueOf(longitude_str);
                 DecimalFormat dec = new DecimalFormat("#.000000");
                longitude_message = dec.format(longitude_number);

             Double latitude_number = Double.valueOf(latitude_str);
             DecimalFormat decim = new DecimalFormat("#.000000");
                latitude_message = decim.format(latitude_number);

                try
                {
                    myLat_Values = Double.valueOf(latitude_message);  
                    myLog_Vaues = Double.valueOf(longitude_message);
                }
                catch(NullPointerException ex)
                {
                    myLat_Values = 0;
                    myLog_Vaues = 0;
                }

     System.out.println("GPS Values Clockout:"+myLat_Values+"-"+myLog_Vaues);

        }       

    public void onProviderDisabled(String s) {}
        @Override
        public void onProviderEnabled(String provider) {}
        @Override
        public void onStatusChanged(String provider, int status, Bundle extras) {}      
    }

また、これらをマニフェストファイルに使用しました:

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION" /> 
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />

このリンクを使用しました

私の問題を解決する方法を誰か提案してください。

よろしくお願いします。

4

1 に答える 1

3

NETWORK_PROVIDERを使用すると、使用しているネットワークサービスプロバイダーに基づいてGPS座標が返されます。ただし、GPS_PROVIDERを使用している場合は、衛星に基づいてGPS座標が返されます。

精度基準については、次のコードを追加します。

locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
Criteria criteria = new Criteria();
criteria.setAccuracy(Criteria.ACCURACY_HIGH);  
locationManager.getBestProvider(criteria, true);

また、AndroidManifest.xmlで次のGPS許可を宣言する必要があります

<uses-permission android:name="android.permission.ACCESS_GPS"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission>
于 2012-08-25T08:32:49.147 に答える