Android GPS-облако неразберихи!
Вопрос
Я пытаюсь разработать свое первое приложение для Android с использованием GPS.На данный момент у меня есть рисуемая кнопка, которая при нажатии выдает всплывающее сообщение о долготе и широте.Я пытался использовать telnet localhost 5554 а потом геофиксация #номер #number вводить значения, но результаты не отображаются, просто 0
0
.Я также попробовал DDMS-способ отправки GPS-координат, и я получаю то же самое.
Мой вопрос заключается в том, каков именно правильный способ использования geo fix и 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();
}
}
Решение
Две вещи
1) Сделать широту и долготу изменчивыми
2) Попробуйте зарегистрироваться в качестве прослушивателя GPS-менеджера местоположения.
location.requestLocationUpdates(LocationManager.GPS, 100, 1, locationListener);
Это должно привести к отправке обратных вызовов на ваш объект locationListener.
Вы можете посмотреть пример кода Android GPS здесь:http://www.devx.com/wireless/Article/43005
(ПРЕДУПРЕЖДЕНИЕ!DevX добавил площадку для регистрации после того, как я добавил эту ссылку!)
Другие советы
прокомментируйте строку Location loc = location.getLastKnownLocation(местоположение.GPS_PROVIDER);
И протестируйте приложение, обновив gps вручную в ddms
если это сработает, вернитесь к коду и введите Location loc = местоположение.getLastKnownLocation("gps");