我正在尝试让用户在我的应用中共存,这是一个工作人员跟踪应用。我的locationManager作为服务启动,以便在活动关闭时继续跟踪。
服务:
public class ServiceGPS extends Service implements LocationListener {
private Context mContext;
protected LocationManager locationManager;
private int MIN_DISTANCIA_MOVIDA = 5;
private int MIN_TEMPO = 20;
private int QUALIDADE_HORIZONTAL = 2;
private int QUALIDADE_VERTICAL = 2;
private String provider;
public ServiceGPS() {}
@Override
public void onStart(Intent intent, int startId) {
mContext = getApplicationContext();
locationManager = (LocationManager)getSystemService(LOCATION_SERVICE);
if (verificaGpsNetwork(locationManager)) {
iniciaGPS();
}
else {
showSettingsAlert();
}
}// onStart
public void iniciaGPS() {
Criteria criteria = new Criteria();
criteria.setHorizontalAccuracy(QUALIDADE_HORIZONTAL);
criteria.setVerticalAccuracy(QUALIDADE_VERTICAL);
criteria.setAltitudeRequired(false);
provider = locationManager.getBestProvider(criteria, true);
if (locationManager.isProviderEnabled(provider)) {
locationManager.requestLocationUpdates(provider, MIN_TEMPO, MIN_DISTANCIA_MOVIDA, this);
}
else
showSettingsAlert();
}// iniciaGPS
public void onLocationChanged(Location location) {
registraLocalizacao(location);
}// onLocationChanged
}
它在5.0.2中工作正常,但4.4.2中的位置总是为NULL。
使用GPS提供商作为服务是否存在问题?与
provider = locationManager.getBestProvider(criteria, true);
提供商返回GPS,并且GPS图标确实显示(即使关闭了应用程序,因此服务似乎没问题),但是从不返回任何位置,如果我尝试使用
locationManager.getLastKnownLocation(provider)
总是回来NULL。另一方面,如果我只是将我的提供者设置为“网络”,则使用coordenates调用onLocationChanged。
那么,那是什么意思?有没有解决这个问题?