У меня проблема с получением местоположения пользователя на одном из телефонов моего тестера.Это всегда хорошо работает для меня, поэтому я не знаю, в чем разница.
Вот последовательность:
1: перезагрузка телефона.2. Проверяет, включены ли службы определения местоположения (как для GPS, так и для сети).3. Запускает мое приложение.
ОС никогда не предоставляет правильное местоположение.GetLastKnownLocation () всегда возвращает значение NULL как для GPS_PROVIDER, так и для NETWORK_PROVIDER, а LocationListener никогда не вызывается после requestLocatioUpdates.
- Затем он запускает приложение Google Maps (которое, похоже, находит его).
- Затем, если он снова запустит мое приложение и оно правильно определит местоположение.
Вот основные сведения о моем коде:
LocationManager locationManager = (LocationManager) this.getSystemService( Context.LOCATION_SERVICE );
LocationListener locationListener = new LocationListener()
{
public void onLocationChanged( Location location )
{
useLocation( location );
}
public void onStatusChanged( String provider, int status, Bundle extras )
{
}
public void onProviderEnabled( String provider )
{
}
public void onProviderDisabled( String provider )
{
}
};
// Register the listener with the Location Manager to receive location updates
// Checks a minimum of every 120 seconds. Location must change by 10000 meters
String provider = locationManager.getBestProvider( new Criteria(), true );
if ( provider != null )
{
System.out.println( "Using provider: " + provider );
locationManager.requestLocationUpdates( provider, 120 * 1000, 10000, locationListener );
}
// Get the last know location for immediate use
Location lastLocation = locationManager.getLastKnownLocation( LocationManager.GPS_PROVIDER );
if ( lastLocation != null )
useLocation( lastLocation );
else
useLocation( locationManager.getLastKnownLocation( LocationManager.NETWORK_PROVIDER ) );
Когда это не удается, код говоритлучший провайдер - это "сеть", так что это то, что я использую.Но onLocationChanged никогда не вызывается.Я также никогда не получаю ненулевое значение от getLastKnowLocation ().
Есть ли еще какая-то магия, которую мне нужно сделать, чтобы это работало последовательно после перезагрузки?