Android locationManager适用于5.02但仅适用于4.4.2的网络提供商

时间:2015-08-12 12:55:46

标签: android service gps geolocation

我正在尝试让用户在我的应用中共存,这是一个工作人员跟踪应用。我的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。

那么,那是什么意思?有没有解决这个问题?

0 个答案:

没有答案