2013-03-23 63 views
1

我使用此代碼查找我的位置(經度和緯度),但此代碼有時會快速(幾秒鐘)響應
,有時會延遲超過10分鐘。 問題在哪裏?位置查找響應

public class MainActivity extends Activity { 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     LocationManager locManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); 
     locManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 10L, 
       5.0f, locationListener); 
    } 

    private void updateWithNewLocation(Location location) { 
     TextView myLocationText = (TextView) findViewById(R.id.text); 
     String latLongString = ""; 
     if (location != null) { 
      double lat = location.getLatitude(); 
      double lng = location.getLongitude(); 
      latLongString = "Lat:" + lat + "\nLong:" + lng; 

     } else { 
      latLongString = "No location found"; 
     } 
     myLocationText.setText("Your Current Position is:\n" + latLongString); 
    } 

    private final LocationListener locationListener = new LocationListener() { 

     @Override 
     public void onLocationChanged(Location location) { 
      updateWithNewLocation(location); 
     } 

     @Override 
     public void onProviderDisabled(String provider) { 
      updateWithNewLocation(null); 
     } 

     @Override 
     public void onProviderEnabled(String provider) { 
     } 

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

} 

回答

1

您正在使用GPS_PROVIDER獲取位置。

GPS->此提供商使用衛星確定位置。根據條件,此提供商可能需要一段時間才能返回定位,並提供約20英尺的精確結果。

您可以使用的另一個提供程序是NETWORK_PROVIDER。 該提供商根據蜂窩塔和WiFi接入點的可用性來確定位置,並給出準確的結果大約200英尺,並且它消耗較少的內存,然後GPS_PROVIDER。 NETWORK_PROVIDER使用此權限

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