2013-08-06 1 views
0

Мое приложение просто должно знать страну пользователя, а моему приложению не важно, куда движется пользователь.Каков самый простой способ получить долготу и широту пользователя в Android? Даже без прослушивания?

Все, что я хочу знать, это: Когда пользователь запускает приложение, приложение отправит примерно по адресу пользователя (широту и долготу) на сервер.

Вот мой код с ошибкой. Я пытаюсь отправить строку в функцию getlocation, и я надеюсь, что она сможет вернуть исходную строку с добавлением информации о широте и долготе.

private String getlocation (String url){ 
    LocationManager status = (LocationManager) (this.getSystemService(Context.LOCATION_SERVICE)); 
    if (status.isProviderEnabled(LocationManager.GPS_PROVIDER) || status.isProviderEnabled(LocationManager.NETWORK_PROVIDER)) { 
     Log.v("print","enable to locate"); 
    } else { 
     Log.v("print","fail to locate"); 
    } 
    Location location = status.getLastKnownLocation(LocationManager.NETWORK_PROVIDER); 
    if(location!=null){ 
     Log.v("print","[email protected]@"); 
     Double longitude = location.getLongitude(); 
     String loc=Double.toString(longitude); 
     url=url+loc; 
    } 
    else{ 
     Log.v("print","location return null"); 
    } 
    return url; 
} 

Я использую network_provider, и всегда печати «позволяют найти», а затем распечатать «местоположение возврата нуль»

Так что же случилось с моим кодом, что мое место всегда возвращает нуль. Я использую AVD-манер, и я также пытаюсь использовать GPS_PROVIDER. Я использую элемент управления эмулятором для отправки Decimal на управление местоположением. Это тоже не работает.

Кстати, я установил сетевое и GPS-разрешение.

Большое спасибо за помощь!

+0

сделал и проверить LogCat, если он просит разрешения на добавить в манифест? –

ответ

1

Я получаю местоположение, используя код, но позволить «использовать беспроводные сети» в настройках то есть (через настройки - Опред.местополож - использование беспроводных сетей)

public void getCurrentLocation() { 

    LocationManager locationManager; 
    String bestProvider; 

    // Get the location manager 
      locationManager = (LocationManager) getSystemService(LOCATION_SERVICE); 

      Criteria criteria = new Criteria(); 
      bestProvider = locationManager.getBestProvider(criteria, false); 

      Location location = locationManager.getLastKnownLocation(bestProvider); 
      Log.e(TAG, "Latitude: "+location.getLatitude()+" , Longitude: "+location.getLongitude()); 
} 
+0

sorry ~ Вы имеете в виду набор сервисов местоположения - используйте беспроводные сети на моем AVD-телефоне? Я выбираю GPS и Wi-Fi и мобильную сеть, но это не работает. Кстати, нужен ли диспетчер location в Asynctask? Или просто написать в MainActivity? –

+0

Я использовал ваш код, и мое приложение «к сожалению отключилось», когда location.getLatitude(). –

+0

работает на моей таблетке 101. галактики. использование <использование-андроид: name = "android.permission.ACCESS_COARSE_LOCATION" />

Смежные вопросы