首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > 移动开发 >

取得当前位置

2012-09-25 
获得当前位置MyLocation myLocation new MyLocation()?private void locationClick() {?? ? myLocation

获得当前位置

MyLocation myLocation = new MyLocation();?
private void locationClick() {?
? ? myLocation.getLocation(this, locationResult));?
}?
?
public LocationResult locationResult = new LocationResult(){?
? ? @Override?
? ? public void gotLocation(final Location location){?
? ? ? ? //Got the location!?
? ? ? ? });?
? ? }?
};?
import java.util.Timer;?
import java.util.TimerTask;?
import android.content.Context;?
import android.location.Location;?
import android.location.LocationListener;?
import android.location.LocationManager;?
import android.os.Bundle;?
?
public class MyLocation {?
? ? Timer timer1;?
? ? LocationManager lm;?
? ? LocationResult locationResult;?
? ? boolean gps_enabled=false;?
? ? boolean network_enabled=false;?
?
? ? public boolean getLocation(Context context, LocationResult result)?
? ? {?
? ? ? ? //I use LocationResult callback class to pass location value from MyLocation to user code.?
? ? ? ? locationResult=result;?
? ? ? ? if(lm==null)?
? ? ? ? ? ? lm = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);?
?
? ? ? ? //exceptions will be thrown if provider is not permitted.?
? ? ? ? try{gps_enabled=lm.isProviderEnabled(LocationManager.GPS_PROVIDER);}catch(Exception ex){}?
? ? ? ? try{network_enabled=lm.isProviderEnabled(LocationManager.NETWORK_PROVIDER);}catch(Exception ex){}?
?
? ? ? ? //don't start listeners if no provider is enabled?
? ? ? ? if(!gps_enabled && !network_enabled)?
? ? ? ? ? ? return false;?
?
? ? ? ? if(gps_enabled)?
? ? ? ? ? ? lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, locationListenerGps);?
? ? ? ? if(network_enabled)?
? ? ? ? ? ? lm.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, locationListenerNetwork);?
? ? ? ? timer1=new Timer();?
? ? ? ? timer1.schedule(new GetLastLocation(), 20000);?
? ? ? ? return true;?
? ? }?
?
? ? LocationListener locationListenerGps = new LocationListener() {?
? ? ? ? public void onLocationChanged(Location location) {?
? ? ? ? ? ? timer1.cancel();?
? ? ? ? ? ? locationResult.gotLocation(location);?
? ? ? ? ? ? lm.removeUpdates(this);?
? ? ? ? ? ? lm.removeUpdates(locationListenerNetwork);?
? ? ? ? }?
? ? ? ? public void onProviderDisabled(String provider) {}?
? ? ? ? public void onProviderEnabled(String provider) {}?
? ? ? ? public void onStatusChanged(String provider, int status, Bundle extras) {}?
? ? };?
?
? ? LocationListener locationListenerNetwork = new LocationListener() {?
? ? ? ? public void onLocationChanged(Location location) {?
? ? ? ? ? ? timer1.cancel();?
? ? ? ? ? ? locationResult.gotLocation(location);?
? ? ? ? ? ? lm.removeUpdates(this);?
? ? ? ? ? ? lm.removeUpdates(locationListenerGps);?
? ? ? ? }?
? ? ? ? public void onProviderDisabled(String provider) {}?
? ? ? ? public void onProviderEnabled(String provider) {}?
? ? ? ? public void onStatusChanged(String provider, int status, Bundle extras) {}?
? ? };?
?
? ? class GetLastLocation extends TimerTask {?
? ? ? ? @Override?
? ? ? ? public void run() {?
? ? ? ? ? ? ?lm.removeUpdates(locationListenerGps);?
? ? ? ? ? ? ?lm.removeUpdates(locationListenerNetwork);?
?
? ? ? ? ? ? ?Location net_loc=null, gps_loc=null;?
? ? ? ? ? ? ?if(gps_enabled)?
? ? ? ? ? ? ? ? ?gps_loc=lm.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);?
? ? ? ? ? ? ?if(network_enabled)?
? ? ? ? ? ? ? ? ?net_loc=lm.getLastKnownLocation(LocationManager.GPS_PROVIDER);?
?
? ? ? ? ? ? ?//if there are both values use the latest one?
? ? ? ? ? ? ?if(gps_loc!=null && net_loc!=null){?
? ? ? ? ? ? ? ? ?if(gps_loc.getTime()>net_loc.getTime())?
? ? ? ? ? ? ? ? ? ? ?locationResult.gotLocation(gps_loc);?
? ? ? ? ? ? ? ? ?else?
? ? ? ? ? ? ? ? ? ? ?locationResult.gotLocation(net_loc);?
? ? ? ? ? ? ? ? ?return;?
? ? ? ? ? ? ?}?
?
? ? ? ? ? ? ?if(gps_loc!=null){?
? ? ? ? ? ? ? ? ?locationResult.gotLocation(gps_loc);?
? ? ? ? ? ? ? ? ?return;?
? ? ? ? ? ? ?}?
? ? ? ? ? ? ?if(net_loc!=null){?
? ? ? ? ? ? ? ? ?locationResult.gotLocation(net_loc);?
? ? ? ? ? ? ? ? ?return;?
? ? ? ? ? ? ?}?
? ? ? ? ? ? ?locationResult.gotLocation(null);?
? ? ? ? }?
? ? }?
?
? ? public static abstract class LocationResult{?
? ? ? ? public abstract void gotLocation(Location location);?
? ? }?
}?

1 楼 cfpl20002 2011-09-17   初学者来此膜拜下,刚好用到这个。没有完全看懂,要在user code中实现gotLocation方法吧?然后在赋给user code中的变量么? 2 楼 cfpl20002 2011-09-17   刚用了,很好用!谢谢!

热点排行