андроид получает местоположение от лучшего доступного поставщика

У меня есть этот код для получения наилучшего имеющегося поставщика

lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE);

locationListener = new MyLocationListener();
Criteria criteria = new Criteria();
criteria.setAccuracy(Criteria.ACCURACY_FINE);
String provider = lm.getBestProvider(criteria, true);
Location mostRecentLocation = lm.getLastKnownLocation(provider);
if(mostRecentLocation != null) {
    latid=mostRecentLocation.getLatitude();
    longid=mostRecentLocation.getLongitude();
}
lm.requestLocationUpdates(provider, 1, 0, locationListener);

и затем слушатель

private class MyLocationListener implements LocationListener {

@Override
public void onLocationChanged(Location loc) {
  if (loc != null) {
    latid = loc.getLatitude();
    longid = loc.getLongitude();
    // if(loc.hasAccuracy()==true){
    accuracyd = loc.getAccuracy();
    String providershown = loc.getProvider();    
    accuracy.setText("Location Acquired. Accuracy:"
      + Double.toString(accuracyd) + "m\nProvider: "+providershown);
    accuracy.setBackgroundColor(Color.GREEN);
    // }
    userinfo=usernamevalue+"&"+Double.toString(latid)+"&"+Double.toString(longid);
    submituserlocation(userinfo);
   }
}

Когда я протестировал его к устройству (волшебство htc), я узнал, что, когда gps отключен, он сразу блокирует из сети. Когда я включаю gps, он не берет данных из сети и ожидает, пока он не блокирует от gps.
Я хотел бы заблокировать положение как карты Google что, пока у них нет хорошего сигнала GPS, они используют сеть для определения моего местоположения.
Я, хотя лучшие критерии сделали бы это, но что они делают, выбрать поставщика однажды.
Есть ли что-то не так с моим кодом, или я должен сделать потоки и тайм-ауты и т.д., чтобы заставить его произойти?

13
задан RandomMooCow 17 September 2014 в 19:59
поделиться

1 ответ

Может быть, вы можете попробовать послушать и провайдера сети, и провайдера GPS в течение определенного времени, а затем проверить результаты обоих. Если у вас нет результатов GPS, используйте вместо этого результаты сети. Вот как я это сделал.

14
ответ дан 1 December 2019 в 23:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: