Android GPS облако путаницы!

Я пытаюсь разработать свое первое приложение для Android с использованием GPS. На данный момент у меня есть нарисованная кнопка, которая при нажатии предупреждает всплывающее сообщение о долготе и широте. Я попытался использовать telnet localhost 5554, а затем geo fix #number #number для ввода значений, но результаты не отображают только 0 0. Я также попробовал способ отправки координат GPS с помощью DDMS, и я получил то же самое.

Мой вопрос заключается в том, что именно является правильным способом использования геофиксации и способа отправки координат DDMS. Я использовал Location, LocationManger и LocationListener, но не уверен, какой из них правильный.

Код указан на тот случай, если с кодом существует ошибка

@Override
public void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    Button button = (Button) findViewById(R.id.track);
    button.setOnClickListener(this);
    LocationManager location =(LocationManager)getSystemService(Context.LOCATION_SERVICE);
    Location loc = location.getLastKnownLocation(location.GPS_PROVIDER);
    updateWithNewLocation(loc);

  }

 private final LocationListener locationListener = new LocationListener() {
   public void onLocationChanged(Location location) {
     updateWithNewLocation(location);
   }

  private void updateWithNewLocation(Location l) {
  longitude = l.getLongitude();
  latitude = l.getLatitude();
  provider = l.getProvider();     
  }

    public void onClick(View v) { 
     Toast.makeText(this, "Your location is " + 
      longitude + " and " + latitude + " provided by: " + 
      provider, Toast.LENGTH_SHORT).show();          
   }     
}

person Anthony Forloney    schedule 13.10.2009    source источник
comment
Не могли бы вы переформатировать код? Начинайте каждую строку с 4 пробелов, и все они станут одним большим блоком.   -  person Daniel Yankowsky    schedule 13.10.2009
comment
Какую актуальную проблему вы наблюдаете? Он просто не может получить какие-либо координаты? Возвращает ли он фиктивные данные? Выдает ли это исключение?   -  person Daniel Yankowsky    schedule 13.10.2009


Ответы (2)


Две вещи

1) Сделать широту и долготу изменчивыми

2) Попробуйте зарегистрироваться в качестве слушателя в менеджере местоположений GPS.

location.requestLocationUpdates(LocationManager.GPS, 100, 1, locationListener);

Это должно отправить вам обратные вызовы на ваш объект locationListener.

Вы можете ознакомиться с примером кода Android GPS здесь: http://www.devx.com/wireless/Article/43005

(ВНИМАНИЕ! DevX добавил регистрационную площадку после того, как я добавил эту ссылку!)

person haseman    schedule 13.10.2009
comment
Пример кода ведет на сайт со стеной регистрации. Как раздражает. - person Joe Ludwig; 09.05.2010
comment
Ой! Это раздражает! Извините за это, я думаю, что devX добавил регистрационную посадку в прошлом месяце или около того :-( Добавлено предупреждение к ответу. - person haseman; 10.05.2010
comment
Чтобы обойти платную стену, вставьте URL-адрес в поиск Google и нажмите на него. Они не могут показать другую страницу для Google, чем для вас (через Google). - person Alan Jackson; 22.06.2010

прокомментируйте строку Location loc = location.getLastKnownLocation(location.GPS_PROVIDER);

И протестируйте приложение, обновив gps вручную в ddms

если это сработает, вернитесь к коду, а затем поместите Location loc = location.getLastKnownLocation("gps");

person Mamadou    schedule 21.01.2010
comment
Я попытался сделать то, что вы предложили, когда столкнулся с проблемой, хотя теперь она исправлена ​​​​и больше не представляет большой проблемы. Причина, по которой он не работал, заключалась в том, что я не зарегистрировал прослушиватель для обновлений своего местоположения. Спасибо за ответ в любом случае. - person Anthony Forloney; 21.01.2010