Android: различные вопросы о GPS

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

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

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

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

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

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


person wei    schedule 30.05.2010    source источник


Ответы (3)


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

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

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

лат 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 (lat 1) * sin (lat 2))

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

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

person Daniel Vassallo    schedule 30.05.2010
comment
На самом деле, приемники GPS измеряют скорость напрямую, а не расстояние во времени, и поэтому скорость намного точнее, чем можно было бы ожидать от точности местоположения. - person Andrew McGregor; 30.05.2010
comment
@Andrew: Но это все равно должно быть внутреннее расстояние с течением времени, по крайней мере, для потребительских GPS-приемников без акселерометров или других технологий. - person Daniel Vassallo; 30.05.2010
comment
Нет, это не то, о чем я говорю: приемник может получить скорость непосредственно по изменению фазы радиосигнала, как часть расчета местоположения; вам действительно нужно знать скорость, чтобы получить позицию, а не наоборот. - person Andrew McGregor; 30.05.2010
comment
@Andrew: В таком случае, как приемник получает позицию из холодного пуска, когда он полностью неподвижен? - person Daniel Vassallo; 30.05.2010
comment
@ Дэниел: Приемник с высокой точностью знает частоты, используемые спутниковыми передатчиками. Сравнивая известные и наблюдаемые частоты (с доплеровским смещением), приемник вычисляет значение PRR (псевдодальности) для каждого видимого спутника и использует его в расчетах положения и скорости. - person Jim Lewis; 30.05.2010
comment
И приемник загружает со спутников информацию, которая сообщает ему, где именно они находятся (и где они будут, полное и точное описание их орбит), а также некоторую информацию об их часах. Затем он собирает все воедино, время от времени возвращаясь назад к скорости, к расстояниям к положению. - person Andrew McGregor; 30.05.2010
comment
Спасибо вам, ребята! очень полезно. - person wei; 30.05.2010

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

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

person Maciek Sawicki    schedule 30.05.2010
comment
Спасибо, очень интересное хеширование. - person wei; 31.05.2010

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

person Bob    schedule 05.02.2011