我正在尝试在谷歌地图上定位我的位置(GPS 已激活)。为此,我有以下代码,在 oncreate 中执行:
LocationManager objLocation=null;
LocationListener objLocListener;
objLocation=(LocationManager)getSystemService(Context.LOCATION_SERVICE);
objLocListener=new MiPosicion();
if(objLocation.isProviderEnabled(LocationManager.GPS_PROVIDER)){
objLocation.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, objLocListener);
if(MiPosicion.latitud>0){
l=MiPosicion.coordenadas;
}
}
为了保存获取位置,我做了以下课程:
public class MiPosicion implements LocationListener {
public static double latitud;
public static double longitud;
public static boolean statusGPS;
public static Location coordenadas;
@Override
public void onLocationChanged(Location location) {
latitud=location.getLatitude();
longitud=location.getLongitude();
coordenadas=location;
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
}
@Override
public void onProviderEnabled(String provider) {
statusGPS=true;
}
@Override
public void onProviderDisabled(String provider) {
statusGPS=false;
}
}
我遇到的问题是方法执行onLocationChange(location)
时没有执行objLocation.requestLocationUpdates(LocationManager.GPS_PROVIDER,0,0,objLocListener);
,我该如何解决?
让它再次被调用的方法
onLocationChange()
是当我们定义时requestLocationUpdates()
,第二个参数定义每次更新之间经过的时间,第三个参数定义每次更新的最小距离变化。
例如,如果我们定义:
这意味着如果我们移动 10 米并经过 1 分钟,该方法将被调用
onLocationChanged()
,我们可以在其中获取提供者提供的新地理位置值。如果 geolocation 没有因为设备没有移动而改变,那是因为没有必要获取新的 Geolocation 值,而使用最后获取的值。
我添加了一个示例,以便您可以测试我所说的: