2012-01-31 5 views
1

緯度と経度を取得するには、ネットワークプロバイダまたはgpsプロバイダを使用しているときに、その作業fine.But私は両方のプロバイダを使用するとき私は値を取得しませんでした。溶液。代わりに、Criteria Androidがあなたのための最良の選択でしょう。..選ぶ複数のプロバイダからの場所の更新を要求しない検索と例ネットワークとGPS衛星を使用した最も簡単な方法

// Get the location manager 
locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); 
// Define the criteria how to select the locatioin provider -> use 
// default 
Criteria criteria = new Criteria(); 
provider = locationManager.getBestProvider(criteria, true); 
networkLoc = locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER); 
gpsLoc = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER); 

    if (networkLoc != null) { 
    System.out.println("Provider " + provider + " has been selected."); 
    double l = (double) (networkLoc.getLatitude()); 
    double lng11 = (double) (networkLoc.getLongitude()); 
    latituteField1.setText(Double.toString(l)); 
    longitudeField1.setText(Double.toString(lng11)); 
    } 
    if (gpsLoc != null) { 
    System.out.println("Provider " + provider + " has been selected."); 
    double l0t = (double) (gpsLoc.getLatitude()); 
double l0g = (double) (gpsLoc.getLongitude()); 
    latituteField.setText(Double.toString(l0t)); 
longitudeField.setText(Double.toString(l0g)); 

} 
    locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, this); 
    locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, this); 

    } 
@Override 
protected void onResume() { 
super.onResume(); 

locationManager.requestLocationUpdates(
     LocationManager.NETWORK_PROVIDER, 
     MINIMUM_TIME_BETWEEN_UPDATES, 
     MINIMUM_DISTANCE_CHANGE_FOR_UPDATES, 
     this 
); } 
    /* Remove the locationlistener updates when Activity is paused */ 
    @Override 
protected void onPause() { 
super.onPause(); 
locationManager.requestLocationUpdates(
     LocationManager.NETWORK_PROVIDER, 
     MINIMUM_TIME_BETWEEN_UPDATES, 
     MINIMUM_DISTANCE_CHANGE_FOR_UPDATES, 
     this 
); 
} 

     @Override 
    public void onLocationChanged(Location location) { 
lat1 = (double) (networkLoc.getLatitude()); 
lng1 = (double) (networkLoc.getLongitude()); 
latituteField1.setText(Double.toString(lat1)); 
longitudeField1.setText(Double.toString(lng1));  
lat = (double) (gpsLoc.getLatitude()); 
lng = (double) (gpsLoc.getLongitude()); 
latituteField.setText(Double.toString(lat)); 
longitudeField.setText(Double.toString(lng)); 
    } 
@Override 
     public void onStatusChanged(String provider, int status, Bundle extras) { 
// TODO Auto-generated method stub 

    } 

    @Override 
    public void onProviderEnabled(String provider) { 
Toast.makeText(this, "Enabled new provider " + provider, 
     Toast.LENGTH_SHORT).show(); 

    } 

    @Override 
    public void onProviderDisabled(String provider) { 
Toast.makeText(this, "Disenabled provider " + provider, 
     Toast.LENGTH_SHORT).show(); 
} 

    protected void Display(Cursor c) { 
Toast.makeText(this, "rowid: " + c.getString(0) + "\n" + 
"Latitude: " + c.getString(1) + "\n" + "Longitude: " + c.getString(2) + "\n" + 
Toast.LENGTH_LONG, 0).show(); 
    } 
+0

あなたが使用していて、動作していないコードを投稿することができますか? – SERPRO

+0

私のコードで何が問題になるのか教えてください – Mercy

答えて

1

の多くをしようとしています。例えば

の代わり:

locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, this); 
    locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, this); 

用途:

Criteria c = new Criteria(); 
    c.setAccuracy(Criteria.ACCURACY_COARSE); //Or whatever criteria you want 
    final String PROVIDER = locationManager.getBestProvider(c, true); 
    locationManager.requestLocationUpdates(PROVIDER, minTime, minDistance, this); 
+0

ありがとう、私はネットワークプロバイダとgpsプロバイダから緯度の値を取得します。 – Mercy

+0

どのプロバイダを見つけることが可能ですか? – Mercy

+0

さて、あなたは各プロバイダの最後の既知の場所を取得することができますが、それは古い場所かもしれません.. http://developer.android.com/reference/android/location/LocationManager.html#getLastKnownLocation(java.lang.String ) – SERPRO

関連する問題