private void getLocation() {
String serviceName = Context.LOCATION_SERVICE;
mLocationManager = (LocationManager) this.getSystemService(serviceName); mLocationListener = new LocationListener() {
@Override
public void onLocationChanged(Location location) {
System.out.println("listen");
if (location != null) {
// GeoPoint pt = new GeoPoint((int) (location.getLatitude() * 1e6), (int) (location.getLongitude() * 1e6));
// mSearch.reverseGeocode(pt);
mGeocoder=new Geocoder(MainActions.this,Locale.getDefault());
double langt=location.getLatitude();
double longi=location.getLongitude();
try {
List<Address> addresses=mGeocoder.getFromLocation(langt, longi, 1);
if(addresses!=null){
Address address=addresses.get(0);
city=address.getLocality();
System.out.println(city);
loadingData();
}
} catch (IOException e) {
e.printStackTrace();
}

}
} @Override
public void onProviderDisabled(String provider) {

} @Override
public void onProviderEnabled(String provider) {

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

}

};
mCriteria=new Criteria();
mCriteria.setAccuracy(Criteria.ACCURACY_FINE);
mCriteria.setAltitudeRequired(false);
mCriteria.setBearingRequired(false);
mCriteria.setCostAllowed(false);
mCriteria.setPowerRequirement(Criteria.POWER_LOW);
String provider=mLocationManager.getBestProvider(mCriteria, true);
System.out.println(provider);
mLocationManager.requestLocationUpdates(provider, 3000, 3000, mLocationListener);

程序能运行,但是不走listener的回调

解决方案 »

  1.   

    mLocationManager.requestLocationUpdates(provider, 3000, 3000, mLocationListener);看看第二个参数和第三个参数。API文档里有。第二个参数最小指时间,第三个参数指最小距离。只有满足了这2个参数的条件,方可执行mLocationListener。
      

  2.   

     
    修改成下面的,你试试。用Log.i输出,来判断是否执行。不要用断点。mLocationManager.requestLocationUpdates(provider, 60*1000, 0, mLocationListener);
      

  3.   

    不行。。根本就没效果,在第一次请求位置的时候应该会直接就执行的啊,和那两个参数应该没什么关系吧,就是不执行listener的回调方法怎么搞啊。
      

  4.   


    修改成下面的,你试试。用Log.i输出,来判断是否执行。不要用断点。mLocationManager.requestLocationUpdates(provider, 60*1000, 0, mLocationListener);