Android: различные вопросы о GPS - PullRequest
4 голосов
/ 30 мая 2010

Я пишу свое первое приложение для Android на основе определения местоположения, но запутался в некоторых API-интерфейсах службы GPS. Вот несколько вопросов, которые у меня есть:

1) Чтобы узнать мое текущее местоположение, я вызвал requestLocationUpdates () со слушателем в методе onCreate () одного действия. Но что происходит, когда начинается другое действие, а текущее становится невидимым? Остановится ли обновление местоположения GPS? Если да, то как я могу оставить его после переключения активности?

2) Насколько точен Location.getSpeed ​​()? Как это вычисляется? Это может сказать разницу между на велосипеде и пешком?

3) не совсем вопрос про андроид. Как рассчитать координаты местоположения, скажем, в 100 метрах от моего текущего местоположения?

4) Чтобы остановить GPS, мне нужно только удалить всех слушателей, которые были зарегистрированы в locationmanager?

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

Ответы [ 3 ]

2 голосов
/ 30 мая 2010

3) не совсем вопрос про андроид. Как рассчитать координаты местоположения, скажем, в 100 метрах от моего текущего местоположения?

Не совсем ответ на Ваш вопрос, но он может быть полезен для проблемы, которую Вы, вероятно, пытаетесь решить: http://en.wikipedia.org/wiki/Geohash

2 голосов
/ 30 мая 2010

Это не будет исчерпывающим ответом, так как у меня нет опыта разработки под Android, но я просто хотел добавить свои мысли по вашим вопросам GPS:

Вопрос 2: Обычно скорость рассчитывается в оборудовании GPS, просто путем деления изменения расстояния на изменение во времени. (см. Комментарии ниже) Скорость обычно достаточно точна пока есть покрытие GPS, и вы определенно сможете определить, кто-то пешком или на велосипеде. Вы даже должны различать нормальную ходьбу (6 км / ч) и медленную пробежку (12 км / ч).

Вопрос 3: Существует бесконечное количество местоположений в 100 м от текущего местоположения. Только если вы добавите направление, вы сможете получить точку назначения. Формула имеет следующий вид ( Источник ):

lat 2 = asin (sin (lat 1 ) * cos (d / R) + cos (lat 1 ) * sin (d / R ) * COS (θ)) * * тысяча двадцать два lon 2 = lon 1 + atan2 (sin (θ) * sin (d / R) * cos (lat 1 ), cos (d / R) -sin (лат * 1 029 * 1 ) * Sin (лат 2 ))

d / R - угловое расстояние (в радианах), где d - пройденное расстояние, а R - радиус Земли

Возможно, вы захотите проверить следующую публикацию переполнения стека для реализации JavaScript выше, которую, я думаю, не должно быть сложно портировать:

0 голосов
/ 06 февраля 2011

Для тех, кто хочет создать приложение Android в Android, которое измеряет СКОРОСТЬ, возможно, стоит попробовать ... http://code.google.com/p/krvarma-android-samples/source/browse/#svn%2Ftrunk%2FSpeedDemo%253Fstate%253Dclosed

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...